Coverage for postrfp/shared/types.py: 100%
19 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-22 21:34 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-22 21:34 +0000
1from types import ModuleType
2from typing import NewType, Protocol, Iterable, Callable
4from webob.request import Request
6PermString = NewType("PermString", str)
9class Authoriser(Protocol):
10 def __call__(
11 self,
12 method: str,
13 path: str,
14 permission: str,
15 context: dict[str, object],
16 ) -> None: ...
19class Adaptor(Protocol):
20 arg_name: str
21 arg_type: str
22 doc: str
24 def __call__(self, request: Request) -> object: ...
27class SuxHandler(Protocol):
28 name: str
29 func: Callable
31 @property
32 def path(self) -> str: ...
34 def adaptors(self) -> Iterable[Adaptor]: ...
36 @property
37 def return_value(self) -> object: ...
39 @property
40 def required_arguments(self) -> list[str]: ...
42 @property
43 def optional_arguments(self) -> list[str]: ...
46class SuxType(Protocol):
47 description: str
48 api_name: str
49 adaptor_module: ModuleType | None
50 handler_module: ModuleType | None
51 models_module: str
52 modules: dict[str, ModuleType]
54 def iter_handlers(self) -> Iterable[SuxHandler]: ...