{ "info": { "author": "Scott Colby", "author_email": "scolby33@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Utilities" ], "description": "easy_config |python_versions| |license| |develop_build| |develop_coverage|\n==========================================================================\n\n.. |python_versions| image:: https://img.shields.io/badge/python->%3D3.6-blue.svg?style=flat-square\n :alt: Supports Python 3.6 and later\n.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\n :target: LICENSE.rst\n :alt: MIT License\n.. |develop_build| image:: https://img.shields.io/travis/com/scolby33/easy_config/develop.svg?style=flat-square\n :target: https://travis-ci.com/scolby33/easy_config\n :alt: Develop Build Status\n.. |develop_coverage| image:: https://img.shields.io/codecov/c/github/scolby33/easy_config/develop.svg?style=flat-square\n :target: https://codecov.io/gh/scolby33/easy_config/branch/develop\n :alt: Develop Test Coverage\n\nExample\n-------\n\nHere is a full working example of using easy_config. First, write your configuration class:\n\n.. code-block:: python\n\n # config.py\n from easy_config import EasyConfig\n\n class MyProgramConfig(EasyConfig):\n FILES = ['myprogram.ini']\n NAME = 'MyProgram' # the name for the .ini file section and the namespace prefix for environment variables\n\n # define the options like you would a dataclass\n number: int\n name: str\n check_bounds: bool = True # options with defaults must all come after non-default options\n\nA sample configuration file:\n\n.. code-block:: ini\n\n # myprogram.ini\n [MyProgram]\n # section name matches `NAME` from the configuration class\n number = 3\n\nAnd a sample program to illustrate the usage:\n\n.. code-block:: python\n\n # test_config.py\n import sys\n\n from config import MyProgramConfig\n\n print(MyProgramConfig.load(name=sys.argv[1])\n\nRunning this program with various options:\n\n.. code-block:: bash\n\n $ python test_config.py Scott\n MyProgramConfig(number=3, name='Scott', check_bounds=True)\n\n $ env MYPROGRAM_CHECK_BOUNDS=False python test_config.py Scott\n # environment variable names are the all-uppercase transformation of the NAME concatenated with the option name and an underscore\n MyProgramConfig(number=3, name='Scott', check_bounds=False)\n\n $ env MYPROGRAM_NUMBER=10 MYPROGRAM_NAME=Charlie python test_config.py Scott\n MyProgramConfig(number=10, name='Scott', check_bounds=True)\n\nAs you can see, values are taken in precedence, with arguments passed to ``load`` overriding values from the environment which, in turn, override values from configuration files.\n\nOnce you have the ``MyProgramConfig`` instance, you can use it just like any dataclass.\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/scolby33/easy_config/releases", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/scolby33/easy_config", "keywords": "configuration,config,configuration management", "license": "MIT", "maintainer": "scolby33@gmail.com", "maintainer_email": "scolby33@gmail.com", "name": "easy-config", "package_url": "https://pypi.org/project/easy-config/", "platform": "", "project_url": "https://pypi.org/project/easy-config/", "project_urls": { "Bug Tracker": "https://github.com/scolby33/easy_config/issues", "Download": "https://github.com/scolby33/easy_config/releases", "Homepage": "https://github.com/scolby33/easy_config", "Source Code": "https://github.com/scolby33/easy_config" }, "release_url": "https://pypi.org/project/easy-config/0.2.0/", "requires_dist": [ "dataclasses; python_version < \"3.7\"", "click; extra == 'contrib_click'" ], "requires_python": ">=3.6", "summary": "Parse configuration values from files, the environment, and elsewhere all in one place.", "version": "0.2.0" }, "last_serial": 4311806, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "eebd63e6f75fb8b0a31510da89a748f7", "sha256": "a2678968b172ae7beb6dbd9c256c9e4e601c43c358e63f4f01d74fd9cb5daf91" }, "downloads": -1, "filename": "easy_config-0.1.0-py36-none-any.whl", "has_sig": false, "md5_digest": "eebd63e6f75fb8b0a31510da89a748f7", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": ">=3.6", "size": 6187, "upload_time": "2018-09-25T20:00:05", "url": "https://files.pythonhosted.org/packages/69/b7/bdd6c6c28649321ce245b2c592523fc5cbff973107e1786d0e1691a98d97/easy_config-0.1.0-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d906289326a217bb1bafb454e6753887", "sha256": "dd64766eaa989b7bb4d8d497ce6d14aabd7601a1fb53c2526f51fd03fad931fd" }, "downloads": -1, "filename": "easy_config-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d906289326a217bb1bafb454e6753887", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9792, "upload_time": "2018-09-25T20:00:07", "url": "https://files.pythonhosted.org/packages/b2/46/f4dbaae360f1f21b24e247edd3320563ad356265d3e5ef4f2bba0b5096e5/easy_config-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "8ab7505408b27b44f5093f4a4d722846", "sha256": "6571155bce0c3875a0c410b994f16e03e65a7dcb866606d1df2531dfa93284d6" }, "downloads": -1, "filename": "easy_config-0.2.0-py36-none-any.whl", "has_sig": false, "md5_digest": "8ab7505408b27b44f5093f4a4d722846", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": ">=3.6", "size": 7157, "upload_time": "2018-09-26T09:52:47", "url": "https://files.pythonhosted.org/packages/be/8a/121dc8a5a5e805f68b988c14e1278211b75eb2b46f39b9447f309081f9cb/easy_config-0.2.0-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a9b83e74f87a470feca28cd105c49bf", "sha256": "8de3469b925c5c7f9426902520903f600466d0b648c373f82fce219730f3282b" }, "downloads": -1, "filename": "easy_config-0.2.0.tar.gz", "has_sig": false, "md5_digest": "4a9b83e74f87a470feca28cd105c49bf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11102, "upload_time": "2018-09-26T09:52:49", "url": "https://files.pythonhosted.org/packages/9d/a1/254f36f7876b8d41bf9493ff3a8a68befa51fdebb4b6862daa4135079845/easy_config-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8ab7505408b27b44f5093f4a4d722846", "sha256": "6571155bce0c3875a0c410b994f16e03e65a7dcb866606d1df2531dfa93284d6" }, "downloads": -1, "filename": "easy_config-0.2.0-py36-none-any.whl", "has_sig": false, "md5_digest": "8ab7505408b27b44f5093f4a4d722846", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": ">=3.6", "size": 7157, "upload_time": "2018-09-26T09:52:47", "url": "https://files.pythonhosted.org/packages/be/8a/121dc8a5a5e805f68b988c14e1278211b75eb2b46f39b9447f309081f9cb/easy_config-0.2.0-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a9b83e74f87a470feca28cd105c49bf", "sha256": "8de3469b925c5c7f9426902520903f600466d0b648c373f82fce219730f3282b" }, "downloads": -1, "filename": "easy_config-0.2.0.tar.gz", "has_sig": false, "md5_digest": "4a9b83e74f87a470feca28cd105c49bf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11102, "upload_time": "2018-09-26T09:52:49", "url": "https://files.pythonhosted.org/packages/9d/a1/254f36f7876b8d41bf9493ff3a8a68befa51fdebb4b6862daa4135079845/easy_config-0.2.0.tar.gz" } ] }