devconfig 0.4.8

Creator: bradpython12

Last updated:

Add to Cart

Description:

devconfig 0.4.8

rfc2119 for keywords
PURPOSE

to provide unified way to configure python2 and python3 application
to be handy for developers, devops, QA and users with technical background

READINGS

yaml tutorial
http://yaml.org/spec/1.1/
YAML IS NOT A JSON AND NOT A DATA SERIALIZATION FORMAT. ITS A OBJECT SERIALIZATION FORMAT

REQUIREMENTS

MUST support yaml out of the box
MUST configure program (standalone module or python package) by recursive merge developer defined configuration (defaults) and runtime provided configuration.
each configuration layer (e.g. defaults, runtime config, etc.) MUST be a nested mapping
number of merged layers is unlimited and MAY be redefined by developer
layer merge order MAY be redefined by developer
MUST contain set of yaml constructors

!url
!date
!datetime
!timedelta
!strjoin
!envvar
!regexp
!filecontent


SHOULD contain set of dangerous yaml constructors

!file
!socket
!yamlfile - includes yaml by file path or url


MAY process constructors with recursion detection (see REQUIREMENT NOTES)
MAY contain cli arg mapping constructors
SHOULD provide a way to extend set of constructors before configuration loaded
MUST provide a way to configure logging using logging.dictConfig and values from merged configuration
runtime configuration path MAY be redefined with envvar (like $ CONFIG=./some-config.yml program.py)
runtime configuration path MAY be redefined with cli arg (like $ program.py --config=./some-config.yml)
SHOULD enable sharing of anchors between layers
SHOULD NOT allow to redefine anchors that alredy defined in previous layers
MUST support filesystem path as configuration path
MUST support file://, http(s):// urls as configuration path
MAY support ftp:// urls as configuration path
MAY support git:// urls as configuration path

REQUIREMENT NOTES

!class, !object, and !yamlfile are considered dangerous since class or object creation may require existing configuration that is not exists during constructor call. !yamlfile can refer !class or !object inside and/or cause infinte yaml load recursion or module load recursion.
!file and !socket are considered dangerous since they are not serializable

IMPLEMENTATION

provides <module>.<config> submodule that contains resulting configuration as mapping

???

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.