{ "info": { "author": "wuwentao", "author_email": "wwtg99@126.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "Hybrid Settings\n---------------\n\nDescription\n===========\n\nThis package can load settings from multiple sources and hybrid them into one dict-like object.\n\nInstallation\n============\n\nFor Python 3.5+\n\n.. code-block:: shell\n\n pip install hsettings\n\n\nUsage\n=====\n\nLoad settings\n~~~~~~~~~~~~~\n\nLoad settings from dict.\n\n.. code-block:: python\n\n from hsettings.loaders import DictLoader\n data1 = {\n 'k1': 'v1',\n 'k2': 'v2',\n 'k3': 1,\n 'k4': '1'\n }\n settings = DictLoader.load(data1)\n\n // type casts\n settings = DictLoader.load(data1, casts={\n 'k3': str, 'k4': int\n })\n assert settings.get('k3') == '1'\n assert settings.get('k4') == 1\n // keys includes\n settings = DictLoader.load(data1, includes=['k1', 'k2'])\n assert settings.as_dict() == {'k1': 'v1', 'k2': 'v2'}\n // keys excludes\n settings = DictLoader.load(data1, excludes=['k3', 'k4'])\n assert settings.as_dict() == {'k1': 'v1', 'k2': 'v2'}\n // keys includes and excludes\n settings = DictLoader.load(\n data1, \n includes=['k1', 'k2'], \n excludes=['k2', 'k3']\n )\n assert settings.as_dict() == {'k1': 'v1'}\n // map keys to inner keys\n settings = DictLoader.load(data1, key_mappings={\n 'k2': 'k2.k2-1',\n 'k3': 'k2.k2-2'\n })\n assert settings.as_dict() == {\n 'k1': 'v1',\n 'k2': {\n 'k2-1': 'v2',\n 'k2-2': 1\n },\n 'k4': '1'\n }\n // map keys to inner keys and only contains these keys\n // this is useful to load use defined envs\n settings = DictLoader.load(data1, key_mappings={\n 'k2': 'k2.k2-1',\n 'k3': 'k2.k2-2'\n }, only_key_mappings_includes=True)\n assert settings.as_dict() == {\n 'k2': {\n 'k2-1': 'v2',\n 'k2-2': 1\n }\n }\n\n\nLoad settings from json file.\n\n.. code-block:: python\n\n from hsettings.loaders import JsonLoader\n settings = JsonLoader.load(json_file)\n\n\nLoad settings from yaml file.\n\n.. code-block:: python\n\n from hsettings.loaders import YamlLoader\n settings = YamlLoader.load(yaml_file)\n\n\nLoad settings from environment and/or env file.\nSupport casts, env_to_key_mapping, includes, excludes and only_key_mappings_includes as DictLoader.\nUse env_to_key_mapping and only_key_mappings_includes parameters to only get specific env settings.\n\n.. code-block:: python\n\n // load from environment\n from hsettings.loaders import EnvLoader\n settings = EnvLoader.load()\n\n // load from environment and env file\n from hsettings.loaders import EnvLoader\n settings = EnvLoader.load(env_file) \n\n\nUse settings\n~~~~~~~~~~~~\n\n.. code-block:: python\n\n data1 = {\n 'k1': 'v1',\n 'k2': {\n 'k2-1': 'v2-1',\n 'k2-2': 'v2-2'\n },\n 'k3': ['v3-1', 'v3-2'],\n 'k4': 1,\n 'k5': [0, 1, 2],\n 'k6': {\n 'k6-1': '',\n 'k6-2': None,\n 'k6-3': 1.2\n },\n 'k7': {\n 'k7-1': {\n 'k7-1-1': 7\n }\n }\n }\n settings = Settings(data1)\n\n // get settings by get method or []\n print(settings.get('k1'))\n // output v1\n print(settings['k1'])\n // output v1\n // use dot(.) to get inner value\n print(settings.get('k2.k2-1'))\n // output v2-1\n print(settings['k2.k2-1'])\n // output v2-1\n // set default value if not set\n // note None is not equal to not set\n print(settings.get('not_set', 'yes'))\n // output yes\n // get whole settings as dict\n print(settings.as_dict())\n // clone a new settings\n settings2 = settings.clone()\n print(settings2 == settings)\n // output True\n print(settings2 is settings)\n // output False\n\n // set settings by set method or []\n settings.set('k3', 'v3')\n print(settings['k3])\n // output v3\n settings['k3'] = 'vv3'\n print(settings['k3'])\n // output vv3\n\n // merge settings, keys conflict will be overrided\n data2 = {\n 'k1': 'kk1',\n 'k2': {\n 'k2-1': 'kk2-1'\n },\n 'k5': [3, 4],\n 'k6': {\n 'k6-2': 'kk6-2',\n 'k6-4': 2.4\n }\n }\n settings3 = settings.clone()\n settings3.merge(data2)\n print(settings3['k2.k2-1'])\n print(settings3['k2.k2-1'])\n // output kk2-1\n // output v2-1\n\n\nMore examples are in tests.\n\n\nTest\n====\n\nRun unit test\n\n.. code-block:: shell\n\n pytest\n\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/wwtg99/hsettings", "keywords": "settings", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "hsettings", "package_url": "https://pypi.org/project/hsettings/", "platform": "", "project_url": "https://pypi.org/project/hsettings/", "project_urls": { "Homepage": "https://github.com/wwtg99/hsettings" }, "release_url": "https://pypi.org/project/hsettings/0.1.5/", "requires_dist": [ "pyyaml (>=3.13)" ], "requires_python": ">=3.5", "summary": "Python hybrid settings from multiple sources.", "version": "0.1.5" }, "last_serial": 5332449, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "c19cf172f4c20ea2a5002e396df96e80", "sha256": "ab2c626451bb7ba71ac62c665aafa4f618d549a732953d995def88e30a155f19" }, "downloads": -1, "filename": "hsettings-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c19cf172f4c20ea2a5002e396df96e80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 1293, "upload_time": "2018-09-26T05:30:56", "url": "https://files.pythonhosted.org/packages/9e/17/03e9fc72ddc27dab7e1e013198893a0d8079982b8ba1fd1ad664b54db905/hsettings-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e096e4c4e7279bdbc9bcde0737b676a5", "sha256": "347789737a724d38dc9d08dbcd7467611118b5285ea3f4e47a460cebef09d3a9" }, "downloads": -1, "filename": "hsettings-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e096e4c4e7279bdbc9bcde0737b676a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 1419, "upload_time": "2018-09-26T05:30:58", "url": "https://files.pythonhosted.org/packages/9f/35/ccae6a1446f47cb3c4a977dad0d159708091e2f05a920be66be972c0cca1/hsettings-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "ad2c4fd158283dc5ffb01fa247d0c11a", "sha256": "40415218e48a556f9dd3ef10c7258e409dc74c300965f11feab6f73d38571cb3" }, "downloads": -1, "filename": "hsettings-0.1.2-py3.6.egg", "has_sig": false, "md5_digest": "ad2c4fd158283dc5ffb01fa247d0c11a", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=3.5", "size": 1310, "upload_time": "2018-09-26T05:55:14", "url": "https://files.pythonhosted.org/packages/b1/08/a892e84754fdc3e8148229619083761ea022f4fc4a27aa2704dea0564cfb/hsettings-0.1.2-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "69278ebe919ad09c2833a407e96452d3", "sha256": "5e4534ba2e69ef8ad80d64eef262e0c82cff219460525f488a34c1d2a356a596" }, "downloads": -1, "filename": "hsettings-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "69278ebe919ad09c2833a407e96452d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 1333, "upload_time": "2018-09-26T05:55:12", "url": "https://files.pythonhosted.org/packages/37/65/7c1da3b64fe53662a3906e3e59a4cf470ee5aa032ee70cfd2a36f70db487/hsettings-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27fb65bfeddd25f0415966d490a6d8bc", "sha256": "56db7354413a18bb6a8abd3c16279bf8c55aba26bad0331c90eb14295d6844fb" }, "downloads": -1, "filename": "hsettings-0.1.2.tar.gz", "has_sig": false, "md5_digest": "27fb65bfeddd25f0415966d490a6d8bc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 1430, "upload_time": "2018-09-26T05:55:16", "url": "https://files.pythonhosted.org/packages/2d/eb/6c71c515ead62641e43e308d508dc7f6a3e0c754d1de9731ef9a4fc71afe/hsettings-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "7d38a945b74f8febf24cc07f992d2600", "sha256": "c98d1d13cad216f1f09466b9ff68df6f6d8292541526c16b8bf0d875f8e9747e" }, "downloads": -1, "filename": "hsettings-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "7d38a945b74f8febf24cc07f992d2600", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 4309, "upload_time": "2018-09-26T06:21:16", "url": "https://files.pythonhosted.org/packages/5c/ce/71af6e9fc1f307b0e0a3529956ee739437f3c612f4e2fbfd71aee4aaf0bc/hsettings-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ec2bafa554e3fba7410a370b6628604", "sha256": "46a1f44ee583e4f48f22a9b5cc6fdf24fcb154c55e277c515e468da5239ec706" }, "downloads": -1, "filename": "hsettings-0.1.3.tar.gz", "has_sig": false, "md5_digest": "8ec2bafa554e3fba7410a370b6628604", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 3734, "upload_time": "2018-09-26T06:21:17", "url": "https://files.pythonhosted.org/packages/1f/b0/a4f052ba3b8f5ff59ea34ed1661f915ef6b8c56b793b016c0899c95d80dd/hsettings-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b5267186921a48d8814021f746690b1b", "sha256": "01b632cdcf4f05d43aad656b2da0453984b74e60c1e3c7e22d10a8a3212476f5" }, "downloads": -1, "filename": "hsettings-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b5267186921a48d8814021f746690b1b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 5662, "upload_time": "2018-10-07T05:27:29", "url": "https://files.pythonhosted.org/packages/02/8e/c083e62d14b5e0f5a5057381189838ee97c79b367179b24d2184b28568f2/hsettings-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29fd18b7a0020fdee0d36b6ff5b7ca80", "sha256": "c48b142ee0b3c23284cf537f23497c4e3e50243e2881ebb4c062d96b0dbf7975" }, "downloads": -1, "filename": "hsettings-0.1.4.tar.gz", "has_sig": false, "md5_digest": "29fd18b7a0020fdee0d36b6ff5b7ca80", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5484, "upload_time": "2018-10-07T05:27:32", "url": "https://files.pythonhosted.org/packages/c7/b5/5e3db22ecdfcd33a34b1983dbcd135e6eae2fe6878e2ff7c3860ad865bd9/hsettings-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "cc61a844bb20040b47a7b0c421959654", "sha256": "6ab0672554cfece4f10379e1936d4fbec27a5c19e892ab4a9846b2211ce86da8" }, "downloads": -1, "filename": "hsettings-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "cc61a844bb20040b47a7b0c421959654", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 5662, "upload_time": "2019-05-29T13:47:18", "url": "https://files.pythonhosted.org/packages/bc/45/e1524e7735ab37fd8ab078781d099a941d2c9a2850110c5599647fbf767f/hsettings-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e953ccdccacf1e7da3520cdcd78f446f", "sha256": "181d283e25c2e5cd97ae6ceedff92e1a2bf4f3007570a024dca40039b9e788c5" }, "downloads": -1, "filename": "hsettings-0.1.5.tar.gz", "has_sig": false, "md5_digest": "e953ccdccacf1e7da3520cdcd78f446f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5500, "upload_time": "2019-05-29T13:47:20", "url": "https://files.pythonhosted.org/packages/80/11/b7af08d95b3b1943b0079289a19300d19d0ccbcc1158a0e0348bd3a3d6b7/hsettings-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cc61a844bb20040b47a7b0c421959654", "sha256": "6ab0672554cfece4f10379e1936d4fbec27a5c19e892ab4a9846b2211ce86da8" }, "downloads": -1, "filename": "hsettings-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "cc61a844bb20040b47a7b0c421959654", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 5662, "upload_time": "2019-05-29T13:47:18", "url": "https://files.pythonhosted.org/packages/bc/45/e1524e7735ab37fd8ab078781d099a941d2c9a2850110c5599647fbf767f/hsettings-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e953ccdccacf1e7da3520cdcd78f446f", "sha256": "181d283e25c2e5cd97ae6ceedff92e1a2bf4f3007570a024dca40039b9e788c5" }, "downloads": -1, "filename": "hsettings-0.1.5.tar.gz", "has_sig": false, "md5_digest": "e953ccdccacf1e7da3520cdcd78f446f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5500, "upload_time": "2019-05-29T13:47:20", "url": "https://files.pythonhosted.org/packages/80/11/b7af08d95b3b1943b0079289a19300d19d0ccbcc1158a0e0348bd3a3d6b7/hsettings-0.1.5.tar.gz" } ] }