Coverage for tests/test_params.py: 100%

24 statements  

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

1from fast_depends import Depends, Provider 1abcdefghijklmnopqrst

2from fast_depends.core import build_call_model 1abcdefghijklmnopqrst

3from fast_depends.library import CustomField 1abcdefghijklmnopqrst

4 

5 

6def test_params(): 1abcdefghijklmnopqrst

7 def func1(m): ... 1abcdefghijklmnopqrst

8 

9 def func2(c, b=Depends(func1), d=CustomField()): # noqa: B008 1abcdefghijklmnopqrst

10 ... 

11 

12 def func3(b): ... 1abcdefghijklmnopqrst

13 

14 def main(a, b, m=Depends(func2), k=Depends(func3)): ... 1abcdefghijklmnopqrst

15 

16 def extra_func(n): ... 1abcdefghijklmnopqrst

17 

18 model = build_call_model( 1abcdefghijklmnopqrst

19 main, extra_dependencies=(Depends(extra_func),), dependency_provider=Provider() 

20 ) 

21 

22 assert {p.field_name for p in model.params} == {"a", "b"} 1abcdefghijklmnopqrst

23 assert {p.field_name for p in model.flat_params} == {"a", "b", "c", "m", "n"} 1abcdefghijklmnopqrst

24 

25 

26def test_args_kwargs_params(): 1abcdefghijklmnopqrst

27 def func1(m): ... 1abcdefghijklmnopqrst

28 

29 def func2(c, b=Depends(func1), d=CustomField()): # noqa: B008 1abcdefghijklmnopqrst

30 ... 

31 

32 def func3(b): ... 1abcdefghijklmnopqrst

33 

34 def default_var_names(a, *args, b, m=Depends(func2), k=Depends(func3), **kwargs): 1abcdefghijklmnopqrst

35 return a, args, b, kwargs 1abcdefghijklmnopqrst

36 

37 def extra_func(n): ... 1abcdefghijklmnopqrst

38 

39 model = build_call_model( 1abcdefghijklmnopqrst

40 default_var_names, 

41 extra_dependencies=(Depends(extra_func),), 

42 dependency_provider=Provider(), 

43 ) 

44 

45 assert {p.field_name for p in model.params} == {"a", "args", "b", "kwargs"} 1abcdefghijklmnopqrst

46 assert {p.field_name for p in model.flat_params} == { 1abcdefghijklmnopqrst

47 "a", 

48 "args", 

49 "b", 

50 "kwargs", 

51 "c", 

52 "m", 

53 "n", 

54 } 

55 

56 assert default_var_names(1, *("a"), b=2, **{"kw": "kw"}) == ( 1abcdefghijklmnopqrst

57 1, 

58 ("a",), 

59 2, 

60 {"kw": "kw"}, 

61 ) 

62 

63 

64def test_custom_args_kwargs_params(): 1abcdefghijklmnopqrst

65 def func1(m): ... 1abcdefghijklmnopqrst

66 

67 def func2(c, b=Depends(func1), d=CustomField()): # noqa: B008 1abcdefghijklmnopqrst

68 ... 

69 

70 def func3(b): ... 1abcdefghijklmnopqrst

71 

72 def extra_func(n): ... 1abcdefghijklmnopqrst

73 

74 def custom_var_names(a, *args_, b, m=Depends(func2), k=Depends(func3), **kwargs_): 1abcdefghijklmnopqrst

75 return a, args_, b, kwargs_ 1abcdefghijklmnopqrst

76 

77 model = build_call_model( 1abcdefghijklmnopqrst

78 custom_var_names, 

79 extra_dependencies=(Depends(extra_func),), 

80 dependency_provider=Provider(), 

81 ) 

82 

83 assert {p.field_name for p in model.params} == {"a", "args_", "b", "kwargs_"} 1abcdefghijklmnopqrst

84 assert {p.field_name for p in model.flat_params} == { 1abcdefghijklmnopqrst

85 "a", 

86 "args_", 

87 "b", 

88 "kwargs_", 

89 "c", 

90 "m", 

91 "n", 

92 } 

93 

94 assert custom_var_names(1, *("a"), b=2, **{"kw": "kw"}) == ( 1abcdefghijklmnopqrst

95 1, 

96 ("a",), 

97 2, 

98 {"kw": "kw"}, 

99 )