Skip to main content

Simple environment variable configuration for Python

Project description

envconfig

envconfig is a simple but effective way to configure your Python application through environment variables.

Inspired by kelseyhightower/envconfig.

Features:

  • Extremely simple setup,
  • Zero third-party dependencies,
  • Well tested,
  • Well documented,
  • Fun to use ;)

Quickstart

import envconfig

class Config:
  # Declare two config variables with type string.
  aws_access_key_id: str
  aws_secret_access_key: str

  # Provide a default - envconfig uses the type that the attribute is initialized with
  # so you don't need to repeat yourself.
  aws_region = 'us-east-1'

  # HTTP config
  num_retries = 15
  retry_strategy: str
  timeout: int = 15  # seconds

# Create an instance of your config object and let envconfig process it!
config = Config()
envconfig.process(config)

# Access class attributes
aws_client = Client(
  access_key_id=config.aws_access_key_id,
  secret_access_key=config.aws_secret_access_key,
  region=config.aws_region,
)

Development

Cloning and Building

envconfig is written in Python 3.6 and is tested on Python 3.6 and above.

Simply check out the repository, create a virtualenv, and go to town!

git clone https://github.com/makramkd/envconfig  # or git@github.com:makramkd/envconfig.git if you prefer
cd envconfig
pyenv local 3.6.3  # ensure python 3.6
python -m venv .venv  # create venv
source .venv/bin/activate
pip install -r test_requirements.txt  # for coverage, flake8

You can install envconfig in your virtual environment by running:

python setup.py install

Running unit tests and linter

All unit tests are built using the unittest module from the standard library.

python -m unittest discover tests/

Or, if you want a coverage report:

coverage run -m unittest discover tests
coverage report  # show coverage report on stdout
coverage html && open htmlcov/index.html  # show interactive coverage report in the browser

To run the linter:

./run_linter.sh

Contributions

Contributing is easy. Create a pull request, add tests, and get it approved!

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

pyenvconfig-0.1.0.tar.gz (4.4 kB view hashes)

Uploaded source

Built Distribution

pyenvconfig-0.1.0-py3-none-any.whl (5.1 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page