{ "info": { "author": "Sam Atkins", "author_email": "samatkins@outlook.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Manage Conf\n\n[![CircleCI](https://circleci.com/gh/sam-atkins/manageconf/tree/main.svg?style=svg)](https://circleci.com/gh/sam-atkins/manageconf/tree/main)\n\"Code\n\n## Description\n\nBuilds a config object based on environment variables, settings files and (optional) parameters stored in AWS System Manager Parameter Store.\n\nThe config object merges in config, overriding any previous key/value pairs, in the following order:\n\n- ENV\n- default config: default.json\n- stage config: {stage}.json\n- remote config: remote_settings (AWS param store)\n\nAvailable to download as a package on [PyPi](https://pypi.org/project/manageconf/).\n\n### Settings Files\n\nSet an environment variable with the key name `project_config_dir`. It is important this is set before the package is imported. The value of `project_config_dir` should be the location of your `/settings` folder.\n\nSet-up your settings folder, adding in configuration to the appropriate file.\n\n```bash\n.\n\u251c\u2500\u2500 settings <-- Settings folder\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 default.json <-- default configuration\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 {stage}.json <-- stage specific configuration e.g. `local`\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 {stage}.json <-- stage specific configuration e.g. `dev`\n```\n\nExample configuration:\n\n#### default.json\n```json\n{\n \"project_name\": \"example-project\",\n \"DEBUG\": false\n}\n```\n\n##### local.json\n```json\n{\n \"DEBUG\": true,\n \"use_remote_settings\": false\n}\n```\n\nLocal config object:\n\n```python\n{\n \"project_name\": \"example-project\",\n \"DEBUG\": True,\n \"use_remote_settings\": False\n}\n```\n\n##### dev.json\n\n```json\n{\n \"use_remote_settings\": true\n}\n```\n\nDev config object:\n\n```python\n{\n \"project_name\": \"example-project\",\n \"DEBUG\": True,\n \"use_remote_settings\": True\n # and any remote settings from AWS param store\n}\n```\n\n\n### AWS Param Store\n\n#### Project config\n\nAdd parameters in your AWS account with paths that match this pattern:\n\n`/{project_name}/{stage}/`\n\nIf you set `\"use_remote_settings\": true` in a remote `{stage}.json` config file, the package will attempt to fetch the parameters from the store that have the specified base path. Using the example configuration above, the path would be:\n\n```\n/example-project/dev/\n```\n\n#### Global service directory config\n\nAdd parameters in your AWS account with paths that match this pattern:\n\n`/global/{stage}/service_directory/`\n\nSet `\"global_service_directory\": true` in a remote `{stage}.json` config file.\n\nGlobal service directory config for the `{stage}` will be merged in.\n\n### Usage\n\nMake sure `project_config_dir` is set before importing the library.\n\n```python\nfrom manageconf import Config, get_config\n\nSECRET_KEY = get_config(\"SECRET_KEY\")\nDEBUG = get_config(\"DEBUG\", True)\n# default values are an optional second arg and will\n# be used if the param cannot be found in the config object\n```\n\n## Development\n\n### Install\n\nRequires [Poetry](https://poetry.eustace.io).\n\n```bash\n# create a Python3 virtual environment\nvirtualenv -p python3 env\n\n# activate the virtual env\nsource env/bin/activate\n\n# install requirements\npoetry install\n```\n\n### Tests\n\n```bash\n# run tests\npytest -vv\n\n# coverage report in the Terminal\npytest --cov=manageconf tests/\n\n# coverage report in HTML\npytest --cov-report html --cov=manageconf tests/\n```\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sam-atkins/manageconf", "keywords": "configuration,env,AWS,12factor", "license": "MIT", "maintainer": "Sam Atkins", "maintainer_email": "samatkins@outlook.com", "name": "manageconf", "package_url": "https://pypi.org/project/manageconf/", "platform": "", "project_url": "https://pypi.org/project/manageconf/", "project_urls": { "Homepage": "https://github.com/sam-atkins/manageconf", "Repository": "https://github.com/sam-atkins/manageconf" }, "release_url": "https://pypi.org/project/manageconf/1.1.1/", "requires_dist": [ "anyconfig (>=0.9.8,<0.10.0)", "boto3 (>=1.9,<2.0)" ], "requires_python": ">=3.6,<4.0", "summary": "Builds a config object based on environment variables, settings files and (optional) parameters stored in AWS System Manager Parameter Store.", "version": "1.1.1" }, "last_serial": 5278573, "releases": { "0.1.5": [ { "comment_text": "", "digests": { "md5": "1638f7999f459fa900b73c4053c06d17", "sha256": "f9ae7a22ee0ecf5d8f9bdcab489368f0377655db8b285c7812fe93e242ba0929" }, "downloads": -1, "filename": "manageconf-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1638f7999f459fa900b73c4053c06d17", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8002, "upload_time": "2019-04-04T05:46:53", "url": "https://files.pythonhosted.org/packages/96/c1/e4fbaf13491be7e61ffe8ab2bf908f3b62f1108d6d84b039f9027f44dc1b/manageconf-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c376a6216b8ffcac925c8c7dd536bc00", "sha256": "16866cfe1432c1729c1a746ad6790913b3a5f926182b5c139550f84ba6ced3b5" }, "downloads": -1, "filename": "manageconf-0.1.5.tar.gz", "has_sig": false, "md5_digest": "c376a6216b8ffcac925c8c7dd536bc00", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4428, "upload_time": "2019-04-04T05:46:56", "url": "https://files.pythonhosted.org/packages/d6/77/c3bf91658a62b47c745ee9f6aa8336749228b9ab67b452ee8d9f33e228c0/manageconf-0.1.5.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "0641a97305d93edf391cf66f87e691a7", "sha256": "e78f79d3d0bbd86f12dda0a323c13fcf9ae3526ae86125d8ce858a0e2758c6b0" }, "downloads": -1, "filename": "manageconf-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0641a97305d93edf391cf66f87e691a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8214, "upload_time": "2019-04-19T14:10:59", "url": "https://files.pythonhosted.org/packages/4c/12/cd36d3ec181133f609fe0e98f1014ed1bbdb9591dd851d8c5fa5e7e000d7/manageconf-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9341b5437d711a7ae7756e482dc62ae", "sha256": "b5bb4e0614a3520f37352c1fa227dd6badd7c60e97e99af84b7205c4fba7c634" }, "downloads": -1, "filename": "manageconf-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b9341b5437d711a7ae7756e482dc62ae", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4708, "upload_time": "2019-04-19T14:11:00", "url": "https://files.pythonhosted.org/packages/5f/f7/c08629eb901d516eabdae8185b83b8628ef0d4c2d45693ddd7b5143b56a6/manageconf-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "b1edf78a38236869b6640918f0b5f97f", "sha256": "7b80490d5985e3882d0472f4f257a5422d89f5f5075aa61ad24634c213a9f458" }, "downloads": -1, "filename": "manageconf-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b1edf78a38236869b6640918f0b5f97f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8515, "upload_time": "2019-04-19T15:00:17", "url": "https://files.pythonhosted.org/packages/dc/b5/5e1139de4cd5f56cbf2b4c3facbf8339044cba7990c1d0caeaf569d56b0a/manageconf-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14790a7a2fde24196fc3650062ab40f8", "sha256": "8d6c14f87932f459c1cbc73bfcf56902c29ace055392df37ae0356a0a53b0709" }, "downloads": -1, "filename": "manageconf-1.0.1.tar.gz", "has_sig": false, "md5_digest": "14790a7a2fde24196fc3650062ab40f8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4781, "upload_time": "2019-04-19T15:00:19", "url": "https://files.pythonhosted.org/packages/e6/09/7bc6641436776bd536ab9fa592748dc697c4c06a47839348bf422a4b6928/manageconf-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3dd7f44a60bb72638acbdd108fca334d", "sha256": "cf118fab05f3b18a0ebc9dd68ef2546aea81a64dd9e8924ea8936d535076c46e" }, "downloads": -1, "filename": "manageconf-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3dd7f44a60bb72638acbdd108fca334d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8216, "upload_time": "2019-04-19T15:55:15", "url": "https://files.pythonhosted.org/packages/d1/f7/ba076fc7673c10463c277d663320f8f792dc233650f866328bfe61af47f7/manageconf-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "455e3776f7db28883f9470f8bc5d7113", "sha256": "3c3d74f9c3a605d503090aed8bcee37d742c2d7d6895507d1e236d3176b3df47" }, "downloads": -1, "filename": "manageconf-1.0.2.tar.gz", "has_sig": false, "md5_digest": "455e3776f7db28883f9470f8bc5d7113", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4700, "upload_time": "2019-04-19T15:55:17", "url": "https://files.pythonhosted.org/packages/fc/ca/52d90d2c0d9454ed7950fdd71d5b3accfcb3666ff8391791465c4be09adc/manageconf-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "9fa9844e3c77a24b3b3e9394b1699799", "sha256": "0b2d06bc7179a6d5273f877c72d62a068e45e9f34b6147276b6d1407e2ec5e09" }, "downloads": -1, "filename": "manageconf-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9fa9844e3c77a24b3b3e9394b1699799", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 9386, "upload_time": "2019-05-01T18:13:15", "url": "https://files.pythonhosted.org/packages/76/98/33cb553f9400f1ba12e82796f56a4a1fd1ba3ab03a324686d62b4860e776/manageconf-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a3b2f2d08e7620c98fdd740af08ee6d", "sha256": "3b45b47d0f89893f5822e60add24341300587045e83add8b4529c32db8dda953" }, "downloads": -1, "filename": "manageconf-1.1.0.tar.gz", "has_sig": false, "md5_digest": "4a3b2f2d08e7620c98fdd740af08ee6d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 5054, "upload_time": "2019-05-01T18:13:17", "url": "https://files.pythonhosted.org/packages/04/3a/b8999fa7f753c9f57a3a96346dc5a3aaf45290a36040b6bed529538af2f7/manageconf-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "6b870b05b3e85702e7488a94e0312722", "sha256": "2315017e0ede3cb65950bafacce795ce183b99c752ff8210eced8fb6e1fac377" }, "downloads": -1, "filename": "manageconf-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6b870b05b3e85702e7488a94e0312722", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 9319, "upload_time": "2019-05-16T17:38:40", "url": "https://files.pythonhosted.org/packages/f6/5e/1ef8180f07487ba75f71e2fc40b13920097fcbe82386ed794b26b1600dd6/manageconf-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f722f963fd5ff4515fb31f7af94b512", "sha256": "f4ff2feeb79a423aaa60dd770173373227e55c92e91ccc839b131c5486136101" }, "downloads": -1, "filename": "manageconf-1.1.1.tar.gz", "has_sig": false, "md5_digest": "9f722f963fd5ff4515fb31f7af94b512", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 5034, "upload_time": "2019-05-16T17:38:41", "url": "https://files.pythonhosted.org/packages/f6/be/237c3c87cfe29142f9afd4a7b1a4cf3e2597b5491ef88798d4e37b262807/manageconf-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6b870b05b3e85702e7488a94e0312722", "sha256": "2315017e0ede3cb65950bafacce795ce183b99c752ff8210eced8fb6e1fac377" }, "downloads": -1, "filename": "manageconf-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6b870b05b3e85702e7488a94e0312722", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 9319, "upload_time": "2019-05-16T17:38:40", "url": "https://files.pythonhosted.org/packages/f6/5e/1ef8180f07487ba75f71e2fc40b13920097fcbe82386ed794b26b1600dd6/manageconf-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f722f963fd5ff4515fb31f7af94b512", "sha256": "f4ff2feeb79a423aaa60dd770173373227e55c92e91ccc839b131c5486136101" }, "downloads": -1, "filename": "manageconf-1.1.1.tar.gz", "has_sig": false, "md5_digest": "9f722f963fd5ff4515fb31f7af94b512", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 5034, "upload_time": "2019-05-16T17:38:41", "url": "https://files.pythonhosted.org/packages/f6/be/237c3c87cfe29142f9afd4a7b1a4cf3e2597b5491ef88798d4e37b262807/manageconf-1.1.1.tar.gz" } ] }