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
yaml2object-1.0.13.zip
(14.5 kB
view details)
Built Distribution
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 |