Added config parsing and validation with voluptuous
This commit is contained in:
parent
228043c0e0
commit
8099e2c3ca
1
Pipfile
1
Pipfile
@ -12,6 +12,7 @@ gpiozero = "*"
|
||||
colorama = "*"
|
||||
click-log = "*"
|
||||
click-didyoumean = "*"
|
||||
voluptuous = "*"
|
||||
|
||||
[dev-packages]
|
||||
"flake8" = "*"
|
||||
|
10
Pipfile.lock
generated
10
Pipfile.lock
generated
@ -1,7 +1,7 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "bd0fbeefa6073d17fbdcf3879ed282ebcb875445ae4ea4ef2eef2c261c13094c"
|
||||
"sha256": "07aac5a19e64863bc015b63d301912dc79586e7be06dd8056b60dd0e6fb26629"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
@ -105,6 +105,14 @@
|
||||
"sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"
|
||||
],
|
||||
"version": "==1.24.1"
|
||||
},
|
||||
"voluptuous": {
|
||||
"hashes": [
|
||||
"sha256:303542b3fc07fb52ec3d7a1c614b329cdbee13a9d681935353d8ea56a7bfa9f1",
|
||||
"sha256:567a56286ef82a9d7ae0628c5842f65f516abcb496e74f3f59f1d7b28df314ef"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.11.5"
|
||||
}
|
||||
},
|
||||
"develop": {
|
||||
|
2
carom/client.ini
Normal file
2
carom/client.ini
Normal file
@ -0,0 +1,2 @@
|
||||
[test]
|
||||
foo = bar
|
21
carom/config.py
Normal file
21
carom/config.py
Normal file
@ -0,0 +1,21 @@
|
||||
import configparser
|
||||
|
||||
from voluptuous import Schema
|
||||
from voluptuous.humanize import validate_with_humanized_errors
|
||||
|
||||
from carom.const import CONFIG_FILES, DEFAULT_CONFIG
|
||||
|
||||
_parser = configparser.ConfigParser()
|
||||
_parser.read_string(DEFAULT_CONFIG)
|
||||
_parser.read(CONFIG_FILES)
|
||||
# Convert the ConfigParser object to a real dict now:
|
||||
_parser_dict = {s: dict(_parser.items(s)) for s in _parser.sections()}
|
||||
_schema = Schema({
|
||||
'test': {
|
||||
'foo': str,
|
||||
},
|
||||
})
|
||||
|
||||
config = validate_with_humanized_errors(_parser_dict, _schema)
|
||||
|
||||
__all__ = ('config', )
|
@ -1,8 +1,8 @@
|
||||
import os
|
||||
from pkg_resources import resource_string
|
||||
|
||||
AVAILABLE_PINS = range(0, 28)
|
||||
"""Pins available for Configuration"""
|
||||
DEFAULT_CONFIGFILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "client.ini"))
|
||||
DEFAULT_CONFIG = resource_string(__name__, 'client.ini').decode()
|
||||
"""Default configfile, that is used as a Fallback if no other configuration exists."""
|
||||
CONFIG_FILES = ('~/.config/carom/client.ini', '/etc/carom/client.ini', DEFAULT_CONFIGFILE)
|
||||
CONFIG_FILES = ('~/.config/carom/client.ini', '/etc/carom/client.ini')
|
||||
"""Order of resolution of Config Files. Files are tried in order, first one found is used."""
|
||||
|
Loading…
Reference in New Issue
Block a user