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

1from types import ModuleType 

2from typing import NewType, Protocol, Iterable, Callable 

3 

4from webob.request import Request 

5 

6PermString = NewType("PermString", str) 

7 

8 

9class Authoriser(Protocol): 

10 def __call__( 

11 self, 

12 method: str, 

13 path: str, 

14 permission: str, 

15 context: dict[str, object], 

16 ) -> None: ... 

17 

18 

19class Adaptor(Protocol): 

20 arg_name: str 

21 arg_type: str 

22 doc: str 

23 

24 def __call__(self, request: Request) -> object: ... 

25 

26 

27class SuxHandler(Protocol): 

28 name: str 

29 func: Callable 

30 

31 @property 

32 def path(self) -> str: ... 

33 

34 def adaptors(self) -> Iterable[Adaptor]: ... 

35 

36 @property 

37 def return_value(self) -> object: ... 

38 

39 @property 

40 def required_arguments(self) -> list[str]: ... 

41 

42 @property 

43 def optional_arguments(self) -> list[str]: ... 

44 

45 

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] 

53 

54 def iter_handlers(self) -> Iterable[SuxHandler]: ...