|
1 | 1 | from pathlib import Path |
2 | 2 | from typing import Any, Dict |
| 3 | +from typing_extensions import assert_type |
3 | 4 |
|
4 | 5 | from pydantic_settings import BaseSettings as PydanticSettings |
5 | 6 |
|
6 | 7 | from dependency_injector import providers |
7 | 8 |
|
8 | 9 | # Test 1: to check the getattr |
9 | | -config1: providers.Configuration = providers.Configuration() |
10 | | -provider1: providers.Provider[Dict[str, Any]] = providers.Factory(dict, a=config1.a) |
| 10 | +config1 = providers.Configuration() |
| 11 | +provider1 = providers.Factory(dict[str, Any], a=config1.a) |
| 12 | +assert_type(provider1, providers.Factory[Dict[str, Any]]) |
11 | 13 |
|
12 | 14 | # Test 2: to check the from_*() method |
13 | 15 | config2 = providers.Configuration() |
|
33 | 35 |
|
34 | 36 | # Test 3: to check as_*() methods |
35 | 37 | config3 = providers.Configuration() |
36 | | -int3: providers.Callable[int] = config3.option.as_int() |
37 | | -float3: providers.Callable[float] = config3.option.as_float() |
38 | | -int3_custom: providers.Callable[int] = config3.option.as_(int) |
| 38 | +int3 = config3.option.as_int() |
| 39 | +float3 = config3.option.as_float() |
| 40 | +int3_custom = config3.option.as_(int) |
| 41 | + |
| 42 | +assert_type(int3, providers.TypedConfigurationOption[int]) |
| 43 | +assert_type(float3, providers.TypedConfigurationOption[float]) |
| 44 | +assert_type(int3_custom, providers.TypedConfigurationOption[int]) |
39 | 45 |
|
40 | 46 | # Test 4: to check required() method |
41 | 47 | config4 = providers.Configuration() |
42 | | -option4: providers.ConfigurationOption = config4.option.required() |
| 48 | +option4 = config4.option.required() |
| 49 | +assert_type(option4, providers.ConfigurationOption) |
| 50 | + |
43 | 51 |
|
44 | 52 | # Test 5: to check get/set config files' methods and init arguments |
45 | 53 | # Test 5: ini |
46 | 54 | config5_ini = providers.Configuration( |
47 | 55 | ini_files=["config.ini", Path("config.ini")], |
48 | 56 | ) |
49 | 57 | config5_ini.set_ini_files(["config.ini", Path("config.ini")]) |
50 | | -config5_ini_files: list[str | Path] = config5_ini.get_ini_files() |
| 58 | +config5_ini_files = config5_ini.get_ini_files() |
| 59 | +assert_type(config5_ini_files, list[str | Path]) |
51 | 60 |
|
52 | 61 | # Test 5: yaml |
53 | 62 | config5_yaml = providers.Configuration( |
54 | 63 | yaml_files=["config.yml", Path("config.yml")], |
55 | 64 | ) |
56 | 65 | config5_yaml.set_yaml_files(["config.yml", Path("config.yml")]) |
57 | 66 | config5_yaml_files: list[str | Path] = config5_yaml.get_yaml_files() |
| 67 | +assert_type(config5_yaml_files, list[str | Path]) |
58 | 68 |
|
59 | 69 | # Test 5: json |
60 | 70 | config5_json = providers.Configuration( |
61 | 71 | json_files=["config.json", Path("config.json")], |
62 | 72 | ) |
63 | 73 | config5_json.set_json_files(["config.json", Path("config.json")]) |
64 | | -config5_json_files: list[str | Path] = config5_json.get_json_files() |
| 74 | +config5_json_files = config5_json.get_json_files() |
| 75 | +assert_type(config5_json_files, list[str | Path]) |
65 | 76 |
|
66 | 77 | # Test 5: pydantic |
67 | 78 | config5_pydantic = providers.Configuration( |
68 | 79 | pydantic_settings=[PydanticSettings()], |
69 | 80 | ) |
70 | 81 | config5_pydantic.set_pydantic_settings([PydanticSettings()]) |
71 | | -config5_pydantic_settings: list[PydanticSettings] = ( |
72 | | - config5_pydantic.get_pydantic_settings() |
73 | | -) |
| 82 | + |
| 83 | +# NOTE: Using assignment since PydanticSettings is context-sensitive: conditional on whether pydantic is installed |
| 84 | +config5_pydantic_settings: list[PydanticSettings] = (config5_pydantic.get_pydantic_settings()) |
74 | 85 |
|
75 | 86 | # Test 6: to check init arguments |
76 | 87 | config6 = providers.Configuration( |
|
0 commit comments