Skip to main content

Practical and versatile configuration parsing in Python.

Project description

ConfigMate Logo

ConfigMate

Practical and versatile configuration parsing in Python

Pypi version Python versions Downloads Code quality License


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

  1. 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}
  1. 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)
  1. 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


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.8.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

configmate-0.1.8-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

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

Hashes for configmate-0.1.8.tar.gz
Algorithm Hash digest
SHA256 654de0fd78d2938e5546534a2ad90e62bcf5bca0524bc112f602a39d58a9304a
MD5 9ce7d0d7686829eaee8226eb5df8ce77
BLAKE2b-256 1b87a21ecd73bab2a82abc48f913e70169a3cc564e6c2dd5323e433bd4c63f3d

See more details on using hashes here.

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

Hashes for configmate-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 28c454f01c55a57c379557df5a398775cd56baf8828c8ca77dc6a5e830e33972
MD5 f003e810c1804bde0b729b2258a47b38
BLAKE2b-256 f77cc11447f679c1cfaedc4f7901fe19419491c48ff403743fca65572b052768

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page