Lightweight configuration with automatic dataclasses parsing (HOCON/JSON/YAML/PROPERTIES)
Project description
Dataconf
Getting started
Requires at least Python 3.8.
pip3 install --upgrade git+https://github.com/zifeo/dataconf.git
poetry add git+https://github.com/zifeo/dataconf.git
Examples
conf = """
str = test
str = ${HOSTNAME}
float = 2.2
list = [
a
b
]
nested {
a = test
}
nestedList = [
{
a = test1
}
]
duration = 2s
"""
@dataclass
class Nested:
a: str
@dataclass
class Config:
str: str
float: float
list: List[str]
nested: Nested
nestedList: List[Nested]
duration: timedelta
import dataconf
print(dataconf.load(conf, Config))
# TestConf(test='pc.home', float=2.1, list=['a', 'b'], nested=Nested(a='test'), nestedList=[Nested(a='test1')], duration=datetime.timedelta(seconds=2))
conf = dataconf.loads('confs/test.hocon', Config)
conf = dataconf.loads('confs/test.json', Config)
conf = dataconf.loads('confs/test.yaml', Config)
conf = dataconf.loads('confs/test.properties', Config)
dataconf.dumps('confs/test.hocon', out='hocon')
dataconf.dumps('confs/test.json', out='json')
dataconf.dumps('confs/test.yaml', out='yaml')
dataconf.dumps('confs/test.properties', out='properties')
Follows same api as python JSON package (e.g. load
, loads
, dump
, dumps
).
For full HOCON capabilities see here.
CI
dataconf -c confs/test.hocon -m tests.configs -d TestConf -o hocon
# dataconf.exceptions.TypeConfigException: expected type <class 'datetime.timedelta'> at .duration, got <class 'int'>
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
dataconf-0.1.1.tar.gz
(7.8 kB
view hashes)