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 onmsgspecfor 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
- Command-line arguments (highest priority)
- Environment variables
- YAML configuration file (lowest priority)
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file config_lib_msgspec-0.0.2.tar.gz.
File metadata
- Download URL: config_lib_msgspec-0.0.2.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9281b5070ab600eae6066ef524a0fd068f40928d8e9950c0e3a66ecaa49d8bd2
|
|
| MD5 |
871ebe271aff37d24444ce1e442cc5de
|
|
| BLAKE2b-256 |
66ec2ccf676375592e04fc2b733b293a0d62202a05256bc5d0f6f207c4e96d96
|
File details
Details for the file config_lib_msgspec-0.0.2-py3-none-any.whl.
File metadata
- Download URL: config_lib_msgspec-0.0.2-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9398b5e3eced139b6062637a7155e303a96c7f6645d5965d12fe0ea5967b8bf5
|
|
| MD5 |
af056782cb24c45603f608ab4b59f80c
|
|
| BLAKE2b-256 |
a1cb8bfae2cd5ea78c7588d8bb1ef65fcdb8c3a2c4243319fa6360cda6dce15c
|