{ "info": { "author": "Rasmus Einarsson", "author_email": "mr@rasmuseinarsson.se", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# yaconf\n\nyet another Python configuration library\n\n## Features\n\nNo frills, no fuss:\n\n* Python 3.6+ and no external dependencies.\n* Single file implementation: Import the package or just copy `yaconf.py` into your project.\n* Use any configuration source: any function that returns a `dict` will do.\n* Reads JSON files by default, but `configparser` or any other parser can be dropped in with a keyword argument.\n* Hierarchical configuration: Look for configuration keys in one config source after another, e.g.,\n - first check `.myappconf` file,\n - then `~/.config/myapp/.myappconf`,\n - finally fall back on defaults.\n* Sane defaults for config file paths:\n - `~/.config/myapp/.myappconf` on Linux and MacOS\n - `%LOCALAPPDATA%\\myapp\\.myappconf` on Windows\n* Optionally register a modifier function to arbitrarily change values after loading (e.g., change datatypes, check consistency, etc).\n\n## Examples\n\n### Basic setup\n\n```python\nimport yaconf\n\nconf = yaconf.get_file_reader('myapp')\nconf.load()\n\n# reading from .myappconf if available, then ~/.config/myapp/.myappconf\nconf['ready to go']\nconf.get('ready to go', default='fallback')\n```\n\n### Add more configuration sources\n\n```python\ndef get_default_config():\n return {'i': 123, 'b': 'default string'}\n\n# Add this configuration with lowest priority\nconf.loaders.append(get_default_config)\n\ndef get_top_priority_config():\n return {'b': 'other string'}\n\n# And this one with highest priority\nconf.loaders.push(get_top_priority_config)\n\n# To include the new configuration source\nconf.load()\nassert conf['i'] == 123\nassert conf['b'] == 'other string'\n\n```\n\n### The ConfigReader is a Mapping\n\n```python\nassert dict(conf) == {'i': 123, 'b': 'other string'}\n```\n\n\n### Add a modify function\n\n```python\ndef modify(d):\n d['i'] += 3\n del d['b']\n d['x'] = 'new'\n\nconf.modify = modify\nconf.load()\n\nassert dict(conf) == {'i': 126, 'x': 'new'}\n```\n\n## License\n\nFree software: MIT license\n\n## Credits\n\nThis package was created with [Cookiecutter][1] and the [`audreyr/cookiecutter-pypackage`][2] project template.\n\n[1]: https://github.com/audreyr/cookiecutter\n[2]: https://github.com/audreyr/cookiecutter-pypackage\n\n\n=======\nHistory\n=======\n\n\n0.2.0 (2019-04-10)\n------------------\n\n* Allow for a modify function to be added to ConfigReader.\n* Remove the levels property on ConfigReader.\n* Make ConfigReader follow the Mapping protocol.\n* Rename Decoder -> Parser.\n\n0.1.0 (2019-04-09)\n------------------\n\n* First release on PyPI.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rasmuse/yaconf", "keywords": "yaconf", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "yaconf", "package_url": "https://pypi.org/project/yaconf/", "platform": "", "project_url": "https://pypi.org/project/yaconf/", "project_urls": { "Homepage": "https://github.com/rasmuse/yaconf" }, "release_url": "https://pypi.org/project/yaconf/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "Yet another configuration library", "version": "0.2.0" }, "last_serial": 5121586, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "5a85ee430608a8de673ebfd3a5f9da54", "sha256": "14c97694d56a206bdd4c4d01991df816408838c9cf0eac26cbd66e61d6a6f154" }, "downloads": -1, "filename": "yaconf-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5a85ee430608a8de673ebfd3a5f9da54", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4656, "upload_time": "2019-04-09T20:08:25", "url": "https://files.pythonhosted.org/packages/3e/0f/f691756a0971dbff6d595a719c6255c1ec26d288082dfde62c046b3da7db/yaconf-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ea22f3813da6eda95dfa4b56ef9b913", "sha256": "f70802083f12400aabf7f43d7c8187086f13f6fdce8fa57a4d3041177a33fd7d" }, "downloads": -1, "filename": "yaconf-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1ea22f3813da6eda95dfa4b56ef9b913", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9573, "upload_time": "2019-04-09T20:08:27", "url": "https://files.pythonhosted.org/packages/73/47/af5def8496d8dea171cf3a3fedab8dfe226298cd5de45e1e7189f49c79ee/yaconf-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a95a31abf7954031c0c7cb936959fc71", "sha256": "5f15f65d89b0ae19766fa85386f3d3eec304cf0036bc1d8d0edb36a53c637df3" }, "downloads": -1, "filename": "yaconf-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a95a31abf7954031c0c7cb936959fc71", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4900, "upload_time": "2019-04-10T01:10:19", "url": "https://files.pythonhosted.org/packages/96/b2/304b97ab527978517aa5ac4bfd63258db264032e8b263dbb56f0218df2a9/yaconf-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d72de6cd84421b463a11697d15662bff", "sha256": "120852eb5f67cee683c059646c52ff21eb769a3183e609b0d1155347f3154369" }, "downloads": -1, "filename": "yaconf-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d72de6cd84421b463a11697d15662bff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9936, "upload_time": "2019-04-10T01:10:20", "url": "https://files.pythonhosted.org/packages/fb/8a/6368d1b522bad3190f12141c0702d5145395e1ca72cb561533b2a0e05e62/yaconf-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a95a31abf7954031c0c7cb936959fc71", "sha256": "5f15f65d89b0ae19766fa85386f3d3eec304cf0036bc1d8d0edb36a53c637df3" }, "downloads": -1, "filename": "yaconf-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a95a31abf7954031c0c7cb936959fc71", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4900, "upload_time": "2019-04-10T01:10:19", "url": "https://files.pythonhosted.org/packages/96/b2/304b97ab527978517aa5ac4bfd63258db264032e8b263dbb56f0218df2a9/yaconf-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d72de6cd84421b463a11697d15662bff", "sha256": "120852eb5f67cee683c059646c52ff21eb769a3183e609b0d1155347f3154369" }, "downloads": -1, "filename": "yaconf-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d72de6cd84421b463a11697d15662bff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9936, "upload_time": "2019-04-10T01:10:20", "url": "https://files.pythonhosted.org/packages/fb/8a/6368d1b522bad3190f12141c0702d5145395e1ca72cb561533b2a0e05e62/yaconf-0.2.0.tar.gz" } ] }