A YAML configuration wrapper. PYPI Package
First, you need to install the library either using pip:
$ pip install yaml_config_wrapper
Then, import it and use it like so:
from yaml_config_wrapper import Configuration
# The `config_schema_path` argument is optional
conf = Configuration(config_src='confs/template_conf.yml',
config_schema_path='yml_schemas/default_schema.json')
There are two already example yml configs under confs. An example structure is the following:
tag: production
cloudstore:
config:
api_key: !ENV ${DROPBOX_API_KEY}
type: dropbox
datastore:
config:
hostname: !ENV ${MYSQL_HOST}
username: !ENV ${MYSQL_USERNAME}
password: !ENV ${MYSQL_PASSWORD}
db_name: !ENV ${MYSQL_DB_NAME}
port: 3306
type: mysql
email_app:
config:
email_address: !ENV ${EMAIL_ADDRESS}
api_key: !ENV ${GMAIL_API_KEY}
type: gmail
The !ENV
flag indicates that you are passing an environmental value to this attribute. You can change
the values/environmental var names as you wish.
There is also the option to create a validation schema the enforces a specific yaml structure. The default dummy version is the default_schema.json file.
In order to use the !ENV
flag in you config, you need to set the corresponding environment variables
like so:
$ export DROPBOX_API_KEY=123
$ export MYSQL_HOST=foo.rds.amazonaws.com
$ export MYSQL_USERNAME=user
$ export MYSQL_PASSWORD=pass
$ export MYSQL_DB_NAME=Test_schema
$ export EMAIL_ADDRESS=Gmail Bot <foobar@gmail.com>
$ export GMAIL_API_KEY=123
The best way to do that, is to create a .env file (example), and source it before running the code.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
You need to have a machine with anaconda installed and any Bash based shell (e.g. zsh) installed.
$ conda -V
conda 4.10.1
$ echo $SHELL
/usr/bin/zsh
All the installation steps are being handled by the Makefile.
First, modify the python version (min_python
) and everything else you need in
the settings.ini.
Then, execute the following commands:
$ make create_env
$ conda activate yaml_config_wrapper
$ make dist
Now you are ready to use and modify the library.
If you want to run the unit tests, execute the following command:
$ make tests
For the continuous integration, the CircleCI service is being used. For more information you can check the setup guide.
Again, you should set the above-mentioned environmental variables (reference) and for any modifications, edit the circleci config .
This is mainly for future reference for the developers of this project. First,
create a file called ~/.pypirc
with your pypi login details, as follows:
[pypi]
username = your_pypi_username
password = your_pypi_password
Then, modify the python version (min_python
), project status (status
), release version (version
)
and everything else you need in
the settings.ini.
Finally, execute the following commands:
$ make create_env
$ conda activate yaml_config_wrapper
$ make release
For a dev release, change the testing_version
and instead of make release
, run make release_test
.
This project is licensed under the Apache License - see the LICENSE file for details.