Coverage for fast_depends/library/model.py: 100%

20 statements  

« prev     ^ index     » next       coverage.py v7.17.3, created at 2026-11-13 05:19 +0000

1from abc import ABC 1abcdefghijklnopqrsmt

2from typing import Any, TypeVar 1abcdefghijklnopqrsmt

3 

4Cls = TypeVar("Cls", bound="CustomField") 1abcdefghijklnopqrsmt

5 

6 

7class CustomField(ABC): 1abcdefghijklnopqrsmt

8 param_name: str | None 1abcdefghijklm

9 cast: bool 1abcdefghijklm

10 required: bool 1abcdefghijklm

11 

12 __slots__ = ( 1abcdefghijklnopqrsmt

13 "cast", 

14 "param_name", 

15 "required", 

16 "field", 

17 ) 

18 

19 def __init__( 1abcdefghijklnopqrsmt

20 self, 

21 *, 

22 cast: bool = True, 

23 required: bool = True, 

24 ) -> None: 

25 self.cast = cast 1abcdefghijklnopqrsmt

26 self.param_name = None 1abcdefghijklnopqrsmt

27 self.required = required 1abcdefghijklnopqrsmt

28 self.field = False 1abcdefghijklnopqrsmt

29 

30 def set_param_name(self: Cls, name: str) -> Cls: 1abcdefghijklnopqrsmt

31 self.param_name = name 1abcdefghijklnopqrsmt

32 return self 1abcdefghijklnopqrsmt

33 

34 def use(self, /, **kwargs: Any) -> dict[str, Any]: 1abcdefghijklnopqrsmt

35 assert self.param_name, "You should specify `param_name` before using" 1abcdefghijklnopqrsmt

36 return kwargs 1abcdefghijklnopqrsmt

37 

38 def use_field(self, kwargs: dict[str, Any]) -> None: 1abcdefghijklnopqrsmt

39 raise NotImplementedError 

40 

41 def __repr__(self) -> str: 1abcdefghijklnopqrsmt

42 return f"{self.__class__.__name__}(required={self.required}, cast={self.cast})"