mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-12-30 13:33:04 +03:00
- configuration.py - container.py - declarative_container.py - delegate.py - dependencies_container.py - dependency.py - dict.py - dynamic_container.py
90 lines
2.7 KiB
Python
90 lines
2.7 KiB
Python
from pathlib import Path
|
|
from typing import Any, Dict
|
|
from typing_extensions import assert_type
|
|
|
|
from pydantic_settings import BaseSettings as PydanticSettings
|
|
|
|
from dependency_injector import providers
|
|
|
|
# Test 1: to check the getattr
|
|
config1 = providers.Configuration()
|
|
provider1 = providers.Factory(dict[str, Any], a=config1.a)
|
|
assert_type(provider1, providers.Factory[Dict[str, Any]])
|
|
|
|
# Test 2: to check the from_*() method
|
|
config2 = providers.Configuration()
|
|
|
|
config2.from_dict({})
|
|
config2.from_value({})
|
|
|
|
config2.from_ini("config.ini")
|
|
config2.from_ini(Path("config.ini"))
|
|
|
|
config2.from_yaml("config.yml")
|
|
config2.from_yaml(Path("config.yml"))
|
|
|
|
config2.from_json("config.json")
|
|
config2.from_json(Path("config.json"))
|
|
|
|
config2.from_env("ENV", "default")
|
|
config2.from_env("ENV", as_=int, default=123)
|
|
config2.from_env("ENV", as_=float, required=True)
|
|
config2.from_env("ENV", as_=lambda env: str(env))
|
|
|
|
config2.from_pydantic(PydanticSettings())
|
|
|
|
# Test 3: to check as_*() methods
|
|
config3 = providers.Configuration()
|
|
int3 = config3.option.as_int()
|
|
float3 = config3.option.as_float()
|
|
int3_custom = config3.option.as_(int)
|
|
|
|
assert_type(int3, providers.TypedConfigurationOption[int])
|
|
assert_type(float3, providers.TypedConfigurationOption[float])
|
|
assert_type(int3_custom, providers.TypedConfigurationOption[int])
|
|
|
|
# Test 4: to check required() method
|
|
config4 = providers.Configuration()
|
|
option4 = config4.option.required()
|
|
assert_type(option4, providers.ConfigurationOption)
|
|
|
|
|
|
# Test 5: to check get/set config files' methods and init arguments
|
|
# Test 5: ini
|
|
config5_ini = providers.Configuration(
|
|
ini_files=["config.ini", Path("config.ini")],
|
|
)
|
|
config5_ini.set_ini_files(["config.ini", Path("config.ini")])
|
|
config5_ini_files = config5_ini.get_ini_files()
|
|
assert_type(config5_ini_files, list[str | Path])
|
|
|
|
# Test 5: yaml
|
|
config5_yaml = providers.Configuration(
|
|
yaml_files=["config.yml", Path("config.yml")],
|
|
)
|
|
config5_yaml.set_yaml_files(["config.yml", Path("config.yml")])
|
|
config5_yaml_files: list[str | Path] = config5_yaml.get_yaml_files()
|
|
assert_type(config5_yaml_files, list[str | Path])
|
|
|
|
# Test 5: json
|
|
config5_json = providers.Configuration(
|
|
json_files=["config.json", Path("config.json")],
|
|
)
|
|
config5_json.set_json_files(["config.json", Path("config.json")])
|
|
config5_json_files = config5_json.get_json_files()
|
|
assert_type(config5_json_files, list[str | Path])
|
|
|
|
# Test 5: pydantic
|
|
config5_pydantic = providers.Configuration(
|
|
pydantic_settings=[PydanticSettings()],
|
|
)
|
|
config5_pydantic.set_pydantic_settings([PydanticSettings()])
|
|
config5_pydantic_settings: list[PydanticSettings] = (config5_pydantic.get_pydantic_settings())
|
|
|
|
# Test 6: to check init arguments
|
|
config6 = providers.Configuration(
|
|
name="config",
|
|
strict=True,
|
|
default={},
|
|
)
|