"""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()