https://github.com/dnephin/pystaticconfiguration
A python library for loading and reading configuration
https://github.com/dnephin/pystaticconfiguration
Last synced: 28 days ago
JSON representation
A python library for loading and reading configuration
- Host: GitHub
- URL: https://github.com/dnephin/pystaticconfiguration
- Owner: dnephin
- License: apache-2.0
- Created: 2012-07-20T23:22:57.000Z (almost 13 years ago)
- Default Branch: main
- Last Pushed: 2022-10-22T16:26:26.000Z (over 2 years ago)
- Last Synced: 2025-03-31T10:07:05.319Z (about 1 month ago)
- Language: Python
- Homepage:
- Size: 406 KB
- Stars: 64
- Watchers: 3
- Forks: 28
- Open Issues: 13
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
PyStaticConfiguration
=====================A python library for loading, validating and reading configuration from many
heterogeneous formats. Configuration is split into two phases.Configuration Loading
---------------------Configuration is read from files or python objects, flattened, and merged
into a container called a `namespace`. Namespaces are used to separate
unrelated configuration groups.If configuration is changed frequently, it can also be reloaded easily
with very little change to the existing code.Configuration Reading
---------------------A configuration value is looked up in the `namespace`. It is validating and
converted to the requested type... contents:: Contents
:local:
:depth: 1
:backlinks: noneBuild Status
------------.. image:: https://github.com/dnephin/PyStaticConfiguration/actions/workflows/build.yaml/badge.svg
:target: https://github.com/dnephin/PyStaticConfiguration/actions
:alt: Build status.. image:: https://img.shields.io/pypi/v/PyStaticConfiguration.svg
:target: https://pypi.python.org/pypi/PyStaticConfiguration
:alt: Latest PyPI versionInstall
-------* PyStaticConfiguration is available on pypi: https://pypi.python.org/pypi/PyStaticConfiguration
* The source is hosted on github: https://github.com/dnephin/PyStaticConfiguration.. code-block:: bash
$ pip install PyStaticConfiguration
Also see the
`release notes `_.Documentation
-------------http://pythonhosted.org/PyStaticConfiguration/
Examples
--------A common minimal use of staticconf would be to use a single yaml configuration
file and read some values from it... code-block:: python
import staticconf
filename = 'hosts.yaml'
namespace = 'hosts'# Load configuration from the file into namespace `hosts`
staticconf.YamlConfiguration(filename, namespace=namespace)
...# Some time later on, read values from that namespace
print staticconf.read('database.slave', namespace=namespace)
print staticconf.read('database.master', namespace=namespace)`hosts.yaml` might look something like this:
.. code-block:: yaml
database:
slave: dbslave_1
master: dbmaster_1A more involved example would load configuration from multiple files, create
a watcher for reloading, and read some config values... code-block:: python
from functools import partial
import os
import staticconfdef load_config(config_path, defaults='~/.myapp.yaml`)
# First load global defaults if the file exists
staticconf.INIConfiguration('/etc/myapp.ini', optional=True)# Next load user defaults
staticconf.YamlConfiguration(defaults, optional=True)# Next load the specified configuration file
staticconf.YamlConfiguration(config_path)# Now let's override it with some environment settings
staticconf.DictConfiguration(
(k[6:].lower(), v) for k, v in os.environ.items() if k.startswith('MYAPP_'))def build_watcher(filename):
return staticconf.ConfigFacade.load(
filenames, 'DEFAULT', partial(load_config, filename))def run(config_path):
watcher = build_watcher(config_path)
while is_work():
watcher.reload_if_changed()current_threshold = staticconf.read_float('current_threshold')
do_some_work(current_thresold)