Practical and versatile configuration parsing in Python.
Project description
ConfigMate
Practical and versatile configuration parsing in Python
ConfigMate streamlines heavyweight config parsing into a sleek, zero-boilerplate experience that lets you configure with confidence.
Key Features
- Extensible file format support: Automatic detection & parsing of all standard config file formats.
- Environment variable interpolation: Parse environment variables while keeping defaults in your configuration file.
- Override files: Segregate base configuration management such as DEV/STAG/PROD overrides in separate files.
- CLI support: Override configuration values with files or values directly from an automatically generated command line interface.
- Type validation: Custom validation support, and seamless extension for Pydantic's fantastic validation capabilities.
Get started with ConfigMate
ConfigMate simplifies your configuration management. Get started with these easy steps:
Installation
Install ConfigMate with all standard features:
pip install "configmate[standard]"
Alternatively, install with specific features (e.g., Pydantic):
pip install "configmate[pydantic]"
Set Up Configuration
- Create a Configuration File: In this example we will do YAML, but ConfigMate supports all standard config file formats(json, toml, ini - you name it):
# config.yaml
Database configuration:
host: localhost
port: ${DB_PORT:8000}
- Load your config in python: Use ConfigMate to load and validate configuration in your script:
# example.py
import configmate
import dataclasses
@dataclasses.dataclass
class DatabaseConfig:
host: str
port: int
config = configmate.get_config(
"config.yaml",
section='Database configuration',
validation=DatabaseConfig
)
print(config)
- Run Your Script with Different Configurations Execute your script, and override configurations using environment variables or command-line arguments:
# Default configuration
python example.py
>> DatabaseConfig(host='localhost', port=8000)
# Override port using an environment variable
DB_PORT=9000 python example.py
>> DatabaseConfig(host='localhost', port=9000)
# Override host using a command-line argument
python example.py ++host foreignhost
>> DatabaseConfig(host='foreignhost', port=8000)
Quick comparison with other config parsers
| Feature / Package | ConfigMate | ConfigParser | File Parsers (TOML/YAML/...) | ArgParse | Pallets/Click | Google/Fire | OmegaConf | Hydra |
|---------------------------------------|:----------:|:------------:|:---------------------------:|:--------:|:-------------:|:-----------:|:---------:|:-----:|
| No Boilerplate | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
| Support for Multiple File Formats | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Hierarchical Configuration | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Command-line Interface (CLI) Support | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
| Type Validation | ✅ | ❌ | Partial | ❌ | ✅ | ❌ | Partial | Partial|
| Environment Variable Interpolation | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| Dependency Count | Low | Low | Low | Low | Low | Low | Low | Moderate |
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
File details
Details for the file configmate-0.1.8.tar.gz
.
File metadata
- Download URL: configmate-0.1.8.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.0 Darwin/23.2.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 654de0fd78d2938e5546534a2ad90e62bcf5bca0524bc112f602a39d58a9304a |
|
MD5 | 9ce7d0d7686829eaee8226eb5df8ce77 |
|
BLAKE2b-256 | 1b87a21ecd73bab2a82abc48f913e70169a3cc564e6c2dd5323e433bd4c63f3d |
File details
Details for the file configmate-0.1.8-py3-none-any.whl
.
File metadata
- Download URL: configmate-0.1.8-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.0 Darwin/23.2.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28c454f01c55a57c379557df5a398775cd56baf8828c8ca77dc6a5e830e33972 |
|
MD5 | f003e810c1804bde0b729b2258a47b38 |
|
BLAKE2b-256 | f77cc11447f679c1cfaedc4f7901fe19419491c48ff403743fca65572b052768 |