Practical and versatile configuration parsing in Python.
Project description
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 and DEV/STAG/PROD overrides in separate files.
CLI support: Override configuration values with files or values dirctly 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:
Define your database configuration in config.yaml:
# config.yaml Database configuration: host: localhost port: ${DB_PORT:8000}
Integrate with Your Script:
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
Feature / package |
configmate |
configparser |
fileparsers (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
Hashes for configmate-0.1.7a1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd1f79676900d277fa479af8dab7fdf9420c6f04c800e525ee7ca6a5d3c9a938 |
|
MD5 | 71f40d81dcd92fb93c9f023e79a174fc |
|
BLAKE2b-256 | 9439c9fa7376151d36f7c83c445edfdb468fdd3bc36026f7aae2c2d78a4e92de |