Skip to main content

A tool for loading settings from files hierarchically

Project description

Hierarchical Conf

A library for loading configurations (or other metadata) hierarchically based on the current environment

Release Python Version License Code style: black

Source Downloads Page Installation Command
PyPi PyPi Downloads Link pip install hierarchical-conf

Build status

Develop Stable Documentation Sonar
Test Publish Documentation Status Quality Gate Status

This library supports Python version 3.7+.

To check library main features you can check Hierarchical Conf's Documentation, which is hosted by Read the Docs.

How to use

Short

An example of how to use the library getting configurations:

from hierarchical_conf.hierarchical_conf import HierarchicalConf

hierarchical_conf = HierarchicalConf(searched_paths=[PROJECT_ROOT])
my_config = hierarchical_conf.get_config("my_config_key")

Long

This tool retrieve the configurations from (YAML) files according to the current environment and files precedence.

It receives a list of paths and searches each one for environment configuration files in an orderly fashion, loading them when found and overwriting duplicated configuration keys by the value of the key available in the file loaded at last. The YAML configuration files are expected to be named with prefixes based on the working environment, retrieved by the value of a pre-existent operational system environment's variable named ENVIRONMENT.

E.g.: Given the respective environments dev and production configuration files below:

dev_conf.yml:

 foo: bar_dev
 foo2: bar_dev2

production_conf.yml:

 foo: bar_prod
 foo2: bar_prod2

and given we are at development environment (ENVIRONMENT=dev), the following code will load the configuration file from the development environment file (/my_path/dev_conf.yml).

hconf = HierarchicalConf(conf_files_paths=['/my_path/'])
foo_conf = hconf.get_config("foo")
print(foo_conf)
# prints: bar_dev

Given ENVIRONMENT=production, the code above will load the configuration file from the production environment file (/my_path/production_conf.yml) and print: bar_prod.

To learn more use cases in practice (and about the keys overwriting), see Hierarchical Conf examples


Requirements and Installation

The Hierarchical Conf depends on Python 3.7+

Python Package Index hosts reference to a pip-installable module of this library, using it is as straightforward as including it on your project's requirements.

pip install hierarchical-conf

License

Apache License 2.0

Contributing

All contributions are welcome! Feel free to open Pull Requests. Check the development and contributing guidelines described in CONTRIBUTING.md

Made with :heart: by the Data Engineering team from QuintoAndar

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

hierarchical_conf-1.0.1.tar.gz (4.8 kB view hashes)

Uploaded Source

Built Distribution

hierarchical_conf-1.0.1-py2.py3-none-any.whl (4.9 kB view hashes)

Uploaded Python 2 Python 3

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