Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hmiladhia/configdmanager
A simple configuration files manager package
https://github.com/hmiladhia/configdmanager
Last synced: 2 days ago
JSON representation
A simple configuration files manager package
- Host: GitHub
- URL: https://github.com/hmiladhia/configdmanager
- Owner: hmiladhia
- License: mit
- Created: 2020-03-02T13:16:17.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-03-27T16:17:36.000Z (over 4 years ago)
- Last Synced: 2024-04-29T09:02:14.803Z (7 months ago)
- Language: Python
- Size: 74.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ConfigDmanager
## Installation
A simple pip install will do :
```bash
python -m pip install ConfigDmanager
```## Use
- Suppose we have two Configuration files ( of json type ) :
- ParentConfig.json :```json
{
"__name": "ParentConfig",
"param1": "Value 1"
}
```
- MainConfig.json :
- The **__parent** parameter specifies the path to another configuration file that will give us default values ( Think of it as inheritance ).
- The text contained between brackets will be reinterpreted in runtime :
in the example below **${param1}** will be reinterpreted as "Value 1"
- The use of environment variables for sensitive data like passwords is also possible : through this text **${os_environ[password]}**
- You can also read the content of a text file with a simple : **${read_file[file_path]}** as shown in the example below.```json
{
"__name": "MainConfig",
"__parent": "demo.ParentConfig",
"param2": "Value 2 and ${param1}",
"user_info": {"user": "username", "password": "${os_environ[password]}"},
"long_text": "${read_file[./demo.py]}"
}
```- To import those configuration using **configDmanager**, use this demo code :
```python
from configDmanager import import_configclass RandomClass:
def __init__(self, param1, param2, user_info, long_text):
print(f"param1: {param1}")
print(f"param2: {param2}")
print(f'my user: {user_info.user}')
print(f'my user: {user_info.password}')
print(f'my long text: "{long_text[:40]}"')config = import_config('MainConfig')
print("## Object 1")
obj = RandomClass(**config)# You can also select specific keys
print("## Object 2")
another_obj = RandomClass(param2='Another Value', long_text="Not so long", **config[['param1', 'user_info']])```
## Export Config file
You can export a Config by simply using the **export_config** function
```python
from configDmanager import export_config, Configconfig = Config({'my_param': 'my_value'})
export_config(config, 'NewConfig')
```If you wish to modify an existing config, you can use **update_config** function :
```python
from configDmanager import update_config# You can use a dict to update Config values
update_config({'param' : 'value'}, 'MyConfig')# You can also use a callable that takes the config returns a dict
update_config(lambda conf: {'numeric': conf['numeric'] + 1}, 'MyConfig')
```