from jivago.lang.annotations import Override
from jivago.wsgi.invocation.missing_route_invocation_argument import MissingRouteInvocationArgument
from jivago.wsgi.invocation.parameter_selection.parameter_selector import ParameterSelector
from jivago.wsgi.invocation.parameters import PathParam
from jivago.wsgi.request.request import Request
from jivago.wsgi.routing.path_parameter_parser import PathParameterParser
ALLOWED_PATH_PARAMETER_TYPES = (str, int, float)
[docs]class PathParameterSelector(ParameterSelector):
def __init__(self, path_parameter_parser: PathParameterParser):
self.path_parameter_parser = path_parameter_parser
[docs] @Override
def matches(self, paramater_declaration: type) -> bool:
return hasattr(paramater_declaration, '__origin__') and paramater_declaration.__origin__ == PathParam