Skip to main content

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

  1. Create a Configuration File:

    Define your database configuration in config.yaml:

    # config.yaml
    Database configuration:
        host: localhost
        port: ${DB_PORT:8000}
  2. 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


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

Uploaded Source

Built Distribution

configmate-0.1.7a1-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

Details for the file configmate-0.1.7a1.tar.gz.

File metadata

  • Download URL: configmate-0.1.7a1.tar.gz
  • Upload date:
  • Size: 17.7 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.7a1.tar.gz
Algorithm Hash digest
SHA256 228d9a4b315a8832141bb97505a57077feb5a494a3d8d11c849c4cd3822a3725
MD5 d13b011794596bb6981557424460c40a
BLAKE2b-256 4f29c3e1607c1ee1ac32c7ce34550360f66fbe0e141331e1d6d0bdff736916c3

See more details on using hashes here.

File details

Details for the file configmate-0.1.7a1-py3-none-any.whl.

File metadata

  • Download URL: configmate-0.1.7a1-py3-none-any.whl
  • Upload date:
  • Size: 27.2 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.7a1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd1f79676900d277fa479af8dab7fdf9420c6f04c800e525ee7ca6a5d3c9a938
MD5 71f40d81dcd92fb93c9f023e79a174fc
BLAKE2b-256 9439c9fa7376151d36f7c83c445edfdb468fdd3bc36026f7aae2c2d78a4e92de

See more details on using hashes here.

Supported by

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