poulet_py.config.settings module#

Configuration settings.

This module defines the application’s configuration settings using Pydantic’s BaseSettings and BaseModel. It supports loading configuration from environment variables and a .env file.

Usage Examples#

  1. Accessing Default Settings:
    >>> from poulet_py.config.settings import settings
    >>> print(settings.log.level)  # Output: "info"
    >>> print(settings.log.file)  # Output: None
    
  2. Overriding Settings with Environment Variables:

    Set environment variables before running the application: `bash export LOG__LEVEL="debug" export LOG__FILE="/var/log/myapp.log" ` Then access the settings in your code: >>> from poulet_py.config.settings import settings >>> print(settings.log.level) # Output: “debug” >>> print(settings.log.file) # Output: “/var/log/myapp.log”

  3. Loading Settings from a .env File:

    Create a .env file in the project root: `env LOG__LEVEL=warning LOG__FILE=/tmp/app.log ` Then access the settings in your code: >>> from poulet_py.config.settings import settings >>> print(settings.log.level) # Output: “warning” >>> print(settings.log.file) # Output: “/tmp/app.log”

  4. Programmatically Updating Settings:
    >>> from poulet_py.config.settings import Settings
    >>> custom_settings = Settings(log={"level": "error", "file": "/custom/path.log"})
    >>> print(custom_settings.log.level)  # Output: "error"
    >>> print(custom_settings.log.file)  # Output: "/custom/path.log"
    
class Log(**data)[source]#

Bases: BaseModel

level: str#
file: str | None#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Settings(_case_sensitive=None, _nested_model_default_partial_update=None, _env_prefix=None, _env_file=PosixPath('.'), _env_file_encoding=None, _env_ignore_empty=None, _env_nested_delimiter=None, _env_nested_max_split=None, _env_parse_none_str=None, _env_parse_enums=None, _cli_prog_name=None, _cli_parse_args=None, _cli_settings_source=None, _cli_parse_none_str=None, _cli_hide_none_type=None, _cli_avoid_json=None, _cli_enforce_required=None, _cli_use_class_docs_for_groups=None, _cli_exit_on_error=None, _cli_prefix=None, _cli_flag_prefix_char=None, _cli_implicit_flags=None, _cli_ignore_unknown_args=None, _cli_kebab_case=None, _cli_shortcuts=None, _secrets_dir=None, **values)[source]#

Bases: BaseSettings

This class loads configuration from environment variables and a .env file. It supports nested configuration using the env_nested_delimiter (e.g., LOG__LEVEL).

model_config: ClassVar[SettingsConfigDict] = {'arbitrary_types_allowed': True, 'case_sensitive': False, 'cli_avoid_json': False, 'cli_enforce_required': False, 'cli_exit_on_error': True, 'cli_flag_prefix_char': '-', 'cli_hide_none_type': False, 'cli_ignore_unknown_args': False, 'cli_implicit_flags': False, 'cli_kebab_case': False, 'cli_parse_args': None, 'cli_parse_none_str': None, 'cli_prefix': '', 'cli_prog_name': None, 'cli_shortcuts': None, 'cli_use_class_docs_for_groups': False, 'enable_decoding': True, 'env_file': '', 'env_file_encoding': 'utf-8', 'env_ignore_empty': False, 'env_nested_delimiter': '__', 'env_nested_max_split': None, 'env_parse_enums': None, 'env_parse_none_str': None, 'env_prefix': '', 'extra': 'ignore', 'json_file': None, 'json_file_encoding': None, 'nested_model_default_partial_update': False, 'protected_namespaces': ('model_validate', 'model_dump', 'settings_customise_sources'), 'secrets_dir': None, 'toml_file': None, 'validate_default': True, 'yaml_config_section': None, 'yaml_file': None, 'yaml_file_encoding': None}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

log: Log#
SETTINGS = Settings(log=Log(level='info', file=None))#

An instance of the Settings class.

This instance holds the application’s configuration, loaded from environment variables and a .env file. It can be imported and used throughout the application to access configuration settings.

Example

To access the logging level: >>> from poulet_py.config.settings import SETTINGS >>> print(SETTINGS.log.level)