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.4.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hierarchical_conf-1.0.4-py2.py3-none-any.whl (4.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file hierarchical_conf-1.0.4.tar.gz.

File metadata

  • Download URL: hierarchical_conf-1.0.4.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.12

File hashes

Hashes for hierarchical_conf-1.0.4.tar.gz
Algorithm Hash digest
SHA256 abeb70822e1bb955ada057861fa5b7d7b4b2b04523720949431598724d56d527
MD5 2bcede563d6575762842049f8d911e32
BLAKE2b-256 130511e10beaf1d7d970f8564ec7e5c071505b7025c3c00cd451e02fa4e1f9d5

See more details on using hashes here.

File details

Details for the file hierarchical_conf-1.0.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for hierarchical_conf-1.0.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9915ed286d6cd294daab8d75260d910c33d1a8bceaafdce9c6b32323d18752d9
MD5 1be17cb77009e5dadeabed263a0e9724
BLAKE2b-256 7e375f8a7d177ad37fba6ea5d335317d80d18dfe64d7430896233d56e3f2993b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page