{ "info": { "author": "Gaetan Semet", "author_email": "gaetan@xeberon.net", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "=====================================\ncfgtree - App Configuration made easy\n=====================================\n\n.. image:: https://travis-ci.org/gsemet/cfgtree.svg?branch=master\n :target: https://travis-ci.org/gsemet/cfgtree\n.. image:: https://readthedocs.org/projects/cfgtree/badge/?version=latest\n :target: http://cfgtree.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n.. image:: https://coveralls.io/repos/github/gsemet/cfgtree/badge.svg\n :target: https://coveralls.io/github/gsemet/cfgtree\n.. image:: https://badge.fury.io/py/cfgtree.svg\n :target: https://pypi.python.org/pypi/cfgtree/\n :alt: Pypi package\n.. image:: https://img.shields.io/badge/license-MIT-blue.svg\n :target: ./LICENSE\n :alt: MIT licensed\n\n* Free software: MIT\n* Documentation: https://cfgtree.readthedocs.org/en/latest/\n* Source: https://github.com/gsemet/cfgtree\n\n\nDescription\n===========\n\nThis package provides an easy yet comprehensive way of describing, storing, parsing, modifying\nuser configuration for a modern application.\n\nIt requires the following acknolegdments:\n\n- Application settings are stored in a hierarchical structure, they can be organized into\n group of settings, subgroups, and they entierely depends on the application itself.\n\n This structure is called in cfgtree a \"bare configuration\", or \"configuration tree\", and is\n described by a \"model\".\n\n- User settings may come from different inputs:\n\n - environment variables (\"12-factors\" approach). Example: ``MYAPP_VERBOSE``.\n - command line argument. Example: ``--verbose``\n - configuration storage such as file (json, yaml, ini) or configuration server. Example:\n\n .. code-block:: javascript\n\n {\n \"verbose\": true\n {\n\nThis allows you to define once your settings structure, and let the user of your application define\nthe settings throught different ways. For instance, your application can read some settings through\ncommand line arguments, which is very useful for containerization of your application. It is indeed\nrecommended by `Heroku's 12 Factor Good Practices `_.\n\nDescribing your configuration through a model also allows to have a configuration validator without\nhaving to maintain both a file schema (ex: JSON Schema) and the parsing logic code.\n\nAccess to settings\n------------------\n\nIn your application, an xpath-like syntax allows you to reach any item of the configuration:\n``cfg.get_cfg_value(\"key1.key2.key3.item\")``.\n\nTo modify a key configuration, use ``cfg.set_cfg_value(\"key1.key2.key3.item\", \"new_value\")``. File\nis actually written on call of ``cfg.save_configuration()`` or automatically when autosave is set.\n\nSee the documentation for full explanation.\n\n\nSimilar opensource projects\n===========================\n\n* Openstack's `Olso.config `_\n\n\nDocumentation\n=============\n\nFull documentation is provided on `ReadTheDocs `_.\n\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gsemet/cfgtree", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "cfgtree", "package_url": "https://pypi.org/project/cfgtree/", "platform": "", "project_url": "https://pypi.org/project/cfgtree/", "project_urls": { "Homepage": "https://github.com/gsemet/cfgtree" }, "release_url": "https://pypi.org/project/cfgtree/1.1.1/", "requires_dist": [ "anyconfig", "jsonschema", "pbr (>=3.0)" ], "requires_python": "", "summary": "Automatic configuration file, command line, environment variable parser", "version": "1.1.1" }, "last_serial": 3533033, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "22280dee808a2020fe31b2331a13f2a2", "sha256": "f61e6668fd5e148a6f7423379ae9badaba07e2f890eb5bcb3d9f2d1b66e03c0b" }, "downloads": -1, "filename": "cfgtree-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "22280dee808a2020fe31b2331a13f2a2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12995, "upload_time": "2018-01-06T10:11:13", "url": "https://files.pythonhosted.org/packages/d8/5f/0ad546c4a5a242e439114208978d065a3d3ae7aaf2d1147cb575209c3654/cfgtree-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31e34892d57163a1ca92fdaabedeeca4", "sha256": "ef04550bc62fef9e960c57d5e9872af5598a82e1410d79438c83652725b9d4aa" }, "downloads": -1, "filename": "cfgtree-0.1.0.tar.gz", "has_sig": false, "md5_digest": "31e34892d57163a1ca92fdaabedeeca4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20801, "upload_time": "2018-01-06T10:11:14", "url": "https://files.pythonhosted.org/packages/25/cd/2828670379793deb32e3e8d650fc0a8606447e023d96b8698338e3780827/cfgtree-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "aa1452932a39f23afb8b0d703c792e8f", "sha256": "f73d18aa0177a1a7f5b4fc23d324dff029f4dfc84b3cc1af385268543ae03a87" }, "downloads": -1, "filename": "cfgtree-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aa1452932a39f23afb8b0d703c792e8f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14136, "upload_time": "2018-01-07T08:49:08", "url": "https://files.pythonhosted.org/packages/94/fd/9b89b361ebcb1f55389bf89d6455feab3da0c08729aaf1f04286cc87618c/cfgtree-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9294f7beefbbacadbdd2965c61843b0", "sha256": "d40632009dc7ae56c1a1f79a121ec0b226d1a0918ec7fb0a1d0b61d37de470c6" }, "downloads": -1, "filename": "cfgtree-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c9294f7beefbbacadbdd2965c61843b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24238, "upload_time": "2018-01-07T08:49:09", "url": "https://files.pythonhosted.org/packages/88/c1/03d3d1864825fdf0c32591519483193f6da10a14a07fd4dda8124b20caa1/cfgtree-0.1.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "fe792439518d3674f2a2f6754b868687", "sha256": "9034f5872e730f2b497cb0901e38bf3936187fc03159dc466cdf6622b10def31" }, "downloads": -1, "filename": "cfgtree-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe792439518d3674f2a2f6754b868687", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18607, "upload_time": "2018-01-27T17:46:48", "url": "https://files.pythonhosted.org/packages/8e/1e/e79d1c1b50620c681992d8914afe9b540becb4b3bbe886cd5f6ce2410cfc/cfgtree-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa6297685ee2bd377f1a0e8c6ce6340d", "sha256": "641968b2307cfd1e66b7b52717adf1d9e55042e8ee386c1697ca29906a081900" }, "downloads": -1, "filename": "cfgtree-1.0.0.tar.gz", "has_sig": false, "md5_digest": "aa6297685ee2bd377f1a0e8c6ce6340d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21184, "upload_time": "2018-01-27T17:46:50", "url": "https://files.pythonhosted.org/packages/16/fa/9cd00c80e88dfb43aeb16314cb6965c4e7d0cae6caab8f9a3efa5bdc4587/cfgtree-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "5206cc5f4a200d3dd59320225b54b6b5", "sha256": "ef948735ba9e65b29a4b0c9a7db7b14d8c3c931cf66c12cb6f996686b034f7dc" }, "downloads": -1, "filename": "cfgtree-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5206cc5f4a200d3dd59320225b54b6b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18619, "upload_time": "2018-01-27T18:56:47", "url": "https://files.pythonhosted.org/packages/94/19/07f7407243b528b9fd8eb44aca5fc9d1483a33214d80ca8cc3b7c107b0e7/cfgtree-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "edf35443d65b8fbdd1e26311fd66c53a", "sha256": "ea0a10b1a986d0a250bd29b76a636d9fa1ac12d9988101093b67172afc9e6fe2" }, "downloads": -1, "filename": "cfgtree-1.0.1.tar.gz", "has_sig": false, "md5_digest": "edf35443d65b8fbdd1e26311fd66c53a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21231, "upload_time": "2018-01-27T18:56:49", "url": "https://files.pythonhosted.org/packages/f0/8a/692765ef27107407a4d64fb287355dd91b591adc39a31a9729240bf8e9ef/cfgtree-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "559ad96299f7b90a951449c689d9e851", "sha256": "2e3a76f02117ba991bc819de2d2d0121b767a303204d85a8844c2d3e82c55edd" }, "downloads": -1, "filename": "cfgtree-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "559ad96299f7b90a951449c689d9e851", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24575, "upload_time": "2018-01-28T17:36:13", "url": "https://files.pythonhosted.org/packages/d4/91/d3b6a08e2b1a85cd3d1f6db423e9ffa66c0515609ae491e2deaf2148bf91/cfgtree-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2a89431b8178ac5ca5c785dda194b78", "sha256": "9346692202269b4df734f374e8e4feb80e3edecb496ab453d417c0263d87d61c" }, "downloads": -1, "filename": "cfgtree-1.1.0.tar.gz", "has_sig": false, "md5_digest": "c2a89431b8178ac5ca5c785dda194b78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22619, "upload_time": "2018-01-28T17:36:15", "url": "https://files.pythonhosted.org/packages/54/bf/c5ffd03c413be539fdc2151f58bfbed373f14c7ea9b2ce5b46559f8726a9/cfgtree-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "fa8f812b4ad308dc46f706ca8a1785a6", "sha256": "cf3ab88d9615bbc1645ef2864242eaffeb33a8e158a5b44424bafd009fd93469" }, "downloads": -1, "filename": "cfgtree-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa8f812b4ad308dc46f706ca8a1785a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23615, "upload_time": "2018-01-29T22:26:39", "url": "https://files.pythonhosted.org/packages/79/78/3b47b86e00abafeb3f1bfdb3809be4b3aaae3b688cfb691d960d30b30a8b/cfgtree-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b39735ddd388b2a458a2c4bae888369", "sha256": "83a2b1e9156716b1f4752abf314f63fd54ce7cebae0facff950f1fb08ff53ad0" }, "downloads": -1, "filename": "cfgtree-1.1.1.tar.gz", "has_sig": false, "md5_digest": "0b39735ddd388b2a458a2c4bae888369", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21652, "upload_time": "2018-01-29T22:26:43", "url": "https://files.pythonhosted.org/packages/df/03/77463d611a4a690888db2d44855c3e0fb4eb3dcb6884932436fcef6e21f4/cfgtree-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fa8f812b4ad308dc46f706ca8a1785a6", "sha256": "cf3ab88d9615bbc1645ef2864242eaffeb33a8e158a5b44424bafd009fd93469" }, "downloads": -1, "filename": "cfgtree-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa8f812b4ad308dc46f706ca8a1785a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23615, "upload_time": "2018-01-29T22:26:39", "url": "https://files.pythonhosted.org/packages/79/78/3b47b86e00abafeb3f1bfdb3809be4b3aaae3b688cfb691d960d30b30a8b/cfgtree-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b39735ddd388b2a458a2c4bae888369", "sha256": "83a2b1e9156716b1f4752abf314f63fd54ce7cebae0facff950f1fb08ff53ad0" }, "downloads": -1, "filename": "cfgtree-1.1.1.tar.gz", "has_sig": false, "md5_digest": "0b39735ddd388b2a458a2c4bae888369", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21652, "upload_time": "2018-01-29T22:26:43", "url": "https://files.pythonhosted.org/packages/df/03/77463d611a4a690888db2d44855c3e0fb4eb3dcb6884932436fcef6e21f4/cfgtree-1.1.1.tar.gz" } ] }