A simple solution that allows dot notation for YAML file.
Project description
yaml2object is a python library that allows dot notation access for YAML file.
Status
Install
pip install yaml2object
Usage
1. Create your YAML settings
# config.yml
defaults: &defaults
database:
adapter: postgresql
database: development
port: 8000
nested_param:
param1:
sub_param1: 'sub_param1 value'
sub_param2: 'sub_param2 value'
development:
<<: *defaults
test:
<<: *defaults
port: 8001
2. Define your class
- Set yaml2object.YAMLObject as meta-class of your config class.
- Provide source, namespace as class fields.
- scource: YAML file path OR python dictionary
- namespace: param key in YAML file OR python dictionary
When source is a YAML file
from yaml2object import YAMLObject
class Config(metaclass=YAMLObject):
source = 'config.yml'
> WarningLog: Missing namespace attribute. Converting 'config.yml' to object.
from yaml2object import YAMLObject
class Config(metaclass=YAMLObject):
source = 'config.yml'
namespace = 'invalid'
> WarningLog: Missing 'invalid' param in 'config.yml'. Converting 'config.yml' to object.
from yaml2object import YAMLObject
class DevelopmentConfig(metaclass=YAMLObject):
source = 'config.yml'
namespace = 'development'
class TestConfig(metaclass=YAMLObject):
source = 'config.yml'
namespace = 'test'
DefaultConfig = YAMLObject('DefaultConfig', (object,), {'source': 'config.yml', 'namespace': 'defaults'})
Source can also be a python dictionary
from yaml2object import YAMLObject
config = {'defaults': {'database':
{'adapter': 'postgresql', 'database': 'development'},
'port': 8000,
'nested_param':
{'param1': {'sub_param1': 'sub_param1 value', 'sub_param2': 'sub_param2 value'}}}}
DefaultConfig = YAMLObject('DefaultConfig', (object,), {'source': config, 'namespace': 'defaults'})
3. Access your YAML as python object
>>> Config.to_dict()
>>> Config.development.to_dict()
>>> Config.development.database.to_dict()
>>> Config.development.database.adapter
>>> Config.development.nested_param.param1.sub_param1
>>> DevelopmentConfig.to_dict()
>>> DevelopmentConfig.database.to_dict()
>>> DevelopmentConfig.database.adapter
>>> DevelopmentConfig.database.database
>>> TestConfig.to_dict()
>>> TestConfig.port
>>> TestConfig.database.to_dict()
>>> TestConfig.database.adapter
>>> TestConfig.database.database
>>> DefaultConfig.to_dict()
>>> DefaultConfig.database.to_dict()
>>> DefaultConfig.database.adapter
>>> DefaultConfig.nested_param.param1.sub_param1
NOTE
An underscore is added before any key matching python keyword lists https://docs.python.org/3/library/keyword.html#keyword.kwlist
Example:
from yaml2object import YAMLObject
config_dict = {'from': 'value1', 'None': 'value2'}
Config = YAMLObject('Config', (object,), {'source': config_dict})
Missing namespace attribute. Converting source to object.
Param from is a python keyword. Adding _ (underscore) before the param and can be accessed as _from
Param None is a python keyword. Adding _ (underscore) before the param and can be accessed as _None
>>> Config._from
value1
>>> Config._None
value2
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yaml2object-1.0.13.zip.
File metadata
- Download URL: yaml2object-1.0.13.zip
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
663ec364cc953caef9b9634131e7a0b53ff097a6bfe77f88da19cc767e6d19da
|
|
| MD5 |
d7b1af0b70a00d4b28475b846dbd9bf9
|
|
| BLAKE2b-256 |
cf651012c6d466f726c30f8783f4cf5659827ba462cf0a42d906b7fedd07e6dc
|
File details
Details for the file yaml2object-1.0.13-py3-none-any.whl.
File metadata
- Download URL: yaml2object-1.0.13-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5d7c8dc8ee3b27cfd598b68bac8a63801ddb7d9970b46893abbf4f273cb8832
|
|
| MD5 |
ddfc8f8d9fcee627258c7255fc4c95da
|
|
| BLAKE2b-256 |
c1a8f7005721dc079cde1f527ad665c6a57b41157a4272739af3a00bac5d95ed
|