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 and 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
configmate-0.1.7a2.tar.gz
(18.5 kB
view details)
Built Distribution
File details
Details for the file configmate-0.1.7a2.tar.gz
.
File metadata
- Download URL: configmate-0.1.7a2.tar.gz
- Upload date:
- Size: 18.5 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 | b1ca5aafb12bd855da4bac5826d43a216bd8f43db2a707370c6991676d7ddc44 |
|
MD5 | 2fe8b501ce43f316fd018a6402a894a0 |
|
BLAKE2b-256 | 1a9fc4c3cc0d6aef507d6fcc79fbad536915f343430192a8ccfafe9a9c60de39 |
File details
Details for the file configmate-0.1.7a2-py3-none-any.whl
.
File metadata
- Download URL: configmate-0.1.7a2-py3-none-any.whl
- Upload date:
- Size: 27.6 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 | 0a55666fcf318012b84dd5f99261273f4672ae941383cdb0b746c707a826f1bf |
|
MD5 | 9d002875568438726e2b94fc29d6fa31 |
|
BLAKE2b-256 | 74afee7f1db01d456b9a03df738d2de95c46edfbf655c17e457b29ecb58d1715 |