Python package that allows to parse typed configs defined by python dataclasses
Project description
PythonConfigParser
easy, light-weight fully-typed python configs. not more, not less.
Usage
define your config stucture in a dataclass like
from dataclasses import dataclass
from typing import List
@dataclass
class DummyConfigElement:
name: str
list: List[int]
another_list: List[float]
from file
First initialize the config parser with the path to the module with the config definitions.
parser = ConfigParser(datastructure_module_name="mysrc.datastructures.configs")
# Then parse the config from file.
my_config = parser.parse_from_file("myconfig.json")
from dictionary
my_config_dict = {"type_name" : "mysrc.datastructures.configs.a"}
my_config = ConfigParser().parse(my_config_dict)
type definition
There are two ways to define the configs type:
- specified in the config itself
- e.g in the code example above
- path to the config class must be specified as str in the config as key "type_name"
- specified when parsing the config
- if the config has no key "typed_config" set, the type can be specified when parsing the config
from mysrc.datastructures.configs import a
my_config_dict = {"some_key" : "some_value"}
my_config = ConfigParser().parse_typed(my_config_dict,a)
By default every field can be explicitly set to None. If you don't what this behaviour you can set the flag "allow_none" to False.
cfgparser.settings.allow_none = False
Features
- fully typed json and yaml configs
- nested configs
- complex union and optional types
- dict object into typed dataclass
Installation
pip install cfgparser
Features Roadmap
- specify config from cli
- post hock
- distributed configs
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
cfgparser-1.0.6.tar.gz
(9.2 kB
view hashes)
Built Distribution
Close
Hashes for cfgparser-1.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | faeef1c9e2b228f3b66697be90d02169a86465b04a8901e5f5640cdac43aef12 |
|
MD5 | bbd32992179b97d8031d472aa71f13f0 |
|
BLAKE2b-256 | 2f8e51fd220e3c5f9a067d5588b37ae549a215db129c59ea721523639aac894b |