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 ;)
You can install pyenvconfig easily, using pip:
pip install pyenvconfig
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,
)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, flake8You can install envconfig in your virtual environment by running:
python setup.py installAll 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 browserTo run the linter:
./run_linter.shContributing is easy. Create a pull request, add tests, and get it approved!