Cabina Configuration

1.1.2 · active · verified Fri Apr 17

Cabina is a Python library for managing application configuration, primarily focused on typed environment variables. It builds upon Pydantic's BaseSettings to provide robust validation and type coercion for settings loaded from environment variables. As of version 1.1.2, it offers a streamlined way to define configuration schemas, leveraging Pydantic's powerful features. The release cadence is moderate, with stable updates building on Pydantic's advancements.

Common errors

Warnings

Install

Imports

Quickstart

Define your configuration schema by inheriting from `cabina.Cabina`. Cabina automatically picks up environment variables that match the field names, optionally using an `env_prefix` defined in the nested `Config` class. Variables can have default values and explicit `env` mapping via `pydantic.Field` for clearer control. Run this code after setting environment variables like `APP_NAME=MyApp` and `APP_PORT=8080` (or let it use the defaults/os.environ values).

import os
from cabina import Cabina
from pydantic import Field

os.environ['APP_NAME'] = os.environ.get('APP_NAME', 'MyDefaultApp')
os.environ['APP_PORT'] = os.environ.get('APP_PORT', '8000')
os.environ['DEBUG_MODE'] = os.environ.get('DEBUG_MODE', 'true')


class AppConfig(Cabina):
    app_name: str
    app_port: int = Field(8000, env="APP_PORT")
    debug_mode: bool = False

    class Config:
        env_prefix = 'APP_'
        case_sensitive = False


config = AppConfig()

print(f"App Name: {config.app_name}")
print(f"App Port: {config.app_port}")
print(f"Debug Mode: {config.debug_mode}")

assert config.app_name == os.environ['APP_NAME']
assert config.app_port == int(os.environ['APP_PORT'])
assert config.debug_mode == (os.environ['DEBUG_MODE'].lower() == 'true')

view raw JSON →