utility library to find and load configuration files
Project description
config-library
utility library to find and load configuration files
Installation
pip install config-library
pip install config-library[all]
pip install config-library[watcher]
pip install config-library[json5]
pip install config-library[toml]
pip install config-library[yaml]
Supported Config-Types
extension | requires | link (for more information) |
---|---|---|
.ini /.conf /.config |
https://en.wikipedia.org/wiki/INI_file | |
.json |
https://en.wikipedia.org/wiki/JSON | |
.jsonc |
https://changelog.com/news/jsonc-is-a-superset-of-json-which-supports-comments-6LwR | |
.json5 |
config-library[json5] |
https://json5.org/ |
.toml |
config-library[toml] or python3.11+ |
https://toml.io/ |
.yaml /.yml |
config-library[yaml] |
https://en.wikipedia.org/wiki/YAML |
.xml |
https://en.wikipedia.org/wiki/XML |
Install Variations
variation | information |
---|---|
config-library[all] |
adds all dependencies from the variations below |
config-library[watcher] |
adds support to watch the config-file for changes |
config-library[json5] |
support to load .json5 files |
config-library[toml] |
support to load .toml files |
config-library[yaml] |
support to load .yaml files |
More about configlib
Places to search for
/path/to/your/source/code/
/path/to/your/git-repo/
/home/<user>/.config/
/home/<user>/
/etc/
Note: On Windows there are respective counterparts.
And in these folders it searches for either directly the config file or a sub-folder that's named like your project.
Usage Example
# this way it's possible to write
# > from config import ...
# and it automatically restarts the python-script if app.json changes
# IMPORTANT: see configlib.configurator.restarter:restart() before usage
import configlib
configlib.Configurator("app.json").find().load().install().make_restart_on_change()
from config import HOST, PORT
...
server.bind((HOST, PORT))
import configlib
config = configlib.autoload("./app.conf")
from configlib.finder import find, places
config_file = find(
name="app.conf", # name of config-file is 'app.conf'
places=[places.local, places.user], # search in main.py folder and ~/.config/
namespace="myproject",
ns_only=True, # only search for 'myproject/app.conf' in places
)
More in detail
import configlib
config = configlib.find_and_load('app.conf', 'project')
system file-structure
/
├─ etc/
├─ home/user/
│ ├─ path/to/repo/
│ │ ├─ src/code/
│ │ │ ├─ main.py
│ ├─ .config/
places where config-library
searches for the config-file
- /home/user/path/to/repo/src/code/app.conf
- /home/user/path/to/repo/src/code/project/app.conf
- /home/user/path/to/repo/app.conf
- /home/user/path/to/repo/project/app.conf
- /home/user/.config/app.conf
- /home/user/.config/project/app.conf
- /home/user/app.conf
- /home/user/project/app.conf
- /etc/app.conf
- /etc/project/app.conf
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
config-library-0.5.1.tar.gz
(12.1 kB
view hashes)
Built Distribution
Close
Hashes for config_library-0.5.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e882df8f82a4b55cb10e5175de4ce54acbbdbc6b9fcd397dd9d9cb79446091c5 |
|
MD5 | d72e748affd240aa9888387425f5be23 |
|
BLAKE2b-256 | 516887f36202b36aa80a642a2add6f77aa3960e0b46b564d3ad7182da6411591 |