Skip to main content

Configuration and Secrets for Python applications

Project description

Configure-Tron

https://img.shields.io/pypi/v/configuretron.svg https://img.shields.io/travis/channelcat/configuretron.svg Documentation Status Updates

Configuretron enables type hinted configuration files and secrets for python. Easily add secrets to your configuration that are encryptable from clients and decryptable from trusted developers and running services.

Features

  • Type-hinted configuration

  • Simple, readable YAML configs

  • Config in source control

  • Secrets safely in source control

  • Easily swap environments

  • Control who can encrypt and decrypt

Installation

$ python -m pip install configuretron

Usage

config.yml

config:
    api_url: https://apitopia.com/api/v1
    api_timeout: 20

config.py

@dataclass
class Config:
    api_url: str
    api_timeout: int = 30

config = configuretron.from_yaml(Config, "config.yml")

Adding Secrets

Adding encryption just takes a few console commands

$ python -m configuretron --yaml=config.yml setup_encryption

Copy the generated base64 private key into an environment variable (in this example, PRIVATE_KEY)

Encrypt and variables in the config (in this example, api_token):

$ python -m configuretron --yaml=config.yml encrypt --key api_token

Then pass the key to the config

private_key = configuretron.env_base64_value('PRIVATE_KEY')
config = configuretron.from_yaml(Config, "config.yml", private_key=private_key)

Environmental overrides

To override values per-environment, add them into the config like so:

config:
    api_url: http://localhost:8080/api/v1
    api_timeout: 20
env:
    prod:
        config:
            api_url: https://apitopia.com/api/v1

Then just pass env when initializing the configuration:

config = configuretron.from_yaml(Config, "config.yml", env="prod")

TODO Features

  • Config heirarchy

  • Type validation

  • Multiple layered configs

History

0.1.0 (2022-12-22)

  • First release on PyPI.

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

configuretron-0.3.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

configuretron-0.3.0-py2.py3-none-any.whl (8.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file configuretron-0.3.0.tar.gz.

File metadata

  • Download URL: configuretron-0.3.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for configuretron-0.3.0.tar.gz
Algorithm Hash digest
SHA256 183390aed14af72fe23516c9bf48a892cd0793c3edc64adefe2b9f04bdd96b04
MD5 fa9a3efea0e2525058ee6280a47076b2
BLAKE2b-256 e2f130549d5857b0a8655ab24522ce8f9aafc6f67c6a9d733df050019c1f22d8

See more details on using hashes here.

File details

Details for the file configuretron-0.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for configuretron-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 71a90714371b91c0b7f2d62d32ccfba9cf3a58f7fec6c42aedb86bc0f3b12de7
MD5 b8507080e2296e97e033ef351675ee93
BLAKE2b-256 29cc5b451cf5f54e9e7ee3a91a2edd7f1539ed4af4f1aa4307ccdb8cf061d950

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