{ "info": { "author": "nihlaeth", "author_email": "info@nihlaeth.nl", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Documentation", "Topic :: Software Development :: Documentation", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: User Interfaces", "Topic :: Utilities" ], "description": "user_config\n===========\nManage user configuration for python projects.\n\nFor easy and well-documented user-defined configuration.\n\nLinks\n=====\n* home: https://github.com/nihlaeth/user_config\n* pypi: https://pypi.python.org/pypi/user-config\n* documentation: http://user-config.readthedocs.io/en/latest/\n\nBadges\n======\n* .. image:: https://readthedocs.org/projects/user-config/badge/?version=latest\n :target: http://user-config.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n* .. image:: https://travis-ci.org/nihlaeth/user_config.svg?branch=master\n :target: https://travis-ci.org/nihlaeth/user_config\n* .. image:: https://api.codacy.com/project/badge/Grade/bd13a0474ea44c8e8a95e10ef4d89585\n :target: https://www.codacy.com/app/nihlaeth/user_config?utm_source=github.com&utm_medium=referral&utm_content=nihlaeth/user_config&utm_campaign=Badge_Grade\n* .. image:: https://api.codacy.com/project/badge/Coverage/bd13a0474ea44c8e8a95e10ef4d89585\n :target: https://www.codacy.com/app/nihlaeth/user_config?utm_source=github.com&utm_medium=referral&utm_content=nihlaeth/user_config&utm_campaign=Badge_Coverage\n* .. image:: https://img.shields.io/github/tag/nihlaeth/user_config.svg\n :target: https://github.com/nihlaeth/user_config/releases\n* .. image:: https://img.shields.io/pypi/v/user_config.svg\n :target: https://pypi.python.org/pypi?:action=display&name=user-config\n* .. image:: https://img.shields.io/pypi/l/user_config.svg\n :target: https://pypi.python.org/pypi?:action=display&name=user-config\n* .. image:: https://img.shields.io/pypi/pyversions/user_config.svg\n :target: https://pypi.python.org/pypi?:action=display&name=user-config\n* .. image:: https://img.shields.io/pypi/status/user_config.svg\n :target: https://pypi.python.org/pypi?:action=display&name=user-config\n\nFallback order\n==============\n1. command line arguments\n2. user config files in ``~/.config//config.``\n3. global config files in ``/etc/xdg//config.``\n4. default values\n\nFor directories on operating systems than linux, see: https://github.com/ActiveState/appdirs\n\nConfig format\n=============\nSupported out of the box: ini\n\nOther config formats can be supported via plug-ins.\n\nRequirements\n============\n* Linux, or Os X, or Windows (but not Windows Vista)\n* python 2.7 or newer (python 3.6 supported)\n* relatively new versions of setuptools and pip (version requirement to follow)\n\nExamples\n========\n\nSimple configuration example\n----------------------------\n\n.. code-block:: python\n\n \"\"\"Usage example for user_config.\"\"\"\n from user_config import Config, Section, StringOption, IntegerOption\n\n class MyConfig(Config):\n\n \"\"\"This will be displayed in the configuration documentation.\"\"\"\n\n application = \"my_application\"\n author = \"me\"\n\n class GeneralSection(Section):\n \"\"\"General information.\"\"\"\n name = StringOption(\n doc=\"your name\",\n default=\"unknown person\")\n age = IntegerOption(\n doc=\"your age\",\n required=True)\n general = GeneralSection()\n class AddressSection(Section):\n \"\"\"shipping address\"\"\"\n street = StringOption(\n doc=\"street including house number\",\n required=True)\n city = StringOption(required=True)\n address = AddressSection(required=False)\n\n if __name__ == \"__main__\":\n CONFIG = MyConfig()\n print(\"hello there, {}!\".format(CONFIG.general.name))\n\nCommand line help text:\n\n.. code-block:: shell\n\n $ python examples/simple_example.py -h\n usage: my_application [-h] [--generate-config] [--city CITY] [--street STREET]\n [--age AGE] [--name NAME]\n\n This will be displayed in the configuration documentation. Command line\n arguments overwrite configuration found in:\n /root/.config/my_application/config.cfg /etc/xdg/my_application/config.cfg\n\n optional arguments:\n -h, --help show this help message and exit\n --generate-config print a complete configuration file with current settings\n --city CITY\n --street STREET street including house number\n --age AGE your age\n --name NAME your name\n\nCommand line use with default value:\n\n.. code-block:: shell\n\n $ python examples/simple_example.py --age 211\n hello there, unknown person!\n\nCommand line use without required value:\n\n.. code-block:: shell\n\n $ python examples/simple_example.py\n Traceback (most recent call last):\n File \"examples/simple_example.py\", line 29, in \n CONFIG = MyConfig()\n File \"/git/user_config/user_config/user_config/__init__.py\", line 622, in __init__\n self._elements[element].validate_data(self._data)\n File \"/git/user_config/user_config/user_config/__init__.py\", line 464, in validate_data\n self._elements[element].validate_data(self._data)\n File \"/git/user_config/user_config/user_config/__init__.py\", line 380, in validate_data\n self.element_name))\n user_config.MissingData: no value was provided for required option age\n\nCommand line use:\n\n.. code-block:: shell\n\n $ python examples/simple_example.py --age 211 --name mystery_user\n hello there, mystery_user!\n\nGenerate configuration file:\n\n.. code-block:: shell\n\n $ python examples/simple_example.py --generate-config\n ## This will be displayed in the configuration documentation.\n\n [general]\n ## General information.\n\n ## your name\n # name = unknown person\n name = tamara\n\n ## your age\n ## REQUIRED\n # age = \n age = \n\n\n [address]\n ## shipping address\n ## OPTIONAL_SECTION\n\n ## street including house number\n ## REQUIRED\n # street = \n street = \n\n ## REQUIRED\n # city = \n city = \n\n\nDocumentation\n=============\n\n.. code-block:: shell\n\n $ pip install -e \".[doc]\"\n $ python setup.py build_sphinx\n\nTesting\n=======\n\n* pytest\n* pytest-cov\n* coverage\n* codacy-coverage\n\n.. code-block:: shell\n\n $ python -m pytest --cov=user_config --cov-report xml\n\nPlanned features\n================\n* multi matching sections / wildcard sections\n* yaml config format\n* json config format\n* hook for overwriting config from database or other storage function\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/nihlaeth/user_config", "keywords": "configuration config documentation ui ini", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "user-config", "package_url": "https://pypi.org/project/user-config/", "platform": "", "project_url": "https://pypi.org/project/user-config/", "project_urls": { "Homepage": "https://github.com/nihlaeth/user_config" }, "release_url": "https://pypi.org/project/user-config/1.0a10/", "requires_dist": [ "appdirs (>=1.4)", "pathlib; python_version <= \"3.3\"", "codacy-coverage; extra == 'deploy'", "coverage; extra == 'deploy'", "pytest; extra == 'deploy'", "pytest-cov; extra == 'deploy'", "twine (>=1.8.1); extra == 'deploy'", "wheel; extra == 'deploy'", "collective.checkdocs; extra == 'doc'", "sphinx (>=1.3.1); extra == 'doc'", "sphinx-pypi-upload; extra == 'doc'", "sphinx-rtd-theme; extra == 'doc'", "sphinx (>=1.3.1); extra == 'doctest'" ], "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "summary": "manage user configuration for python packages", "version": "1.0a10" }, "last_serial": 2756006, "releases": { "1.0a10": [ { "comment_text": "", "digests": { "md5": "afedc9eb47b4e1e41b97e2dad734c60a", "sha256": "31e1219e0db112627bcf561676f05578ce168d96429f61891850261bef851234" }, "downloads": -1, "filename": "user_config-1.0a10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "afedc9eb47b4e1e41b97e2dad734c60a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 13782, "upload_time": "2017-04-05T20:29:29", "url": "https://files.pythonhosted.org/packages/2b/88/1eb3baaf0ad10a1ce99f9be094228d3c097b289a13d22dc0e432e4d23768/user_config-1.0a10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b46078929152464e567c46c9f6df2d33", "sha256": "fad55ef57d0970bdcb9601bd0b20736b6a78973acd55b9d4abda03631f6d2407" }, "downloads": -1, "filename": "user_config-1.0a10.tar.gz", "has_sig": false, "md5_digest": "b46078929152464e567c46c9f6df2d33", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 17926, "upload_time": "2017-04-05T20:29:30", "url": "https://files.pythonhosted.org/packages/7f/6e/f078de405c7a0a3e19f831e893f991fb4165a1700726af33cab9729c3998/user_config-1.0a10.tar.gz" } ], "1.0a4": [ { "comment_text": "", "digests": { "md5": "d634fd130394c73a050286101970eb89", "sha256": "6a7ac1d109ae2c10a3a7c873088f70d2885aa2b8336e4f50f0a030a8d5562e2c" }, "downloads": -1, "filename": "user_config-1.0a4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d634fd130394c73a050286101970eb89", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 11315, "upload_time": "2017-02-11T21:06:49", "url": "https://files.pythonhosted.org/packages/22/be/d5ea41a36415df64d86eb24160c97619275b6531c85465355ddbc5d8d6dc/user_config-1.0a4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c783fd541f990060ce1dab0a1a2a6c2", "sha256": "b4511526c7e251e6ddc1feaa337365b899d69e8dafc428298e5202a0f6dcdab9" }, "downloads": -1, "filename": "user_config-1.0a4.tar.gz", "has_sig": false, "md5_digest": "2c783fd541f990060ce1dab0a1a2a6c2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 406079, "upload_time": "2017-02-11T21:07:12", "url": "https://files.pythonhosted.org/packages/ea/66/562cdc9bf13a8bf8fe9e1b68531195e07bcf4578ea23a03718de56dad794/user_config-1.0a4.tar.gz" } ], "1.0a5": [ { "comment_text": "", "digests": { "md5": "d88df62344cc44c227ea90e7afdbaa08", "sha256": "f9d33545fd5abcf150b61bfb3b99f64a311f8760f5c7f5a9e46a487190e28cb0" }, "downloads": -1, "filename": "user_config-1.0a5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d88df62344cc44c227ea90e7afdbaa08", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 12538, "upload_time": "2017-02-15T16:20:10", "url": "https://files.pythonhosted.org/packages/62/79/1253a4be75107c0e600f98f34c8fecef761eff3f4d1794286e7993e76900/user_config-1.0a5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d9a15f683a736012c29ad423d6a6b4a", "sha256": "f4844cba51b9b8b19820be31d2d0513dd4cfae95bad297f9248361e8368e7753" }, "downloads": -1, "filename": "user_config-1.0a5.tar.gz", "has_sig": false, "md5_digest": "5d9a15f683a736012c29ad423d6a6b4a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 1085253, "upload_time": "2017-02-15T16:20:35", "url": "https://files.pythonhosted.org/packages/54/f7/802c2f6b7f566ee54658aaa4b368e274677e79548184a7628a79fe305dd3/user_config-1.0a5.tar.gz" } ], "1.0a6.post37": [ { "comment_text": "", "digests": { "md5": "6057c58d9de0470a0460e61752865c37", "sha256": "ccbeb39d88a01e6fb14faa852d188fc508483c4d7c8d4b4a29e21dacedfab982" }, "downloads": -1, "filename": "user_config-1.0a6.post37-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6057c58d9de0470a0460e61752865c37", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 13691, "upload_time": "2017-02-26T15:24:39", "url": "https://files.pythonhosted.org/packages/cc/f7/d27c8de2edf171883c82c1e2e4ed5ac1a70dd7a1ef79c7ddcf9424ee40d7/user_config-1.0a6.post37-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "380e1a2b899c8609a63f46c3b7dbefbf", "sha256": "1dd82f5af09ef131d3caf8fe76c0f66a4b9b7fe2ceb09f019635773739ebc208" }, "downloads": -1, "filename": "user_config-1.0a6.post37.tar.gz", "has_sig": false, "md5_digest": "380e1a2b899c8609a63f46c3b7dbefbf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 1086782, "upload_time": "2017-02-26T15:24:45", "url": "https://files.pythonhosted.org/packages/4c/83/aa33469cd010fb7152d43274513cc603613c396e4c925ce1c000f9e2afb0/user_config-1.0a6.post37.tar.gz" } ], "1.0a7": [ { "comment_text": "", "digests": { "md5": "92a9b89ea7bc8de2bd231bc8d3f38710", "sha256": "fd7246147e0cdfe9faaf3c377d876919aeabd078606d627fc5530d48c294d867" }, "downloads": -1, "filename": "user_config-1.0a7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "92a9b89ea7bc8de2bd231bc8d3f38710", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 13576, "upload_time": "2017-02-26T15:46:49", "url": "https://files.pythonhosted.org/packages/48/69/faafb6d8210c83b368383c11ca10466d08c89bfa4ee00cb4fc264aeeb310/user_config-1.0a7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "345d047743ca19bab8cd544254e7a24f", "sha256": "510f24aed195daa01adc0440809baff08641d8be96d59e2480381e19747feb57" }, "downloads": -1, "filename": "user_config-1.0a7.tar.gz", "has_sig": false, "md5_digest": "345d047743ca19bab8cd544254e7a24f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 1086673, "upload_time": "2017-02-26T15:46:56", "url": "https://files.pythonhosted.org/packages/33/4b/1574aa3fb2feaa42e6b1862598a9ea1c91e498ae5d97eea9a4071b6ab79c/user_config-1.0a7.tar.gz" } ], "1.0a8": [ { "comment_text": "", "digests": { "md5": "6ba57899f9864edad4bacac8a1c5d0e4", "sha256": "9c7c2b1337a308660a519d68e114d442e1e48d4d1550af954d0b50bc60ca2a42" }, "downloads": -1, "filename": "user_config-1.0a8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6ba57899f9864edad4bacac8a1c5d0e4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 13553, "upload_time": "2017-02-26T16:05:40", "url": "https://files.pythonhosted.org/packages/72/6a/1b538f80a3673a61f4e503fbcedde3f1179c008038cae0ff3494e3ef3535/user_config-1.0a8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54418b46772741c6cb73de4a13fb8f9a", "sha256": "57c0052e03378a3b4111eb97a129567fb08b7d98fa13c4da6877fc0f6937310e" }, "downloads": -1, "filename": "user_config-1.0a8.tar.gz", "has_sig": false, "md5_digest": "54418b46772741c6cb73de4a13fb8f9a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 17735, "upload_time": "2017-02-26T16:05:41", "url": "https://files.pythonhosted.org/packages/4a/10/e7a3e1e25ef2c9e5cb66e90c5641a4dd79aa9acf0c2639416c2309bcf397/user_config-1.0a8.tar.gz" } ], "1.0a9": [ { "comment_text": "", "digests": { "md5": "57375626aac464f7f0332ddf9ceecfa5", "sha256": "ffd172b3cf884ff4048950b760c21bd139305f96581164b57d6dd5403ec015c9" }, "downloads": -1, "filename": "user_config-1.0a9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "57375626aac464f7f0332ddf9ceecfa5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 13761, "upload_time": "2017-04-05T16:56:59", "url": "https://files.pythonhosted.org/packages/16/5e/39887e143fec56b3b2bdb5dbacc9867f920ec4fe3f391fe25a42fd0c1f1e/user_config-1.0a9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27e7ce032ceb033295b9c226990703dc", "sha256": "4b5d6ce7b5719fb130fa9a4dddb704f7379047485b8ad8482508943744ee2ee3" }, "downloads": -1, "filename": "user_config-1.0a9.tar.gz", "has_sig": false, "md5_digest": "27e7ce032ceb033295b9c226990703dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 17914, "upload_time": "2017-04-05T16:57:00", "url": "https://files.pythonhosted.org/packages/98/50/7eb8118d191a6cd06b56afbccd55dac2b365e6d1da7e468b88c446332142/user_config-1.0a9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "afedc9eb47b4e1e41b97e2dad734c60a", "sha256": "31e1219e0db112627bcf561676f05578ce168d96429f61891850261bef851234" }, "downloads": -1, "filename": "user_config-1.0a10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "afedc9eb47b4e1e41b97e2dad734c60a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 13782, "upload_time": "2017-04-05T20:29:29", "url": "https://files.pythonhosted.org/packages/2b/88/1eb3baaf0ad10a1ce99f9be094228d3c097b289a13d22dc0e432e4d23768/user_config-1.0a10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b46078929152464e567c46c9f6df2d33", "sha256": "fad55ef57d0970bdcb9601bd0b20736b6a78973acd55b9d4abda03631f6d2407" }, "downloads": -1, "filename": "user_config-1.0a10.tar.gz", "has_sig": false, "md5_digest": "b46078929152464e567c46c9f6df2d33", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*", "size": 17926, "upload_time": "2017-04-05T20:29:30", "url": "https://files.pythonhosted.org/packages/7f/6e/f078de405c7a0a3e19f831e893f991fb4165a1700726af33cab9729c3998/user_config-1.0a10.tar.gz" } ] }