Multi-layer configuration management with source tracking
Project description
Confocal
A multi-layer configuration management library built on pydantic with source tracking and profile support.
Features
- Hierarchical config file discovery (searches parent directories)
- Profile support for different environments
- Full source tracking to explain where each config value came from
- Built on pydantic for robust validation and type safety
- Rich terminal output for config inspection
Installation
pip install confocal
Quick Start
from confocal import BaseConfig
from pydantic import Field
class MyConfig(BaseConfig):
database_url: str
name: str = Field(default="Anonymous")
debug: bool = False
# Load config from raiconfig.toml, environment variables, etc.
config = MyConfig.load()
# Show where config values came from
config.explain()
Config Sources (in order of precedence)
- Initialization arguments
- Environment variables
- Active profile from config file
- Config files
- Default values
Using Profiles
In your raiconfig.toml:
database_url = "postgresql://prod-db:5432"
[profile.dev]
database_url = "postgresql://localhost:5432"
debug = true
[profile.test]
database_url = "postgresql://test-db:5432"
Activate a profile:
export ACTIVE_PROFILE=dev
Advanced Usage
Show full config inheritance chain:
config.explain(verbose=True)
Manually find nearest config file in parent directories:
from confocal import find_upwards
config_path = find_upwards("config.toml")
License
MIT
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
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 confocal-0.1.0.tar.gz.
File metadata
- Download URL: confocal-0.1.0.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f11f0d8f0cdb1427cde2ad6009859286354a2e4d87c359f2dc95b5c1da5a60e
|
|
| MD5 |
88c45b0d6cbdaaee6df946e217a69cfa
|
|
| BLAKE2b-256 |
08ef1e702dfba9ee98b4ba36e788b9317b5e89bf77046678c9c3670d0a28200b
|
File details
Details for the file confocal-0.1.0-py3-none-any.whl.
File metadata
- Download URL: confocal-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80c90c547aa20dc1c743ca997331d4f471a6568a8b0f023befa56cd27cc763f3
|
|
| MD5 |
b1a7aa798cd503bf4dd036c9c33dffee
|
|
| BLAKE2b-256 |
0cf01f23dd9716dcbb2c2f40569cad6271f30c0d345a58f12db6e4e6cd5564a0
|