{ "info": { "author": "Denis Mishchishin", "author_email": "dennz78@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "[rfc2119 for keywords ](https://www.ietf.org/rfc/rfc2119.txt)\n\n# PURPOSE\n* to provide unified way to configure `python2` and `python3` application\n* to be handy for developers, devops, QA and users with technical background\n\n# READINGS\n* [yaml tutorial](https://pyyaml.org/wiki/PyYAMLDocumentation#tutorial)\n* http://yaml.org/spec/1.1/\n* **YAML IS NOT A JSON AND NOT A DATA SERIALIZATION FORMAT. ITS A OBJECT SERIALIZATION FORMAT**\n\n# REQUIREMENTS\n 1. **MUST** support yaml out of the box\n 1. **MUST** configure program (standalone module or python package) by recursive merge developer defined configuration (defaults) and runtime provided configuration.\n 1. each configuration layer (e.g. defaults, runtime config, etc.) **MUST** be a nested mapping\n 1. number of merged layers is unlimited and **MAY** be redefined by developer\n 1. layer merge order **MAY** be redefined by developer\n 1. **MUST** contain set of yaml [constructors](https://pyyaml.org/wiki/PyYAMLDocumentation#constructors-representers-resolvers)\n * `!url` \n * `!date`\n * `!datetime` \n * `!timedelta`\n * `!strjoin`\n * `!envvar` \n * `!regexp`\n * `!filecontent`\n 1. **SHOULD** contain set of dangerous yaml constructors\n * `!file`\n * `!socket`\n * `!yamlfile` - includes yaml by file path or url\n 1. **MAY** process constructors with recursion detection (see REQUIREMENT NOTES)\n 1. **MAY** contain cli arg mapping constructors\n 1. **SHOULD** provide a way to extend set of constructors before configuration loaded\n 1. **MUST** provide a way to configure logging using [`logging.dictConfig`](https://docs.python.org/3/library/logging.config.html?highlight=dictconfig) and values from merged configuration\n 1. runtime configuration path **MAY** be redefined with envvar (like `$ CONFIG=./some-config.yml program.py`)\n 1. runtime configuration path **MAY** be redefined with cli arg (like `$ program.py --config=./some-config.yml`)\n 1. **SHOULD** enable sharing of [anchors](https://pyyaml.org/wiki/PyYAMLDocumentation#aliases) between layers\n 1. **SHOULD** NOT allow to redefine anchors that alredy defined in previous layers\n 1. **MUST** support filesystem path as configuration path\n 1. **MUST** support `file://`, `http(s)://` urls as configuration path\n 1. **MAY** support `ftp://` urls as configuration path\n 1. **MAY** support `git://` urls as configuration path\n\n## REQUIREMENT NOTES\n\n * `!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.\n * `!file` and `!socket` are considered dangerous since they are not serializable\n\n# IMPLEMENTATION\n * provides `.` submodule that contains resulting configuration as mapping\n\n\n???", "description_content_type": "text/markdown; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://denz1.gitlab.io/devconfig", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "devconfig", "package_url": "https://pypi.org/project/devconfig/", "platform": "", "project_url": "https://pypi.org/project/devconfig/", "project_urls": { "Homepage": "https://denz1.gitlab.io/devconfig" }, "release_url": "https://pypi.org/project/devconfig/0.4.8/", "requires_dist": null, "requires_python": "", "summary": "Configuration handling for developers", "version": "0.4.8" }, "last_serial": 5795527, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "d2491fe18364341ac0104e9acb4c7d86", "sha256": "73a6faaa09474d57eb79e10943b516f813a6345c214aaf108c43daeca31183f7" }, "downloads": -1, "filename": "devconfig-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d2491fe18364341ac0104e9acb4c7d86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15948, "upload_time": "2018-04-02T18:07:33", "url": "https://files.pythonhosted.org/packages/cb/a8/bb3a099a63fc85defc69bbe9e9e6be2ad7eeb8acbd42cea006341423d335/devconfig-0.0.2.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "8cf0eba626560dcf346be328eb60c64a", "sha256": "067a22e0408bbc6eb8e6adc2d3160fd0b9d7fa9f4eb2f039d02cc1a8cb43f68c" }, "downloads": -1, "filename": "devconfig-0.3.1.tar.gz", "has_sig": false, "md5_digest": "8cf0eba626560dcf346be328eb60c64a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69253, "upload_time": "2018-04-12T11:09:33", "url": "https://files.pythonhosted.org/packages/30/07/8a9cf8d80c1a996fee6b1fa739ad0e85279cd1d19694f409b1d7fefc1ea3/devconfig-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "845e9dfe7473d73e80730a7a95659640", "sha256": "33646dcddfdd46acb7f01ed4a1fa5afe27d876c44b119a2cc934047f1b5c45db" }, "downloads": -1, "filename": "devconfig-0.3.2.tar.gz", "has_sig": false, "md5_digest": "845e9dfe7473d73e80730a7a95659640", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68475, "upload_time": "2018-04-17T10:34:40", "url": "https://files.pythonhosted.org/packages/6c/1f/4cefaefc5d86e14c9025669145cb7239220007f734231315af325a180ce6/devconfig-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "de45d9f9d277e2631841b5c59f6a593e", "sha256": "b82262b1a7837ff3b851cdaf5817dc3dbdcfc397003b4e008b4b694a5e694ff9" }, "downloads": -1, "filename": "devconfig-0.3.3.tar.gz", "has_sig": false, "md5_digest": "de45d9f9d277e2631841b5c59f6a593e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68598, "upload_time": "2018-04-18T08:44:20", "url": "https://files.pythonhosted.org/packages/1b/b6/edce4d6e92bed3adb252f992575caa78d6d3d12848e7430fdd48f9f74c2c/devconfig-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "948e791e4a41415e66873538ecbcfc2c", "sha256": "3453dc6899bc4e951c2eb7f6aba440010bcc663539581e007936eb305cc3db79" }, "downloads": -1, "filename": "devconfig-0.3.4.tar.gz", "has_sig": false, "md5_digest": "948e791e4a41415e66873538ecbcfc2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68933, "upload_time": "2018-04-18T12:45:18", "url": "https://files.pythonhosted.org/packages/58/fc/6c1bd81cba0f77349c60d41a2c45b09b898570be26a6f6318193e66383d4/devconfig-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "e73d6c87cc7eeffbe8f9ff5cb769283f", "sha256": "20196f353cb57b5dbb49d7ed0a8bf80b631ff1a46cca5230e588a8af87beb1e8" }, "downloads": -1, "filename": "devconfig-0.3.5.tar.gz", "has_sig": false, "md5_digest": "e73d6c87cc7eeffbe8f9ff5cb769283f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68685, "upload_time": "2018-10-25T17:06:38", "url": "https://files.pythonhosted.org/packages/12/f4/c666955766f792cbe9bb46af935ea0393a248709d6512daa4cef08f3b334/devconfig-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "b5aeaef793e3fc0ef9f56b86dfd67fa3", "sha256": "037ca6042046fb4f6e35a85b58f5f352c64e5c563d0b0e57af560902efb619bf" }, "downloads": -1, "filename": "devconfig-0.3.6.tar.gz", "has_sig": false, "md5_digest": "b5aeaef793e3fc0ef9f56b86dfd67fa3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18637, "upload_time": "2018-11-21T02:59:50", "url": "https://files.pythonhosted.org/packages/9f/65/7b9f4a58bf0567ae2491fe8d9ae5ad556ee12d373ad2e5560ef56b7a8289/devconfig-0.3.6.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "5548d7b06a1542c724fb73ce441e444a", "sha256": "8f5572849d3dd893f264d59a5dbec14f40d5e7455b632e1e1d74b33fb8422c62" }, "downloads": -1, "filename": "devconfig-0.4.0.tar.gz", "has_sig": false, "md5_digest": "5548d7b06a1542c724fb73ce441e444a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15659, "upload_time": "2018-12-04T15:10:03", "url": "https://files.pythonhosted.org/packages/e0/51/9152c6896e1510b6b949e9e1a3e266748117d115a3ce0ae9f44afc6d8a1a/devconfig-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "ac0ee56c5812dffc06e25a85af9942d5", "sha256": "5c5ffc6a754c720368f66783d369b1709dd7856aca1518f326e578b13d10d0b7" }, "downloads": -1, "filename": "devconfig-0.4.1.tar.gz", "has_sig": false, "md5_digest": "ac0ee56c5812dffc06e25a85af9942d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15727, "upload_time": "2018-12-04T16:11:08", "url": "https://files.pythonhosted.org/packages/0f/bb/7988568cbf0349ce9170d7c607148db87331ba86be29019c4554f7a00ff9/devconfig-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "b7c062db14a391029304b2cbb8af8090", "sha256": "0442b5075cdc26b4da73b6f70f15522d67a4ad690d77eeb4507ce4ec5a143861" }, "downloads": -1, "filename": "devconfig-0.4.2.tar.gz", "has_sig": false, "md5_digest": "b7c062db14a391029304b2cbb8af8090", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16291, "upload_time": "2018-12-10T18:49:17", "url": "https://files.pythonhosted.org/packages/9d/3a/cd01121d356777e6f2f4b6d3eac5464845a22610be1dc058b44dd5248198/devconfig-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "17e684fb59274fd01220964941249eb7", "sha256": "6f9316652106c2d0a839fff3cdc507316f08404f0a720204f9bba3130e8af937" }, "downloads": -1, "filename": "devconfig-0.4.3.tar.gz", "has_sig": false, "md5_digest": "17e684fb59274fd01220964941249eb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16498, "upload_time": "2018-12-13T17:39:09", "url": "https://files.pythonhosted.org/packages/b1/9a/576bc3c92088e44eef3cf1dc63bf7001e2c7acb71bdb2898bf5dcca72c48/devconfig-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "1e434a84a59d9e8a9f7fea476783a1a4", "sha256": "786b48dbe7836b18782b288da3cef781385e1412017fe5da1791680599185fa7" }, "downloads": -1, "filename": "devconfig-0.4.4.tar.gz", "has_sig": false, "md5_digest": "1e434a84a59d9e8a9f7fea476783a1a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20925, "upload_time": "2019-01-08T14:02:43", "url": "https://files.pythonhosted.org/packages/eb/54/ea10335189586bfa5a986256d8e454c227f1dc28eaa6773ec26062719d11/devconfig-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "345a5feef06e9e71f16e2d6798d6cca1", "sha256": "078ad4d394c5ffab327bea2e7a7f51d38644e073768b632d88042b31fb734d5d" }, "downloads": -1, "filename": "devconfig-0.4.5.tar.gz", "has_sig": false, "md5_digest": "345a5feef06e9e71f16e2d6798d6cca1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20995, "upload_time": "2019-03-14T12:38:10", "url": "https://files.pythonhosted.org/packages/38/21/4c90f6befcf426eb8829101680ad4af98e6c7b5c1e887416a58056597dee/devconfig-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "4c22c53924a7d0cb89f5755e31d4688f", "sha256": "11c3baec16f7dbbde1d1606425d4860d9a5ff23764683c7bb0a19219ee544ae8" }, "downloads": -1, "filename": "devconfig-0.4.6.tar.gz", "has_sig": false, "md5_digest": "4c22c53924a7d0cb89f5755e31d4688f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20993, "upload_time": "2019-04-03T12:54:55", "url": "https://files.pythonhosted.org/packages/c0/d2/f4ad39f67a5dc32ab14b7f1d31647382fe587a7de3fa3debbe16b05c54db/devconfig-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "37b9b1214b55b3602d602cba668afa26", "sha256": "4a4294891f6be564c7cd8732ed602ed86b2593d8443fb1a503d008534d589b2d" }, "downloads": -1, "filename": "devconfig-0.4.7.tar.gz", "has_sig": false, "md5_digest": "37b9b1214b55b3602d602cba668afa26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18928, "upload_time": "2019-08-13T20:19:35", "url": "https://files.pythonhosted.org/packages/bd/58/42a0b54344d04fa3dafdb8bd39542cad7c48f3e4875bfc39f0d168170527/devconfig-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "b2e33e80066c9bf8135f2fcb3bbcaa08", "sha256": "4eb067212f3736f542341d37b877452cc658fbfcbdc9301297d9d6451b9f309c" }, "downloads": -1, "filename": "devconfig-0.4.8.tar.gz", "has_sig": false, "md5_digest": "b2e33e80066c9bf8135f2fcb3bbcaa08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19108, "upload_time": "2019-08-16T14:56:49", "url": "https://files.pythonhosted.org/packages/9e/4a/a87ee48365b592aac5de6d3cfd58d78e2552c7cc601545795c32a41f2387/devconfig-0.4.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b2e33e80066c9bf8135f2fcb3bbcaa08", "sha256": "4eb067212f3736f542341d37b877452cc658fbfcbdc9301297d9d6451b9f309c" }, "downloads": -1, "filename": "devconfig-0.4.8.tar.gz", "has_sig": false, "md5_digest": "b2e33e80066c9bf8135f2fcb3bbcaa08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19108, "upload_time": "2019-08-16T14:56:49", "url": "https://files.pythonhosted.org/packages/9e/4a/a87ee48365b592aac5de6d3cfd58d78e2552c7cc601545795c32a41f2387/devconfig-0.4.8.tar.gz" } ] }