view.routing
¶
PART = re.compile('{(((\\w+)(: *(\\w+)))|(\\w+))}')
module-attribute
¶
Path = Callable[[RouteOrCallable], Route]
module-attribute
¶
RouteData = Literal[1, 2]
module-attribute
¶
RouteOrCallable = Union[Route, ViewRoute]
module-attribute
¶
V = TypeVar('V', bound='ValueType')
module-attribute
¶
__all__ = ('get', 'post', 'put', 'patch', 'delete', 'options', 'query', 'body', 'route_types', 'BodyParam', 'context', 'route', 'websocket')
module-attribute
¶
BodyParam
dataclass
¶
Method
¶
Bases: Enum
DELETE = 3
class-attribute
instance-attribute
¶
GET = 1
class-attribute
instance-attribute
¶
OPTIONS = 6
class-attribute
instance-attribute
¶
PATCH = 4
class-attribute
instance-attribute
¶
POST = 2
class-attribute
instance-attribute
¶
PUT = 5
class-attribute
instance-attribute
¶
WEBSOCKET = 7
class-attribute
instance-attribute
¶
Part
dataclass
¶
Route
dataclass
¶
Bases: LoadChecker
Standard Route Wrapper
__str__ = __repr__
class-attribute
instance-attribute
¶
cache_rate: int = -1
class-attribute
instance-attribute
¶
doc: str | None = None
class-attribute
instance-attribute
¶
errors: dict[int, ViewRoute] | None = None
class-attribute
instance-attribute
¶
extra_types: dict[str, Any] = field(default_factory=dict)
class-attribute
instance-attribute
¶
func: Callable[..., ViewResponse]
instance-attribute
¶
inputs: list[RouteInput | RouteData]
instance-attribute
¶
method: Method | None
instance-attribute
¶
method_list: list[Method] | None = None
class-attribute
instance-attribute
¶
middleware_funcs: list[Middleware] = field(default_factory=list)
class-attribute
instance-attribute
¶
parts: list[str | Part[Any]] = field(default_factory=list)
class-attribute
instance-attribute
¶
path: str | None
instance-attribute
¶
__call__(*args: Any, **kwargs: Any) -> Any
¶
__init__(func: Callable[..., ViewResponse], path: str | None, method: Method | None, inputs: list[RouteInput | RouteData], doc: str | None = None, cache_rate: int = -1, errors: dict[int, ViewRoute] | None = None, extra_types: dict[str, Any] = dict(), parts: list[str | Part[Any]] = list(), middleware_funcs: list[Middleware] = list(), method_list: list[Method] | None = None, __str__=__repr__) -> None
¶
__repr__()
¶
error(status_code: int)
¶
middleware(func_or_none: Middleware | None = None)
¶Define a middleware function for the route.
RouteInput
dataclass
¶
Bases: Generic[V]
default: V | None | _NoDefaultType
instance-attribute
¶
doc: str | None
instance-attribute
¶
is_body: bool
instance-attribute
¶
name: str
instance-attribute
¶
tp: tuple[type[V], ...]
instance-attribute
¶
validators: list[Validator[V]]
instance-attribute
¶
__init__(name: str, is_body: bool, tp: tuple[type[V], ...], default: V | None | _NoDefaultType, doc: str | None, validators: list[Validator[V]]) -> None
¶
body(name: str, *tps: type[V], doc: str | None = None, default: V | None | _NoDefaultType = _NoDefault)
¶Add a route input for a body parameter.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str
|
The name of the parameter to read when the body is received. |
required |
tps |
type[V]
|
All the possible types that are allowed to be used. If none are specified, the type is |
()
|
doc |
str | None
|
Description of this parameter. |
None
|
default |
V | None | _NoDefaultType
|
The default value to use if the key was not received. |
_NoDefault
|
context(r_or_none: RouteOrCallable | None = None)
¶Add a context input to the route.
delete(path_or_route: str | None | RouteOrCallable = None, doc: str | None = None, *, cache_rate: int = -1) -> Path
¶Add a DELETE route.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path_or_route |
str | None | RouteOrCallable
|
The path to this route, or the route itself. |
None
|
doc |
str | None
|
The description of the route to be used in documentation. |
None
|
cache_rate |
int
|
Reload the cache for this route every x number of requests. |
-1
|
get(path_or_route: str | None | RouteOrCallable = None, doc: str | None = None, *, cache_rate: int = -1) -> Path
¶Add a GET route.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path_or_route |
str | None | RouteOrCallable
|
The path to this route, or the route itself. |
None
|
doc |
str | None
|
The description of the route to be used in documentation. |
None
|
cache_rate |
int
|
Reload the cache for this route every x number of requests. |
-1
|
options(path_or_route: str | None | RouteOrCallable = None, doc: str | None = None, *, cache_rate: int = -1) -> Path
¶Add an OPTIONS route.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path_or_route |
str | None | RouteOrCallable
|
The path to this route, or the route itself. |
None
|
doc |
str | None
|
The description of the route to be used in documentation. |
None
|
cache_rate |
int
|
Reload the cache for this route every x number of requests. |
-1
|
patch(path_or_route: str | None | RouteOrCallable = None, doc: str | None = None, *, cache_rate: int = -1) -> Path
¶Add a PATCH route.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path_or_route |
str | None | RouteOrCallable
|
The path to this route, or the route itself. |
None
|
doc |
str | None
|
The description of the route to be used in documentation. |
None
|
cache_rate |
int
|
Reload the cache for this route every x number of requests. |
-1
|
post(path_or_route: str | None | RouteOrCallable = None, doc: str | None = None, *, cache_rate: int = -1) -> Path
¶Add a POST route.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path_or_route |
str | None | RouteOrCallable
|
The path to this route, or the route itself. |
None
|
doc |
str | None
|
The description of the route to be used in documentation. |
None
|
cache_rate |
int
|
Reload the cache for this route every x number of requests. |
-1
|
put(path_or_route: str | None | RouteOrCallable = None, doc: str | None = None, *, cache_rate: int = -1) -> Path
¶Add a PUT route.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path_or_route |
str | None | RouteOrCallable
|
The path to this route, or the route itself. |
None
|
doc |
str | None
|
The description of the route to be used in documentation. |
None
|
cache_rate |
int
|
Reload the cache for this route every x number of requests. |
-1
|
query(name: str, *tps: type[V], doc: str | None = None, default: V | None | _NoDefaultType = _NoDefault)
¶Add a route input for a query parameter.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str
|
The name of the parameter to read when the query string is received. |
required |
tps |
type[V]
|
All the possible types that are allowed to be used. If none are specified, the type is |
()
|
doc |
str | None
|
Description of this parameter. |
None
|
default |
V | None | _NoDefaultType
|
The default value to use if the key was not received. |
_NoDefault
|
route(path_or_route: str | None | RouteOrCallable = None, doc: str | None = None, *, cache_rate: int = -1, methods: Iterable[StrMethod] | None = None) -> Path
¶Add a route that can be called with any method (or only specific methods).
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path_or_route |
str | None | RouteOrCallable
|
The path to this route, or the route itself. |
None
|
doc |
str | None
|
The description of the route to be used in documentation. |
None
|
cache_rate |
int
|
Reload the cache for this route every x number of requests. |
-1
|
methods |
Iterable[StrMethod] | None
|
Methods that can be used to access this route. If this is |
None
|
route_types(r: RouteOrCallable, data: type[Any] | tuple[type[Any]] | dict[str, Any]) -> Route
¶
websocket(path_or_route: str | None | RouteOrCallable = None, doc: str | None = None) -> Path
¶Add a websocket route.
view._loader
¶
TYPECODE_ANY = 0
module-attribute
¶
TYPECODE_BOOL = 3
module-attribute
¶
TYPECODE_CLASS = 7
module-attribute
¶
TYPECODE_CLASSTYPES = 8
module-attribute
¶
TYPECODE_DICT = 5
module-attribute
¶
TYPECODE_FLOAT = 4
module-attribute
¶
TYPECODE_INT = 2
module-attribute
¶
TYPECODE_LIST = 9
module-attribute
¶
TYPECODE_NONE = 6
module-attribute
¶
TYPECODE_STR = 1
module-attribute
¶
__all__ = ('load_fs', 'load_simple', 'finalize')
module-attribute
¶
LoaderDoc
dataclass
¶
finalize(routes: list[Route], app: ViewApp)
¶
load_fs(app: ViewApp, target_dir: Path) -> None
¶Filesystem loading implementation.
Similiar to NextJS's routing system. You take target_dir
and search it,
if a file is found and not prefixed with _, then convert the directory structure
to a path. For example, target_dir/hello/world/index.py would be converted to a
route for /hello/world
Parameters:
Name | Type | Description | Default |
---|---|---|---|
app |
App
|
App to attach routes to. |
required |
target_dir |
Path
|
Directory to search for routes. |
required |
load_patterns(app: ViewApp, target_path: Path) -> None
¶
load_simple(app: ViewApp, target_dir: Path) -> None
¶Simple loading implementation. Simple loading is essentially searching a directory recursively for files, and then extracting Route instances from each file.
If a file is prefixed with _, it will not be loaded.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
app |
App
|
App to attach routes to. |
required |
target_dir |
Path
|
Directory to search for routes. |
required |