{ "info": { "author": "Davis Kirkendall", "author_email": "davis.e.kirkendall@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "|Build Status| |Coverage Status| |PyPi Status| |PyPI license|\n\n\nCLIMATECONTROL\n==============\n\nCLIMATECONTROL controls your apps configuration environment. It is a Python\nlibrary for loading app configurations from files and/or namespaced environment\nvariables.\n\n\nInstall\n-------\n\n::\n\n pip install climatecontrol\n\n\n\nUsage\n-----\n\nSet some environment variables in your shell\n\n.. code:: sh\n\n export MY_APP_VALUE1=test1\n export MY_APP_VALUE2=test2\n\nThen use them in your python modules:\n\n.. code:: python\n\n from climatecontrol.settings_parser import Settings\n settings_map = Settings(prefix='MY_APP')\n print(dict(settings_map))\n\n {\n 'value1': 'test1',\n 'value2': 'test2'\n }\n\nIn case you want to update your settings or your environment variables have\nchanged and you want to reload them, the `update` method will reload your\nsettings:\n\n.. code:: python\n\n import os\n os.environ['MY_APP_VALUE3'] = 'new_env_data'\n settings_map.update()\n print(dict(settings_map))\n\n {\n 'value1': 'test1',\n 'value2': 'test2',\n 'value3': 'new_env_data'\n }\n\n\nNow you've noticed that you want more complex configurations and need nested\nsettings. For this situation we can delimit sections using a double underscore:\n\n.. code:: sh\n\n export MY_APP_SECTION1__VALUE1=test1\n export MY_APP_SECTION2__VALUE2=test2\n export MY_APP_SECTION2__VALUE3=test3\n export MY_APP_SECTION2__SUB_SECTION__VALUE4=test4\n\n.. code:: python\n\n settings_map = Settings(prefix='MY_APP')\n print(dict(settings_map))\n\n {\n 'section1': {\n 'value1': 'test1'\n },\n 'section2': {\n 'value2': 'test2',\n 'value3': 'test3',\n 'sub_section': {\n 'value4': 'test4'\n }\n }\n }\n\n\nFinally if you decide that your settings are simpler and you know that your\nsection names do not have underscores, you can use the ``implicit_depth``\noption, which allows you to add a new section at every single underscore (up to\nthe depth you specify).\n\n.. code:: sh\n\n export MY_APP_SECTION1_VALUE1=test1\n export MY_APP_SECTION2_VALUE2=test2\n export MY_APP_SECTION2_VALUE3=test3\n export MY_APP_SECTION2_SUBSECTION_VALUE4=test4\n\n.. code:: python\n\n settings_map = Settings(prefix='MY_APP', implicit_depth=2)\n print(dict(settings_map))\n\n {\n 'section1': {\n 'value1': 'test1'\n },\n 'section2': {\n 'value2': 'test2',\n 'value3': 'test3',\n 'subsection': {\n 'value4': 'test4'\n }\n }\n }\n\n\nSettings file support\n---------------------\n\nIf you don't want to use an environment variable for every single setting and\nwant to put your settings in a single file instead you can to this as well.\nSettings files can be yaml files (`.yml`/ `.yaml`), json files (`.json`) or toml_ files (`.toml`).\n\n.. code-block:: sh\n\n export MY_APP_SETTINGS_FILE=./my_settings_file.yml\n\n\nThe file could look like this:\n\n.. code-block:: yaml\n\n section1:\n subsection1 = test1\n\n section2:\n subsection2: test2\n subsection3: test3\n\n\nor in toml form:\n\n.. code-block:: sh\n\n export MY_APP_SETTINGS_FILE=./my_settings_file.toml\n\n.. code-block:: sh\n\n [section1]\n subsection1 = \"test1\"\n\n [section2]\n subsection2 = \"test2\"\n subsection3 = \"test3\"\n\n\nIn the following documentation examples, yaml files will be used, but any\nexamples will work using the other file syntaxes as well.\n\n\nSetting variables whos values are saved in files\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSometimes we don't want to save values in plain text in environment files or in\nthe settings file itself. Instead we have a file that contains the value of the\nsetting we want. A good example for this behaviour are docker secrets_ that\nstore secrets in temporary files.\n\nTo read a variable from a file, simply add a `\"_from_file\"` to the variable\nname and give it the path to the file that contains the variable as a value.\n\nUsing a settings file with the contents (in this case yaml):\n\n.. code-block:: yaml\n\n section1:\n subsection1_from_file: /home/myuser/supersecret.txt\n\nor using an environment variable:\n\n.. code-block:: sh\n\n export MY_APP_SECTION1_SUBSECTION1_FROM_FILE=\"/home/myuser/supersecret.txt\"\n\nwill both write the content of the file at `\"/home/myuser/supersecret.txt\"`\ninto the variable `section1 -> subsection1`.\n\n\nNested settings files\n^^^^^^^^^^^^^^^^^^^^^\n\nIn addition, file variables can also target other settings files directly. To\ndo this, just make sure the target file is has an extension supported by\nclimate control. A simple example is illustrated here. Given a settings file:\n\n.. code-block:: yaml\n\n value1: \"spam\"\n section1_from_file: /home/myuser/nestedfile.yaml\n\n\nwhere the content of `/home/myuser/nestedfile.yaml` is:\n\n.. code-block:: yaml\n\n value2: \"cheese\"\n subsection:\n value3: \"parrot\"\n\nwhich would result in a settings structure:\n\n.. code-block:: python\n\n {\n \"value1\": \"spam\",\n \"section1\": {\n \"value2\": \"cheese\",\n \"subsection\": {\n \"value3\": \"parrot\"\n }\n }\n }\n\n\n\n\nCommand line support using click\n--------------------------------\n\nThe click_ library is a great tool for creating command line applications. If\nyou don't want to have to use an environment to set your configuration file.\nWrite your command line application like this:\n\n.. code-block:: python\n\n import click\n\n @click.command()\n @settings_map.click_settings_file_option()\n def cli():\n print(dict(settings_parser))\n\nsave it to a file like \"cli.py\" and then call it after installing click:\n\n.. code-block:: sh\n\n pip install click\n python cli.py --settings ./my_settings_file.toml\n\nwhithout needing to set any env vars.\n\nMultiple files are supported. They will be automatically recursively merged\nwith the last file overriting any overlapping keys of the first file.\n\n.. code-block:: sh\n\n pip install click\n python cli.py --settings ./my_settings_file.toml --settings ./my_settings_file.yaml\n\n\nTesting\n-------\n\nWhen testing your application, different behaviours often depend on settings\ntaking on different values. Assuming that you are using a single `Settings`\nobject accross multiple functions or modules, handling these settings changes\nin tests can be tricky.\n\nThe settings object provides a simple method for modifying your settings object\ntemporarily:\n\n.. code-block:: python\n\n settings_map.update({'a': 1})\n # Enter a temporary changes context block:\n with settings_map.temporary_changes():\n settings_map.update({'a': 1})\n # Inside the context, the settings can be modified and used as you choose\n print(settings_map['a']) # outputs: 2\n # After the context exits the settings map\n print(settings_map['a']) # outputs: 1\n\n\nPython version support\n----------------------\n\nDo to the use of modern python features, only python 3.5 and above are supported.\n\n\n.. |Build Status| image:: https://travis-ci.org/daviskirk/climatecontrol.svg?branch=master\n :target: https://travis-ci.org/daviskirk/climatecontrol\n.. |Coverage Status| image:: https://coveralls.io/repos/github/daviskirk/climatecontrol/badge.svg?branch=master\n :target: https://coveralls.io/github/daviskirk/climatecontrol?branch=master\n.. |PyPi Status| image:: https://badge.fury.io/py/climatecontrol.svg\n :target: https://badge.fury.io/py/climatecontrol\n.. |PyPI license| image:: https://img.shields.io/pypi/l/ansicolortags.svg\n :target: https://pypi.python.org/pypi/ansicolortags/\n.. |PyPI pyversions| image:: https://img.shields.io/pypi/pyversions/climatecontrol.svg\n :target: https://pypi.python.org/pypi/climatecontrol/\n.. _click: http://click.pocoo.org/\n.. _toml: https://github.com/toml-lang/toml\n.. _secrets: https://docs.docker.com/engine/swarm/secrets", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/daviskirk/climatecontrol", "keywords": "climatecontrol", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "climatecontrol", "package_url": "https://pypi.org/project/climatecontrol/", "platform": "", "project_url": "https://pypi.org/project/climatecontrol/", "project_urls": { "Homepage": "https://github.com/daviskirk/climatecontrol" }, "release_url": "https://pypi.org/project/climatecontrol/0.7.3.post2/", "requires_dist": null, "requires_python": "", "summary": "Python library for loading app configurations from files and/or namespaced environment variables", "version": "0.7.3.post2" }, "last_serial": 4709875, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "8439f6e26a6c80a154d7ef0b56992e11", "sha256": "830d5fd2dbd815da8a04ee285a14bfa5a6f2774080aa4bb5f7139ce45fb0636b" }, "downloads": -1, "filename": "climatecontrol-0.1.1.tar.gz", "has_sig": false, "md5_digest": "8439f6e26a6c80a154d7ef0b56992e11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5724, "upload_time": "2016-06-02T02:02:32", "url": "https://files.pythonhosted.org/packages/e2/76/92972c9701e5a116890aa2498105931bf11ec68d1a298c974ba2aed1ca7c/climatecontrol-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "b4cc3a5854bb9e34f36a078170962996", "sha256": "605d5f638ed597ae6e69d608f9d67de09474c58d1881bac33e820e7d857f9d32" }, "downloads": -1, "filename": "climatecontrol-0.1.10.tar.gz", "has_sig": false, "md5_digest": "b4cc3a5854bb9e34f36a078170962996", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12792, "upload_time": "2016-09-02T03:44:46", "url": "https://files.pythonhosted.org/packages/45/8b/03cd7a368f1045b65f291d971c8a1a32bfc5add3d7b3cd3139b9b2541216/climatecontrol-0.1.10.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "4e2334523a4d8c7c279361f72cbbeb2a", "sha256": "07d19de77b0cf29e46ebe5cde72f0d72a1ec1804638ce825155d66c6bafbcc65" }, "downloads": -1, "filename": "climatecontrol-0.1.2.tar.gz", "has_sig": false, "md5_digest": "4e2334523a4d8c7c279361f72cbbeb2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5712, "upload_time": "2016-06-02T11:21:16", "url": "https://files.pythonhosted.org/packages/d7/64/c3933266ae5d506e0fa13fbc5e47d7277dace6ae3044b9ecb21ddc36cd62/climatecontrol-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "db07b7100bdd8357062bf386f79cf987", "sha256": "7cfe4cad198953d99c409b7e9c36a09a95254b8e706f376de93363570a29b492" }, "downloads": -1, "filename": "climatecontrol-0.1.4.tar.gz", "has_sig": false, "md5_digest": "db07b7100bdd8357062bf386f79cf987", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6324, "upload_time": "2016-06-02T14:31:31", "url": "https://files.pythonhosted.org/packages/d0/f9/c98b81f05f9a1877b5a1b756ee6d85c06e0172e29c221199db94f9cac9c1/climatecontrol-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "7908ccf282b896b2f7cb87b379ca625b", "sha256": "b242379f9ac8238221eeb793780e26028fbaec8b43f042cc9fe692e4e6823e7c" }, "downloads": -1, "filename": "climatecontrol-0.1.5.tar.gz", "has_sig": false, "md5_digest": "7908ccf282b896b2f7cb87b379ca625b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11633, "upload_time": "2016-08-11T09:39:52", "url": "https://files.pythonhosted.org/packages/be/17/d5953b247cadb27ad9d10c7ec762fe6d47cb9f7a74a8bc86ba79c3f129b3/climatecontrol-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "58222e90cf20507363ba51e782b5957c", "sha256": "eea61d2693ca9d6019256eecc87f6bfb764366817f7b93ab6b791c31dfa40d3d" }, "downloads": -1, "filename": "climatecontrol-0.1.6.tar.gz", "has_sig": false, "md5_digest": "58222e90cf20507363ba51e782b5957c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12367, "upload_time": "2016-08-11T10:09:43", "url": "https://files.pythonhosted.org/packages/33/52/6c742adce91164aef22f55ad2fda9fe1bb7e5d72ce4f60213a4761bebf1d/climatecontrol-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "5802cf1d7dd2ac023ba360eb13de07e4", "sha256": "33c030480a9c7350072421296ea69e8e6f18d64b208f3afa14dd90754975ce44" }, "downloads": -1, "filename": "climatecontrol-0.1.7.tar.gz", "has_sig": false, "md5_digest": "5802cf1d7dd2ac023ba360eb13de07e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12510, "upload_time": "2016-08-11T16:45:10", "url": "https://files.pythonhosted.org/packages/0f/29/0ab661f4d329ecfee0ffd7418e63b4718f09e64daf24fa217169c7b24332/climatecontrol-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "70c9de0d1538e6d7063d1c8a8111877f", "sha256": "fe16c1f44f02769e996953f204cddb73158943b2589cdb67b5763422638f3055" }, "downloads": -1, "filename": "climatecontrol-0.1.8.tar.gz", "has_sig": false, "md5_digest": "70c9de0d1538e6d7063d1c8a8111877f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12751, "upload_time": "2016-08-17T10:59:59", "url": "https://files.pythonhosted.org/packages/2c/60/72a548e0142cd5fa6f7bf8f3e594116ddad14a5e6740d848868befd27507/climatecontrol-0.1.8.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "05d9fe1503dc6ae0f8e5bf86f9dad1dc", "sha256": "73402537167638139bab792aab7507edac845316674a3c52d33792109a3df25c" }, "downloads": -1, "filename": "climatecontrol-0.2.1.tar.gz", "has_sig": false, "md5_digest": "05d9fe1503dc6ae0f8e5bf86f9dad1dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15569, "upload_time": "2016-12-30T02:23:45", "url": "https://files.pythonhosted.org/packages/27/5f/fa90e69e830f5e93882444a1722e5ed872b63d5330df0265c9f179634b8d/climatecontrol-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "a5ec3fe567709b2e316535877ce97da3", "sha256": "c489528e97cba334752b1ef9cf4b417d707ee0def4153db8b7a7e6d437fe22ba" }, "downloads": -1, "filename": "climatecontrol-0.2.2.tar.gz", "has_sig": false, "md5_digest": "a5ec3fe567709b2e316535877ce97da3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15689, "upload_time": "2016-12-30T14:02:52", "url": "https://files.pythonhosted.org/packages/e9/6b/97fd7e650b3059b810dcc6c53d08fe446a630564a94a34bd9629bf0d670b/climatecontrol-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "382e6b2227ac2a3b1796bd935dd122ce", "sha256": "e1f23970e04eb56caf3f48bf4a1dcc864782b63b8fb1f1dd9337bd7a6d494f44" }, "downloads": -1, "filename": "climatecontrol-0.2.3.tar.gz", "has_sig": false, "md5_digest": "382e6b2227ac2a3b1796bd935dd122ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16556, "upload_time": "2017-01-08T14:12:33", "url": "https://files.pythonhosted.org/packages/ed/71/dfa898e19690d935a7c8ebaad5cf4c049b94a2b059df2e25b8f212dee915/climatecontrol-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "ee62f60c5763896d74ff71ce78a89aa9", "sha256": "d0facbfc9e668040530f1225f6a7043ae2517a488eef2591bb84f6242a69a3ab" }, "downloads": -1, "filename": "climatecontrol-0.2.4.tar.gz", "has_sig": false, "md5_digest": "ee62f60c5763896d74ff71ce78a89aa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16878, "upload_time": "2017-03-13T13:01:21", "url": "https://files.pythonhosted.org/packages/67/41/7f69239797e5971fe1439ee8bf1c665d407042fbfbc3eeddd29c5b059991/climatecontrol-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "7b1626f170730bffcac80a8e90ca1d5e", "sha256": "777a99398ac2f30cc784cea21a17dbab208a0762d9b4680c5b755adc9b6426f2" }, "downloads": -1, "filename": "climatecontrol-0.2.5.tar.gz", "has_sig": false, "md5_digest": "7b1626f170730bffcac80a8e90ca1d5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17072, "upload_time": "2017-04-13T12:01:09", "url": "https://files.pythonhosted.org/packages/11/eb/542a69c3101223948f4e1dce26c79e38f762e77a674a1329892ab93f2efb/climatecontrol-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "6386cbc133d4bda11ed007f7c7b6f110", "sha256": "f26adfce18ed263bb69b40d58e4eed9692667bd39217e73d355d210b9bd6baa8" }, "downloads": -1, "filename": "climatecontrol-0.2.6.tar.gz", "has_sig": false, "md5_digest": "6386cbc133d4bda11ed007f7c7b6f110", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17531, "upload_time": "2017-05-18T11:42:08", "url": "https://files.pythonhosted.org/packages/55/83/2ad9eeb145adc91cd73cacf88b683cec8064183a5e1317cc6a45dcf38f27/climatecontrol-0.2.6.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "72fe326af8983d316ffbbf62cd63c1d5", "sha256": "2bd12cd8e9ec474818e0b47cda2c23026e05701f292e376348599f9fa4de8c4a" }, "downloads": -1, "filename": "climatecontrol-0.3.tar.gz", "has_sig": false, "md5_digest": "72fe326af8983d316ffbbf62cd63c1d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20629, "upload_time": "2017-08-04T09:13:31", "url": "https://files.pythonhosted.org/packages/c4/b1/218f02ad10a3a4e669fbf8be1cfff54dd5394432bb0e6c4125a47377597b/climatecontrol-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "e95e06ba544f035e8b5beaead0c89522", "sha256": "57b5c3422fc6345d489e06d682eb051df2946490dfe8c1ab453fa0d257675d86" }, "downloads": -1, "filename": "climatecontrol-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e95e06ba544f035e8b5beaead0c89522", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20804, "upload_time": "2017-08-17T22:09:44", "url": "https://files.pythonhosted.org/packages/43/9b/98f161eddc0307c3f576b0a4e64e353432018efe15f8c0653beb091a2d3c/climatecontrol-0.3.1.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "be58fd56181718e1432c65f3a09aaff0", "sha256": "74fa6baaaa525f456bbcea8cd4cc2a42f06f9d06786f0e2a85767d34cbe8634e" }, "downloads": -1, "filename": "climatecontrol-0.4.tar.gz", "has_sig": false, "md5_digest": "be58fd56181718e1432c65f3a09aaff0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20870, "upload_time": "2017-08-21T23:33:34", "url": "https://files.pythonhosted.org/packages/ba/bc/b0d2baddbf12f7c7bc5c0757c503f46441b0bb62753468966801bb35349e/climatecontrol-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "5fc9d78a7942bd821e23f63ff4c9881f", "sha256": "06b512e3e0e884e842319939a7a107ad5ef8505b2d05082628b5e157d6e06953" }, "downloads": -1, "filename": "climatecontrol-0.4.1.tar.gz", "has_sig": false, "md5_digest": "5fc9d78a7942bd821e23f63ff4c9881f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20932, "upload_time": "2017-10-04T11:09:00", "url": "https://files.pythonhosted.org/packages/84/34/9bd7f8b1c89f465b9b0e911f00a12c83d80d7549014efb8c2a529801daf2/climatecontrol-0.4.1.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "a8ddc2962a0f0fe1aa6e946e4e061ed7", "sha256": "9eaba619b1de591a6a45942b449bd806116d0b4014f368ea28355f9ecceae307" }, "downloads": -1, "filename": "climatecontrol-0.5.tar.gz", "has_sig": false, "md5_digest": "a8ddc2962a0f0fe1aa6e946e4e061ed7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21371, "upload_time": "2018-03-13T21:23:55", "url": "https://files.pythonhosted.org/packages/64/09/5b0f12be2dc42c31d11f99c0d02a7fe3b77d91fbfbc3e68899c58bffd5e5/climatecontrol-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "acbb9117c2274edf6db8a985eb999937", "sha256": "fe92447934a0003e8d929051d12fdc516024165ba453a514e0110fb3db3756cd" }, "downloads": -1, "filename": "climatecontrol-0.6.tar.gz", "has_sig": false, "md5_digest": "acbb9117c2274edf6db8a985eb999937", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22742, "upload_time": "2018-04-22T21:17:47", "url": "https://files.pythonhosted.org/packages/cd/ad/451e3a0d3773dc8ff7ea030f0fe8eedfdd9318f16903a3f4fa930b3dc36b/climatecontrol-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "f5c2bc87df9dba59b472541fdc2ef9cd", "sha256": "e57f2b0ab9ad71d0815e637cfca5f3a43484dcc3e20a7c3a5df4e9abc181f4fa" }, "downloads": -1, "filename": "climatecontrol-0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "f5c2bc87df9dba59b472541fdc2ef9cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18148, "upload_time": "2018-07-28T22:08:54", "url": "https://files.pythonhosted.org/packages/eb/a3/1ed63cb2b1ab3ff55cbfda18f5f3d0999686fbe462a5b2f4fab848a4f7eb/climatecontrol-0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4221ab46492d92d29cb196e206525d52", "sha256": "d694bafa03e370fcb81fb9983331cdbb69cafa4b9b8eb9facd9b29e9c1d2eead" }, "downloads": -1, "filename": "climatecontrol-0.7.tar.gz", "has_sig": false, "md5_digest": "4221ab46492d92d29cb196e206525d52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23629, "upload_time": "2018-07-28T21:59:48", "url": "https://files.pythonhosted.org/packages/ec/22/587d2abddb2187b64a5559c938092f4c0e07fd0a4119962812d82a4aadb3/climatecontrol-0.7.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "7324ffe258ec394b1f826388536257dd", "sha256": "f6dc4b7b5c638eee2899abb9f2d760dfbabc74d819cf4dfb22fe475480b3350e" }, "downloads": -1, "filename": "climatecontrol-0.7.1.tar.gz", "has_sig": false, "md5_digest": "7324ffe258ec394b1f826388536257dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23644, "upload_time": "2018-08-14T20:34:59", "url": "https://files.pythonhosted.org/packages/8b/37/443108d00807fa8287d8c8876254de4a84ab1367876d9b7e82f34b40f427/climatecontrol-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "29728214c6e449d6a633595a1bea0daf", "sha256": "be4fae47b82d7da0de57e325415638a815306e4ca582866cc6bcddb4430df6e7" }, "downloads": -1, "filename": "climatecontrol-0.7.2.tar.gz", "has_sig": false, "md5_digest": "29728214c6e449d6a633595a1bea0daf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23094, "upload_time": "2018-10-04T11:50:09", "url": "https://files.pythonhosted.org/packages/21/87/e45f8458a3618e3327e745518dab2c9e33840d617fb0d133e2db59054262/climatecontrol-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "750477371ebaf778df27d9bc18bb2f95", "sha256": "cf32fa25216fa63925841c4b4ec0d020d332f5d2f01b845afd0963d0852656d9" }, "downloads": -1, "filename": "climatecontrol-0.7.3.tar.gz", "has_sig": false, "md5_digest": "750477371ebaf778df27d9bc18bb2f95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24450, "upload_time": "2019-01-17T21:04:51", "url": "https://files.pythonhosted.org/packages/11/60/416ef8efb78e7d08d3fd562f92b3f5b1eb40d57f2096112920f066facdb4/climatecontrol-0.7.3.tar.gz" } ], "0.7.3.post1": [ { "comment_text": "", "digests": { "md5": "5da00f12761d3cf6e3c3ef4a2614e6c7", "sha256": "3ec7122ac01026d55d1f8da8a13ef8fb6e77e171825f6aa7000ac8adbded7df5" }, "downloads": -1, "filename": "climatecontrol-0.7.3.post1.tar.gz", "has_sig": false, "md5_digest": "5da00f12761d3cf6e3c3ef4a2614e6c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24462, "upload_time": "2019-01-17T21:23:06", "url": "https://files.pythonhosted.org/packages/cf/b8/d894e01b654b75bfa3326c370fcc38a4e2f6881371b1d801ebe8bc3a21d8/climatecontrol-0.7.3.post1.tar.gz" } ], "0.7.3.post2": [ { "comment_text": "", "digests": { "md5": "1a4f3403a2fdf0ec598c324ae4a3e90c", "sha256": "927023f926ce7af663cba80561bddef0e6714a3545220b1a6ed7508dab7938aa" }, "downloads": -1, "filename": "climatecontrol-0.7.3.post2.tar.gz", "has_sig": false, "md5_digest": "1a4f3403a2fdf0ec598c324ae4a3e90c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24494, "upload_time": "2019-01-17T22:10:53", "url": "https://files.pythonhosted.org/packages/d4/83/ea35248d0433ab3f9109eedd23fedb58cf2efbc4a93b39ebb1ec9dbb6565/climatecontrol-0.7.3.post2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1a4f3403a2fdf0ec598c324ae4a3e90c", "sha256": "927023f926ce7af663cba80561bddef0e6714a3545220b1a6ed7508dab7938aa" }, "downloads": -1, "filename": "climatecontrol-0.7.3.post2.tar.gz", "has_sig": false, "md5_digest": "1a4f3403a2fdf0ec598c324ae4a3e90c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24494, "upload_time": "2019-01-17T22:10:53", "url": "https://files.pythonhosted.org/packages/d4/83/ea35248d0433ab3f9109eedd23fedb58cf2efbc4a93b39ebb1ec9dbb6565/climatecontrol-0.7.3.post2.tar.gz" } ] }