configdict¶
This package provides two classes, CheckedDict
and ConfigDict
,
which allow to define a dict with default values and a set of allowed keys.
Any modification to the dict can be validated against a set of rules.
configdict.configdict Module¶
CheckedDict¶
A dictionary based on a default prototype. A CheckedDict
can only define
key:value
pairs which are already present in the default. It is possible to
define a docstring for each key and different restrictions for the values
regarding possible values, ranges and type. A CheckedDict is useful for
configuration settings.
ConfigDict¶
Based on CheckedDict
, a ConfigDict
is a persistent, unique dictionary. It is
saved under the config folder determined by the OS and it is updated with each
modification. It is useful for implementing configuration of a module / library
/ app, where there is a default/initial state and the user needs to be able to
configure global settings which must be persisted between sessions (similar to
the settings in an application)
Example
from configdict import ConfigDict
config = ConfigDict("myproj.subproj")
config.addKey("keyA", 10, doc="documentaion of keyA")
config.addKey("keyB", 0.5, range=(0, 1))
config.addKey("keyC", "blue", choices=("blue", "red"), doc="documentation of keyC")
config.load()
Alternatively, a ConfigDict
can be created all at once
config = ConfigDict("myapp",
default = {
'font-size': 10.0,
'font-family': "Monospace",
'port' : 9100,
},
validator = {
'font-size::range' : (8, 24),
'port::range' : (9000, 65000),
'font-family::choices' : {'Roboto', 'Monospace'},
'port': lambda cfg, port: checkPortAvailable(port)
},
docs = {
'port': 'The port number to listen to',
'font-size': 'The size of the font, in pixels'
}
)
This will create the dictionary and load any persisted version. Any saved
modifications will override the default values. Whenever the user changes any
value (via config[key] = newvalue
) the dictionary will be saved.
In all other respects a ConfigDict
behaves like a normal dictionary.
Functions¶
|
Retrieve a previously created ConfigDict. |
Returns a dict of active configs |
|
|
Given a config name, return the path where it should be saved |
Classes¶
|
A dictionary which checks that the keys and values are valid according to a default dict and a validator. |
|
This is a (optionally) persistent, unique dictionary used for configuration of a module / app. |
Class Inheritance Diagram¶
