8000 GitHub - Lincoln-France/lincolntools-config: Python package that provides a tool to create a global and unique config object during a Python application lifetime.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Lincoln-France/lincolntools-config

Repository files navigation

lincolntools-config

GitHub license GitHub release (latest by date)

lincolntools : Python toolbox made in Lincoln France

  • Author: Lincoln Innovation
  • Creation date: 2020-10-01
  • see AUTHORS.md

This package belongs to the lincolntools namespace
The goal of this package is to provide the necessary tools to create a unique and global configuration object that can be queried anywhere in a Python project.

Table of content

  1. Documentation
  2. Tests
  3. Contribute
  4. History
  5. Credits

Installation

    pip install lincolntools-config

How to use

There are several possibilities to load a YAML configuration file :

  • Provide the path to a file which will be processed and transformed into a Python dict
  • Provide the path to a folder that contains one or more YAML files that will be concatenated into a single object.

Example

In the following examples we suppose our config folder has the given structure :

└── config
    ├── config_foo
        ├── foo.yaml               
        └── foo.template 
    └── config_bar
        ├── bar.yaml               
        └── bar.template 

foo.yaml

foo:
    foo_key : foo_value

bar.yaml

bar:
    bar_key : bar_value

Code :

from lincolntools.config import Config
my_config = Config('/path/to/config')
print(my_config.conf)
# {'foo': {'foo_key': 'foo_value'}, 'bar': {'bar_key': 'bar_value'}, '_version': 1}
print(my_config.get('foo'))
# {'foo_key': 'foo_value'}

print(my_config.get('foo').get('foo_key'))
# foo_value

print(my_config.get('foo')['foo_key']) # same as above but with another syntax
# foo_value

print(my_config.flatten())
# {'foo-foo_key': 'foo_value', 'bar-bar_key': 'bar_value'}

print(my_config.dump())
# _version: 2
# bar:
#   bar_key: bar_value
# foo:
#   foo_key: foo_value

Important

The Config class is based on the Single design pattern (official documentation).
TLDR : Only one instance of Config can be initialized during the whole program lifetime.

from lincolntools.config import Config
my_first_config = Config('/path/to/config') # ok, no other instance exists
my_other_config = Config('/path/to/config') # nok
# Exception: This is a singleton

Tests

Launch tests with the default Python version :

# in the project folder
pytest

Launch tests on multiple Python versions (see tox.ini) :

# in the project folder
tox

History

Voir HISTORY.md

Credits

This package was inspired by Cookiecutter_ and the audreyr/cookiecutter-pypackage_ project template.

About

Python package that provides a tool to create a global and unique config object during a Python application lifetime.

Topics

Resources

License

Stars

Watchers

Forks

0