Skip to main content

A lightweight configuration management library for Python applications with multiple sources, type validation, and automatic merging

Project description

Config-Lib

A lightweight configuration management library for Python applications that supports multiple sources (YAML, environment variables, CLI arguments) with type validation and automatic merging.

Features

  • Multiple Configuration Sources
    Load from YAML files, environment variables, and command-line arguments
  • Precedence Hierarchy
    CLI arguments > Environment variables > YAML config files > Default values
  • Type Annotations
    Built on msgspec for robust type validation and serialization
  • Nested Configurations
    Support for complex nested structures with dot/bracket notation
  • Error Handling
    Clear validation errors and graceful handling of source failures

Installation

pip install config-lib

Basic Usage

from config_lib.base import BaseConfig

class AppConfig(BaseConfig):
    """Main application configuration"""
    host: str = "localhost"
    port: int = 8080
    debug: bool = False

config = AppConfig.load()

Configuration Sources

YAML File

# config.yaml
host: "0.0.0.0"
port: 9000
os.environ["CFG_CONFIG"] = "config.yaml"
config = AppConfig.load()  # Loads from YAML

Environment Variables

export CFG_HOST="127.0.0.1"
export CFG_PORT=3000

CLI Arguments

python app.py --host 192.168.1.1 --port 4000

Nested Configurations

from msgspec import Struct

class DatabaseConfig(Struct):
    host: str = "localhost"
    port: int = 5432

class AppConfig(BaseConfig):
    db: DatabaseConfig = DatabaseConfig()
    cache_ttl: int = 300

Environment variables:
CFG_DB__HOST=postgres.example.com CFG_DB__PORT=6432

CLI arguments:
python app.py --db.host postgres.example.com --db.port 6432

Precedence Rules

  1. Command-line arguments (highest priority)
  2. Environment variables
  3. YAML configuration file (lowest priority)
  4. Class defaults (used if no other sources provide values)

Error Handling & Validation

The library provides:

  • Automatic type validation using msgspec
  • Clear error messages for missing required fields
  • Graceful handling of malformed configuration sources
  • Warning logging for source loading errors

Contributing

# Run tests
pytest tests/

# Check test coverage
pytest --cov=config_lib --cov-report=html

Contributions welcome! Please follow standard Python packaging practices and ensure all tests pass before submitting PRs.

License

MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

config_lib_msgspec-0.0.3a1.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

config_lib_msgspec-0.0.3a1-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file config_lib_msgspec-0.0.3a1.tar.gz.

File metadata

  • Download URL: config_lib_msgspec-0.0.3a1.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for config_lib_msgspec-0.0.3a1.tar.gz
Algorithm Hash digest
SHA256 8fcc6c0f433bd3d14268c8db948601aecce056eb711de2732e30795f6ef9779d
MD5 27b02da626ed5065910d9bbb91ecdfb7
BLAKE2b-256 00b865c88bcf74381b804d70ba955757b073ead516c6f181543bf784343a788f

See more details on using hashes here.

Provenance

The following attestation bundles were made for config_lib_msgspec-0.0.3a1.tar.gz:

Publisher: python-publish.yml on rastaclaus/config-lib-msgspec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file config_lib_msgspec-0.0.3a1-py3-none-any.whl.

File metadata

File hashes

Hashes for config_lib_msgspec-0.0.3a1-py3-none-any.whl
Algorithm Hash digest
SHA256 dfffead12f3cd5362f64a18225999426be42669527179d4e8d6598f3dfc618a3
MD5 4c052171b268639d09f5e66cf92ff14f
BLAKE2b-256 e2ea572c93e93f7ae6c262b5c993144f7c7a19fb44ef0ffc2a0a0af59971df2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for config_lib_msgspec-0.0.3a1-py3-none-any.whl:

Publisher: python-publish.yml on rastaclaus/config-lib-msgspec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page