Source code for tisserande.config

"""Configuration for tisserande, loaded from environment variables."""

from pydantic import BaseModel, Field
from pydantic_settings import BaseSettings, SettingsConfigDict


[docs] class TrackingConfiguration(BaseModel): """Configuration for the provenance tracking system."""
[docs] enabled: bool = Field( default=True, description="Enable/disable provenance tracking globally", )
[docs] backend: str = Field( default="local_sync", description="Default backend: local_sync, deferred, null", )
[docs] auto_classify: bool = Field( default=True, description="Auto-classify argument types from annotations/heuristics", )
[docs] class DatabaseConfiguration(BaseModel): """Database configuration for tisserande."""
[docs] url: str = Field( default="sqlite+aiosqlite:///tisserande.db", description="The URL for the tisserande provenance database", )
[docs] echo: bool = Field( default=False, description="SQLAlchemy engine echo setting", )
[docs] class Configuration(BaseSettings): """Configuration for tisserande. Nested models may be consumed from environment variables named according to the pattern 'TISSERANDE__NESTED__FIELD'. """
[docs] model_config = SettingsConfigDict( env_prefix="TISSERANDE__", env_nested_delimiter="__", nested_model_default_partial_update=True, case_sensitive=False, extra="ignore", )
[docs] db: DatabaseConfiguration = DatabaseConfiguration()
[docs] tracking: TrackingConfiguration = TrackingConfiguration()
[docs] config = Configuration()