{ "info": { "author": "Andrew Leech", "author_email": "andrew@alelec.net", "bugtrack_url": null, "classifiers": [], "description": "Structured Config\n=================\n\nA configuration module for python where the config structure is solely\ndefined in python.\n\nThere are lots of different modules and formats available for creating\nconfiguration files in a python project.\n\nAll of the ones I've used in the past have one main limitations in common however;\nthe primary definition of the configuration elements it either not written in python,\nor it's written in something like a python dict where you don't get particularly\ngood static inspection of elements.\n\nI personally like to do my python development in a smart ide like pycharm where\nI can take full advantage of inspection and auto-completion. If you config is\nnot written in python however, I don't get to do this.\n\nIf you want any kind of introspection of config files, you end up having some\nkind of python parser of the config file with all the configuration elements\nrepeated in both the default template and in some kind of mirror class.\n\nThis module aims to remove this limitation.\n\nBasic Usage\n-----------\n\nNow, your config.py file in your project can be something like ::\n\n from structured_config import ConfigFile, Structure\n\n class Config(Structure):\n\n class server(Structure):\n url = 'https:www.example.com'\n username = ''\n password = ''\n\n\n # Max number of tcp connections at any one time\n concurrent_connections = 32\n\n # Local service port\n service_port = 45080\n\n\n config = Config('/path/to/config.yaml')\n\nAny other modules in your project can then simply ::\n\n from config import config\n\n import requests\n from requests.auth import HTTPBasicAuth\n\n r = requests.get(config.server.url, auth=HTTPBasicAuth(config.server.username, config.server.password))\n\nand so on. Your IDE should give you full autocomplete on all these elements, becuase as far as it knows your config is\na normal class with normal static attributes.\n\nIf you want to change these config items in code it's as simple as setting the attribute ::\n\n from config import config\n\n config.concurrent_connections = 64\n\nThat's it. The config is written to disk in the yaml file pointed to in Config() instantiation\n\nThe yaml file can be manually changed on disk of course. At this stage it'll require\na restart of the app to reload the file however ::\n\n !config\n server: !server\n password: \n url: https:www.example.com\n username: \n concurrent_connections: 32\n service_port: 45080\n\nLists of elements\n-----------------\n\nIf you want a slightly more complex config file with a list of elements, this can be handled too ::\n\n import structured_config\n from structured_config import Structure, ConfigFile\n\n # Pre-define the object we want to store a list of.\n class Map(Structure):\n remote_path = None\n local_path = None\n\n\n # Default configuration for the application\n class Config(Structure):\n\n class server(Structure):\n url = 'https:www.example.com'\n username = ''\n password = ''\n\n mapping = [\n Map(\n remote_path=\"/test/\",\n local_path=\"~/test/\"\n ),\n Map(\n remote_path=\"/one/\",\n local_path=\"~/two/\"\n ),\n Map(\n remote_path=\"/two/\",\n local_path=\"~/one/\"\n )\n ]\n\n config = Config('config.yaml')\n\nYour main code can access the Map items in the list by all the normal means.\nif you append() new ones onto the list or pop() old ones off the list, the\nconfig will automatically write them to disk. Same goes for editing either of the\nattributes in any of the Map objects that have been added to the list.\n\nFormat convertions\n------------------\n\nIf you want to enforce the type of some attributes, we've got that covered as well ::\n\n from structured_config import ConfigFile, Structure, TypedField, IntField\n\n class config(Structure):\n\n concurrent_connections = IntField(32)\n\n path = TypedField('$HOME', os.path.expandvars)\n\n\n config = Config('config.yaml')\n\nCurrently available TypeFields include:\n * IntField : converts to int()\n * FloatField : converts to float()\n * StrField : converts to str()\n * PathField : converts to pathlib.Path()\n\nOthers can be created on demand by using `TypeField(value, converter_funtion)` \nor by subclassing TypeField as per the ones above.\n\nAny time a config attribute is set, it will be passed through the validation\nfunction first. The raw (unconverted) value will be saved to disk.\n\nGet's on the config objects attribute return the converted value, not the Field object.\n\nConfig file location\n--------------------\n\nWhen instantiating your Config object, the yaml filename needs to be passed in. \n\nIf an absolute path is provided this will be used verbatim. \n\nA relative path is assumed to be stored in the standard system location for config \nfiles, as handled by `appdirs `_.\n\nIn this case the projects appname should be provided as well to create the folder\n the config file will be stored in ::\n\n config = Config('config.yaml', 'ExampleApp')\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/alelec/structured_config", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "structured-config", "package_url": "https://pypi.org/project/structured-config/", "platform": "", "project_url": "https://pypi.org/project/structured-config/", "project_urls": { "Homepage": "https://gitlab.com/alelec/structured_config" }, "release_url": "https://pypi.org/project/structured-config/4.5/", "requires_dist": [ "setuptools", "setuptools-scm", "PyYAML", "wrapt", "appdirs", "aenum", "cryptography" ], "requires_python": "", "summary": "Configuration module for python where the config structure is solely defined in python with full autocomplete support.", "version": "4.5" }, "last_serial": 4933234, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "ad33cb6491d8d6323b470d96783e5ed6", "sha256": "babc3f6b919fdfd1ede4c4b1a93b74d9fd6fa17edda0f02cd734053946ac3a98" }, "downloads": -1, "filename": "structured_config-1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad33cb6491d8d6323b470d96783e5ed6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6846, "upload_time": "2017-02-11T09:26:37", "url": "https://files.pythonhosted.org/packages/2a/79/1ae469f708eaa00525ca2ecd0742b1ebeace2b0c2faae251d02c9d1df61a/structured_config-1.1-py2.py3-none-any.whl" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "b31195d451c1a5cd40bd0ab2b9d91892", "sha256": "a5f6f1e520e8063b9ee570fe3fd0580fc7d21cb3be09e5fc5373ca9969247d3d" }, "downloads": -1, "filename": "structured_config-1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b31195d451c1a5cd40bd0ab2b9d91892", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7554, "upload_time": "2017-02-12T09:45:40", "url": "https://files.pythonhosted.org/packages/6f/f8/ce0ac6186a784cce1e47b4e38d7230d48c2cb442ad46c452e761036e6692/structured_config-1.2-py2.py3-none-any.whl" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "11c27ed053e421d7d5018231b46b8b9f", "sha256": "66d4b6f001512fe85549702cc8ef17fa3a78b6b15f19b015bcf4bb8291ce271f" }, "downloads": -1, "filename": "structured_config-1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "11c27ed053e421d7d5018231b46b8b9f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7587, "upload_time": "2017-02-12T12:26:55", "url": "https://files.pythonhosted.org/packages/f4/52/1d38ffe5a5dc6e5a7aab43a3d920ccb014cd9e2d1916d94bac29fe91eb0c/structured_config-1.3-py2.py3-none-any.whl" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "11b413dca69d3bdb1a2bfa07e91c9ffa", "sha256": "ce6f863837418001e8755c95016707bbf938404ef431318753781a4bf6bf2efb" }, "downloads": -1, "filename": "structured_config-1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "11b413dca69d3bdb1a2bfa07e91c9ffa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7587, "upload_time": "2017-02-19T11:52:09", "url": "https://files.pythonhosted.org/packages/68/13/9928a810e80e177f3d1f63c493e2505b489209e9ccd18099089ff6ee7a20/structured_config-1.4-py2.py3-none-any.whl" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "85ac2fbe1c3f29418a37e942d476f3b5", "sha256": "db8e65776d1335ea15d4e2ef8ddaef7fd606fca3dd8ab33fee8628ba7440f459" }, "downloads": -1, "filename": "structured_config-1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "85ac2fbe1c3f29418a37e942d476f3b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7657, "upload_time": "2017-02-20T10:14:05", "url": "https://files.pythonhosted.org/packages/ac/44/a505312c9bab5061e4ed2b3e5cf1f3be3a9b639bee1709c15d9d4f3e6787/structured_config-1.5-py2.py3-none-any.whl" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "020658b295069b9ff82b96d1b93b0e55", "sha256": "d32b6bcb958fc43a34bd8e1d904b694c0015227dea3ead8fba04f8bf8b0cefc4" }, "downloads": -1, "filename": "structured_config-1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "020658b295069b9ff82b96d1b93b0e55", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7650, "upload_time": "2017-03-05T21:57:33", "url": "https://files.pythonhosted.org/packages/ba/10/5ef90ddff950e8af44a174c7c9dd78e637ea8e06a753200ef2e3fbc8a613/structured_config-1.6-py2.py3-none-any.whl" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "a856c68b29e17e44ac5b1a84e13cc1cd", "sha256": "c535a8295270e57b829e03619098cdbc8c97dc0c0b722cf4aa082d3a373e3dbf" }, "downloads": -1, "filename": "structured_config-1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a856c68b29e17e44ac5b1a84e13cc1cd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7774, "upload_time": "2017-04-25T04:23:36", "url": "https://files.pythonhosted.org/packages/fd/6f/c2577f98083ddad8ddcefa27dd2ae0b0c7eb51cfa0e862b18a6259855fae/structured_config-1.7-py2.py3-none-any.whl" } ], "1.8": [ { "comment_text": "", "digests": { "md5": "d06d26e4b011c00389b1b81a15ec840f", "sha256": "4c18578551ba7f1d0b43b5e7f3876bf46ac646445c3f2ff94828053c5a1dd4fd" }, "downloads": -1, "filename": "structured_config-1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d06d26e4b011c00389b1b81a15ec840f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7925, "upload_time": "2017-08-20T05:44:23", "url": "https://files.pythonhosted.org/packages/61/c5/f7fc3bc8e51ec6df1128b80c1dc1a239e6dcfcafb6a2fa41f02e661917ac/structured_config-1.8-py2.py3-none-any.whl" } ], "1.9": [ { "comment_text": "", "digests": { "md5": "11b2ae00374314a4a83a1986b2de7984", "sha256": "3578cb7f2610ae6e9bab06feb18e574824b1179477b8b07c3a3fd6b38d9e71b5" }, "downloads": -1, "filename": "structured_config-1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "11b2ae00374314a4a83a1986b2de7984", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8066, "upload_time": "2017-09-26T00:07:36", "url": "https://files.pythonhosted.org/packages/09/e0/edc41103a04d5cd09fa76e790d8732f1a5998780a570cdbb55f8ca96ff66/structured_config-1.9-py2.py3-none-any.whl" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "54d8d17c3dc0c57b74f11a785f6a29b3", "sha256": "490c974239b72b4b6131db0634d52cd412161eead376d54bc67acd9426c7fdd7" }, "downloads": -1, "filename": "structured_config-2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "54d8d17c3dc0c57b74f11a785f6a29b3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8247, "upload_time": "2017-09-27T14:06:57", "url": "https://files.pythonhosted.org/packages/96/d8/9613470ea2347e7896da4fc6b4050508072965309714bff49ec1a41917d6/structured_config-2.0-py2.py3-none-any.whl" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "e08ceb88eaf636fc2c2ff8d225f4b5fe", "sha256": "3d15a595395c1b67c615a5e409fb5489d73ee8381eae284211a72b120af84be6" }, "downloads": -1, "filename": "structured_config-2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e08ceb88eaf636fc2c2ff8d225f4b5fe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9039, "upload_time": "2017-09-28T03:23:20", "url": "https://files.pythonhosted.org/packages/e2/ab/4d1a984a71018aa5e79df37f82ec2e59bb3c2d8e046465a7936259c6a874/structured_config-2.1-py2.py3-none-any.whl" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "c606ca914d69df2aab725851c34f4743", "sha256": "7b60701d033b3fa75cfe97353a7fb4813b699ae139687c94d64020d796065027" }, "downloads": -1, "filename": "structured_config-2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c606ca914d69df2aab725851c34f4743", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9887, "upload_time": "2017-10-07T09:53:26", "url": "https://files.pythonhosted.org/packages/23/48/34de06956943bd1b40a199f935a5cb6264b32543a99f89a71a9c10b2ccec/structured_config-2.2-py2.py3-none-any.whl" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "1a0dbb29a09a9cedcc8798802bd8563a", "sha256": "820bbd58a96f68b5ad93109948c9b036b29399ab6d7709949dd7d1b0541b6154" }, "downloads": -1, "filename": "structured_config-2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1a0dbb29a09a9cedcc8798802bd8563a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10073, "upload_time": "2017-10-11T03:51:19", "url": "https://files.pythonhosted.org/packages/6e/06/1452aacebed90e90123e39854b7ad87ee858178161117018e6249363f9b2/structured_config-2.3-py2.py3-none-any.whl" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "5b044cffd4df9c8300d00741410fb932", "sha256": "ab44391b901c9db69938570362f7d2426251dfe56db6d6aeb5e64190ff616ecc" }, "downloads": -1, "filename": "structured_config-2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5b044cffd4df9c8300d00741410fb932", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10204, "upload_time": "2017-10-17T00:08:42", "url": "https://files.pythonhosted.org/packages/83/9f/2ee4f2ed9c1bf47e5e7292192a0cba943da9a773f3605ebd7b63cff826b8/structured_config-2.4-py2.py3-none-any.whl" } ], "2.5": [ { "comment_text": "", "digests": { "md5": "3a68393f0c354a0f113ffe03e07d7580", "sha256": "84da45fb2887eeacfc0dd4b429f781e9b943fb1f6f059d9ac81a612e937fd9db" }, "downloads": -1, "filename": "structured_config-2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a68393f0c354a0f113ffe03e07d7580", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10345, "upload_time": "2017-10-24T20:42:33", "url": "https://files.pythonhosted.org/packages/22/0b/809ab5168ce0fb13bde995a8615704b3e28c69efb05bea4e9221aa3bd900/structured_config-2.5-py2.py3-none-any.whl" } ], "2.6": [ { "comment_text": "", "digests": { "md5": "844894dfca39989ddad0eeea18b52f01", "sha256": "85ed72aea71c0b080dc70b75568e4fa337b4bd668f41e46279f8e60ca87d7ff6" }, "downloads": -1, "filename": "structured_config-2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "844894dfca39989ddad0eeea18b52f01", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10481, "upload_time": "2017-10-29T07:25:52", "url": "https://files.pythonhosted.org/packages/af/85/dc33f06f904d4d506ac18890982250325a702b948d525c449316fc7e736f/structured_config-2.6-py2.py3-none-any.whl" } ], "2.7": [ { "comment_text": "", "digests": { "md5": "43e0522fedff6bd404c7f03cf291f39a", "sha256": "1485800dcf55216322efbf0655ae87b0abcd4df22e1fcac2acb4ceabe4bbf45e" }, "downloads": -1, "filename": "structured_config-2.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43e0522fedff6bd404c7f03cf291f39a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11062, "upload_time": "2017-10-31T07:11:08", "url": "https://files.pythonhosted.org/packages/a0/28/298e7d71ac436b32e16d50f545a8b5c7e8b02b805641e0105a9ae8df071b/structured_config-2.7-py2.py3-none-any.whl" } ], "2.8": [ { "comment_text": "", "digests": { "md5": "13a70b24f1b581618a034412778f2660", "sha256": "165138b7e83d56de53a66b4544891674acb983f2a50ad0cdef67973b3cb511d3" }, "downloads": -1, "filename": "structured_config-2.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "13a70b24f1b581618a034412778f2660", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11097, "upload_time": "2017-11-01T07:45:43", "url": "https://files.pythonhosted.org/packages/89/fc/d1393b30fdf55972a52ef3562236c22cfdcb654c6ddd070812f5e013d6ea/structured_config-2.8-py2.py3-none-any.whl" } ], "2.9": [ { "comment_text": "", "digests": { "md5": "bd791d92a96f56fdabaad850261e0b25", "sha256": "9987a79d96d0fd982272a4c460f63e7e64b63780e3f56116d69455a5a4b176e8" }, "downloads": -1, "filename": "structured_config-2.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bd791d92a96f56fdabaad850261e0b25", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11272, "upload_time": "2017-11-09T04:06:12", "url": "https://files.pythonhosted.org/packages/ef/a2/3b227e486060e5aebaa1ad9f56583e655dd828270a838b86db0f4939fc27/structured_config-2.9-py2.py3-none-any.whl" } ], "3.0": [ { "comment_text": "", "digests": { "md5": "98fdd2b9e66695f0dea27ded84d23d15", "sha256": "c6e30c7fa8b5689ab2153d17d63dca8204e81ec4d49a07a20c1c8e382e47e082" }, "downloads": -1, "filename": "structured_config-3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "98fdd2b9e66695f0dea27ded84d23d15", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5933, "upload_time": "2017-11-23T03:46:29", "url": "https://files.pythonhosted.org/packages/fa/14/c51601cafc2d50667c474bb18542c586808a7029df0e98d43a27099acb02/structured_config-3.0-py2.py3-none-any.whl" } ], "3.1": [ { "comment_text": "", "digests": { "md5": "12dd41a8e5d80841ce9702c3a451f48a", "sha256": "dcebd0a4e3f0d12734e7581d58ceee3e9265e70045c75126d6f2b3129f8654bf" }, "downloads": -1, "filename": "structured_config-3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "12dd41a8e5d80841ce9702c3a451f48a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13490, "upload_time": "2017-11-23T04:12:42", "url": "https://files.pythonhosted.org/packages/9a/69/c0f8e2e68e64297b5867b1de58928415bae8b9a1e95859e2841dbe34c946/structured_config-3.1-py2.py3-none-any.whl" } ], "3.2": [ { "comment_text": "", "digests": { "md5": "3bbd587799d867ce0cf3a33ea9df3312", "sha256": "d11a84aaca6bf5686026f956d27eb2afd544df3ad29add8f93cca0e9f38751a1" }, "downloads": -1, "filename": "structured_config-3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3bbd587799d867ce0cf3a33ea9df3312", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14119, "upload_time": "2017-12-04T03:07:05", "url": "https://files.pythonhosted.org/packages/b7/71/0bbff0819f7476903c9a0bbae73f287f92da3fec4a7b0ef7335f627917c3/structured_config-3.2-py2.py3-none-any.whl" } ], "3.3": [ { "comment_text": "", "digests": { "md5": "67710e97ed6f76dc557aa65f39eb70ed", "sha256": "b0b3e349b602053401faf6e6b292ee9e46445e8551972d158d20e918089af65b" }, "downloads": -1, "filename": "structured_config-3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "67710e97ed6f76dc557aa65f39eb70ed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14128, "upload_time": "2017-12-04T03:20:03", "url": "https://files.pythonhosted.org/packages/7d/11/4238fd41afecc16541a0f25867bfce326eb3c3ed2f7763ffc978d23f5228/structured_config-3.3-py2.py3-none-any.whl" } ], "3.4": [ { "comment_text": "", "digests": { "md5": "845b0f858a1f2417daa863f7911e7481", "sha256": "b8f6a6d41d428bc1120636425c4b934e3052cc70728a3bb2621b5b6f936872a1" }, "downloads": -1, "filename": "structured_config-3.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "845b0f858a1f2417daa863f7911e7481", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14156, "upload_time": "2017-12-20T02:48:48", "url": "https://files.pythonhosted.org/packages/24/09/4cfc6abb8e0e76dbd5d65ad41c2529b190bb9d931d93ad64112c6d9b466f/structured_config-3.4-py2.py3-none-any.whl" } ], "3.5": [ { "comment_text": "", "digests": { "md5": "85e770bc307b0aafaf7344baa54a0e05", "sha256": "34a48efc52188ed0e7216c6636e2acc5ec7ff051c3891a69e2bc64c36a9e2e37" }, "downloads": -1, "filename": "structured_config-3.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "85e770bc307b0aafaf7344baa54a0e05", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14163, "upload_time": "2017-12-22T00:03:24", "url": "https://files.pythonhosted.org/packages/32/40/5b06114acc118706e48ca942fb3b49e253e503c82e134141b3729df02eaf/structured_config-3.5-py2.py3-none-any.whl" } ], "3.6": [ { "comment_text": "", "digests": { "md5": "209fe7e4642fc9ff99aff11b83131c44", "sha256": "5086c990731d666b6069348e77531663347dbcf87006155c627977428e002b7f" }, "downloads": -1, "filename": "structured_config-3.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "209fe7e4642fc9ff99aff11b83131c44", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14545, "upload_time": "2018-01-22T02:10:23", "url": "https://files.pythonhosted.org/packages/bf/83/c26e7d53c641e2f9e4e78e61dbf73ed5a2b49141d98db8f5114ce49d7d70/structured_config-3.6-py2.py3-none-any.whl" } ], "3.7": [ { "comment_text": "", "digests": { "md5": "1fc59608938e44958bc07a1fb4f415b7", "sha256": "6b0b3b1f00a8ebf111c1c7923f82a9106ffe65014f191ab05b7dfa48838d36f5" }, "downloads": -1, "filename": "structured_config-3.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1fc59608938e44958bc07a1fb4f415b7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14536, "upload_time": "2018-03-23T01:30:10", "url": "https://files.pythonhosted.org/packages/06/a1/1a7b82e9888a24dc25c6529578b29f82bb41dc742f2279e8e6ec4b4ed56a/structured_config-3.7-py2.py3-none-any.whl" } ], "3.8": [ { "comment_text": "", "digests": { "md5": "1be709622391d9de9d6061c7b37762b6", "sha256": "1aa6f5f966e130dda752bccba2261f8b48bd9f57c4316d82bdd8f25a8eb7162a" }, "downloads": -1, "filename": "structured_config-3.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1be709622391d9de9d6061c7b37762b6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14573, "upload_time": "2018-03-23T04:21:14", "url": "https://files.pythonhosted.org/packages/eb/0d/97af75f3bee8fab3c5f0396b9f6489703b278d959e8765bfe5b0e86f6e8c/structured_config-3.8-py2.py3-none-any.whl" } ], "3.9": [ { "comment_text": "", "digests": { "md5": "668913928ccbf3e94e0ef9785bd14314", "sha256": "930ca88387334e591d3390cd1c2a0c4701db1f6a3309390304c5c62079c2fa63" }, "downloads": -1, "filename": "structured_config-3.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "668913928ccbf3e94e0ef9785bd14314", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11843, "upload_time": "2018-05-17T05:04:52", "url": "https://files.pythonhosted.org/packages/e0/6a/d8a96c459dfba712f5f885af4ad4b04e37906e35ab760e138ea52f5d9aa3/structured_config-3.9-py2.py3-none-any.whl" } ], "4.0": [ { "comment_text": "", "digests": { "md5": "853fe757919ee3d3f233d7110e585785", "sha256": "c3c79d29c5dd6626af9caa087afb1978d481c4b91d05567b7e386bb8485815aa" }, "downloads": -1, "filename": "structured_config-4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "853fe757919ee3d3f233d7110e585785", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14117, "upload_time": "2018-10-24T23:39:33", "url": "https://files.pythonhosted.org/packages/7d/48/068c53a7dd2aaeec84b94122ca7f5d2202470be0c8a72d67b7183fd49ef1/structured_config-4.0-py2.py3-none-any.whl" } ], "4.1": [ { "comment_text": "", "digests": { "md5": "6c9fb8ae96bb27f8f12985d5e5cc7f46", "sha256": "d91f3629000291c08fb26536d9d18e1bdde51b7e991965f84b82f41add207122" }, "downloads": -1, "filename": "structured_config-4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6c9fb8ae96bb27f8f12985d5e5cc7f46", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14581, "upload_time": "2018-11-04T05:46:23", "url": "https://files.pythonhosted.org/packages/22/dc/59067ff8db5725d33183c19c9eee49dcf9852706e46191ae72b1e6e70a2c/structured_config-4.1-py2.py3-none-any.whl" } ], "4.2": [ { "comment_text": "", "digests": { "md5": "d7b4a28034c84813e9c075146272187c", "sha256": "47d8acb79abd94cb130827ee138ca6b4f42a55e5f563bac74c884e5bcb4c898c" }, "downloads": -1, "filename": "structured_config-4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d7b4a28034c84813e9c075146272187c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14775, "upload_time": "2018-12-13T04:41:24", "url": "https://files.pythonhosted.org/packages/02/08/17e60df1bf2fefc18b15f76b1f9970cc5e39adf74c8b0aa9a49f2f812e21/structured_config-4.2-py2.py3-none-any.whl" } ], "4.3": [ { "comment_text": "", "digests": { "md5": "fdf7b97ebcb6653d7df56c7c9e53f515", "sha256": "136b109766e23ca1f0340fe85b1989bd76d848824317581c3e1cde46f1f00520" }, "downloads": -1, "filename": "structured_config-4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fdf7b97ebcb6653d7df56c7c9e53f515", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14845, "upload_time": "2019-01-28T23:17:15", "url": "https://files.pythonhosted.org/packages/54/44/b34161a90c7d5ae6dd3d7266e864fba43088d85e34e1c4ba0e58272aca81/structured_config-4.3-py2.py3-none-any.whl" } ], "4.4": [ { "comment_text": "", "digests": { "md5": "852f83357e57cb57a3cd44c288e8ddeb", "sha256": "b935fae7d3383d05453b323c6a6bcba970368c7d12f797cb7e2b88e1db06119f" }, "downloads": -1, "filename": "structured_config-4.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "852f83357e57cb57a3cd44c288e8ddeb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14880, "upload_time": "2019-03-08T01:42:36", "url": "https://files.pythonhosted.org/packages/78/76/8b1d81f430bc35e03f1ceeb14709b0e0176b8dc34c72d6b42635405f5e57/structured_config-4.4-py2.py3-none-any.whl" } ], "4.5": [ { "comment_text": "", "digests": { "md5": "3453351ff8fc729a98a1cf1a93bce113", "sha256": "8ccdca6673e6f531b3b14b655e58ac88443b6a42b5751cc8b7fede3e8e47228c" }, "downloads": -1, "filename": "structured_config-4.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3453351ff8fc729a98a1cf1a93bce113", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14883, "upload_time": "2019-03-13T06:06:21", "url": "https://files.pythonhosted.org/packages/41/69/ef25be86be2c39eeb9289556f27c1910a92798c015df9679051f00cc2df1/structured_config-4.5-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3453351ff8fc729a98a1cf1a93bce113", "sha256": "8ccdca6673e6f531b3b14b655e58ac88443b6a42b5751cc8b7fede3e8e47228c" }, "downloads": -1, "filename": "structured_config-4.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3453351ff8fc729a98a1cf1a93bce113", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14883, "upload_time": "2019-03-13T06:06:21", "url": "https://files.pythonhosted.org/packages/41/69/ef25be86be2c39eeb9289556f27c1910a92798c015df9679051f00cc2df1/structured_config-4.5-py2.py3-none-any.whl" } ] }