A tool for loading settings from files hierarchically

hierarchical-conf, configuration, by, environment, files, as, code, hierarchical, configuration-as-code, configuration-by-environment, configuration-files, hierarchical-configuration, python
pip install hierarchical-conf==1.0.2


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


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


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:


 foo: bar_dev
 foo2: bar_dev2


 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")
# 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


Apache License 2.0


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

Made with ❤️ by the Data Engineering team from QuintoAndar