Skip to main content

YAML Config Wrapper

CircleCI GitHub license

About

A YAML configuration wrapper. PYPI Package

Table of Contents

Using the library

Installing and using the library

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')

Creating a config file

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.

Set the required environment variables

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.

Manually install the library

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

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

Install the requirements

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.

Run the Unit Tests

If you want to run the unit tests, execute the following command:

$ make tests

Continuous Integration

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 .

Update PyPI package

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.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Buy Me A Coffee

Metadata

Release files for yaml-config-wrapper 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yaml-config-wrapper 1.0.4
File Size Uploaded
yaml-config-wrapper-1.0.4.tar.gz 15.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yaml-config-wrapper 1.0.4
File Interpreter ABI Platform
yaml_config_wrapper-1.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 28.7 kB

Release files / yaml-config-wrapper-1.0.4.tar.gz

Download URL yaml-config-wrapper-1.0.4.tar.gz
Size 15.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b372c9fe625a3df81e8cb2ee02e9f956618bd8897e406bc22e4feb0ccbddc8d8
BLAKE2b-256 checksum
How to use checksums
e750dbeae3492a7b354dde38ee8f45648b58b6792152be112b20943da958c682
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

Release files / yaml_config_wrapper-1.0.4-py3-none-any.whl

Download URL yaml_config_wrapper-1.0.4-py3-none-any.whl
Size 12.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0133a4cc45ce2f7df69fe0588613b0efbac1b18158eedfab40becb8035516e42
BLAKE2b-256 checksum
How to use checksums
fe311aac3a92357ba3a8437373f30889fbd6b71a60ffa3e325a2de2813ca6c53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page