Skip to content

Settings

Configuration management for PyFIA.

Overview

PyFIA uses a centralized settings system with support for environment variables.

from pyfia import settings

# View current settings
print(settings.database_path)
print(settings.max_threads)

# Modify settings
settings.max_threads = 8
settings.cache_enabled = True

Environment Variables

Variable Description Default
PYFIA_DATABASE_PATH Default database path fia.duckdb
PYFIA_DATABASE_ENGINE Database engine duckdb
PYFIA_MAX_THREADS Max processing threads 4
PYFIA_CACHE_ENABLED Enable caching true
PYFIA_LOG_LEVEL Logging level CRITICAL

Class Reference

PyFIASettings

Bases: BaseSettings

Central settings for pyFIA with environment variable support.

Environment variables are prefixed with PYFIA_. For example: PYFIA_DATABASE_PATH, PYFIA_LOG_LEVEL

Also supports legacy environment variables FIA_DB_PATH and FIA_DB_ENGINE for backwards compatibility.

validate_engine classmethod

validate_engine(v: str) -> str

Validate database engine choice.

PARAMETER DESCRIPTION
v

Database engine to validate

TYPE: str

RETURNS DESCRIPTION
str

Validated and lowercased engine name

Source code in src/pyfia/core/settings.py
@field_validator("database_engine")
@classmethod
def validate_engine(cls, v: str) -> str:
    """
    Validate database engine choice.

    Parameters
    ----------
    v : str
        Database engine to validate

    Returns
    -------
    str
        Validated and lowercased engine name
    """
    valid_engines = ["duckdb", "sqlite"]
    if v.lower() not in valid_engines:
        raise ValueError(f"Engine must be one of {valid_engines}")
    return v.lower()

validate_log_level classmethod

validate_log_level(v: str) -> str

Validate log level.

PARAMETER DESCRIPTION
v

Log level to validate

TYPE: str

RETURNS DESCRIPTION
str

Validated and uppercased log level

Source code in src/pyfia/core/settings.py
@field_validator("log_level")
@classmethod
def validate_log_level(cls, v: str) -> str:
    """
    Validate log level.

    Parameters
    ----------
    v : str
        Log level to validate

    Returns
    -------
    str
        Validated and uppercased log level
    """
    valid_levels = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
    if v.upper() not in valid_levels:
        raise ValueError(f"Log level must be one of {valid_levels}")
    return v.upper()

validate_database_path classmethod

validate_database_path(v: Path) -> Path

Validate database path exists.

PARAMETER DESCRIPTION
v

Database path to validate

TYPE: Path

RETURNS DESCRIPTION
Path

Validated database path

Source code in src/pyfia/core/settings.py
@field_validator("database_path")
@classmethod
def validate_database_path(cls, v: Path) -> Path:
    """
    Validate database path exists.

    Parameters
    ----------
    v : Path
        Database path to validate

    Returns
    -------
    Path
        Validated database path
    """
    if v.exists() and not v.is_file():
        raise ValueError(f"Database path {v} exists but is not a file")
    return v

create_directories

create_directories() -> None

Create necessary directories if they don't exist.

RETURNS DESCRIPTION
None
Source code in src/pyfia/core/settings.py
def create_directories(self) -> None:
    """
    Create necessary directories if they don't exist.

    Returns
    -------
    None
    """
    self.cache_dir.mkdir(parents=True, exist_ok=True)
    self.log_dir.mkdir(parents=True, exist_ok=True)
    self.download_dir.mkdir(parents=True, exist_ok=True)

get_connection_string

get_connection_string() -> str

Get database connection string.

RETURNS DESCRIPTION
str

Database connection string for the configured engine

Source code in src/pyfia/core/settings.py
def get_connection_string(self) -> str:
    """
    Get database connection string.

    Returns
    -------
    str
        Database connection string for the configured engine
    """
    if self.database_engine == "duckdb":
        return f"duckdb:///{self.database_path}"
    else:
        return f"sqlite:///{self.database_path}"

Helper Functions

get_default_db_path

get_default_db_path() -> Path

Get the default database path.

Checks environment variables and settings for database path.

RETURNS DESCRIPTION
Path

Path to the default database

Source code in src/pyfia/core/settings.py
def get_default_db_path() -> Path:
    """
    Get the default database path.

    Checks environment variables and settings for database path.

    Returns
    -------
    Path
        Path to the default database
    """
    return settings.database_path

get_default_engine

get_default_engine() -> str

Get the default database engine.

RETURNS DESCRIPTION
str

Default engine type ("sqlite" or "duckdb")

Source code in src/pyfia/core/settings.py
def get_default_engine() -> str:
    """
    Get the default database engine.

    Returns
    -------
    str
        Default engine type ("sqlite" or "duckdb")
    """
    return settings.database_engine