{ "info": { "author": "YakDriver", "author_email": "projects@plus3it.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Utilities" ], "description": "![scratch relax tv](https://github.com/YakDriver/scratchrelaxtv/raw/master/assets/srt.gif \"Extract HCL Vars\")\n\n

\n \n \n \n \n \n \n \n \n

\n\nTerraform module development tool.\n\n1. Extract variables from `main.tf` and generate a `variables.tf` file\n1. Find missing variables in `variables.tf` and `main.tf` based on each other\n1. Generate a module use stub from a `variables.tf` file\n1. Generate a .env file with variables from `main.tf`\n1. Delete extra *scratchrelaxtv* files\n\n# install\n\n```\npip install scratchrelaxtv\n```\n\n# tips\n\nOnce installed, you can run *scratchrelaxtv* by typing either `relaxtv` or `scratchrelaxtv`.\n\nFind out more about Terraform workflows and using *scratchrelaxtv* [here](https://medium.com/@dirk.avery/terraform-secure-simple-sweet-development-workflow-d7188d33d9cf).\n\n# workflows\n\nHere are two example workflows using *scratchrelaxtv*.\n\n**Original module development**: \n1. Write `main.tf` with whatever variables you need\n1. Run *scratchrelaxtv* to generate `variables.tf`\n1. Fill in descriptions, defaults, etc. in `variables.tf`\n1. Run `terraform fmt` to prettify everything\n\n**Cleanup module**:\n1. Run *scratchrelaxtv* in folder with `main.tf` and `variables.tf` to find missing variables\n1. Using `-cf` option, automatically add missing vars to `variables.tf`\n1. Fill in descriptions, defaults, etc. in `variables.tf` for newly added vars\n1. Run `terraform fmt` to prettify everything\n\n# examples\n\n## example: generate `variables.tf`\n\nBy default, *scratchrelaxtv* looks for `main.tf` and will generate a `variables.tf` file. Variables will be in the same order in `variables.tf` as they were in `main.tf`. There are options to sort variables. You can `--force` to overwrite an existing `variables.tf` file. Otherwise, *scratchrelaxtv* will generate new `variables.tf` files with each run: `variables.1.tf`, `variables.2.tf` and so on.\n\nAssume this `main.tf`:\n```hcl\nresource \"aws_s3_bucket\" \"this\" {\n count = \"${var.create_bucket ? 1 : 0}\"\n bucket = \"${var.bucket}\"\n region = \"${var.region}\"\n}\n```\n\nRun *scratchrelaxtv*:\n```console\n$ relaxtv\n2019-04-26 08:02:54,011 - INFO - generating variables file\n2019-04-26 08:02:54,011 - INFO - input file: main.tf\n2019-04-26 08:02:54,011 - INFO - output file: variables.tf\n2019-04-26 08:02:54,011 - INFO - not forcing overwrite of output file\n2019-04-26 08:02:54,011 - INFO - not ordering output file\n```\n\nThe generated `variables.tf`:\n```hcl\nvariable \"create_bucket\" {\n description = \"\"\n type = \"string\"\n default = \"\"\n}\n\nvariable \"bucket\" {\n description = \"\"\n type = \"string\"\n default = \"\"\n}\n\nvariable \"region\" {\n description = \"\"\n type = \"string\"\n default = \"\"\n}\n```\n\n## example: find and fix missing variables\n\nAssume you already have a `main.tf` and a `variables.tf`. In this example, the `variables.tf` is missing the `region` variable.\n\n`main.tf`:\n```hcl\nresource \"aws_s3_bucket\" \"this\" {\n bucket = \"${var.bucket}\"\n region = \"${var.region}\"\n}\n```\n\n`variables.tf`:\n```hcl\nvariable \"bucket\" {\n description = \"The bucket where the stuff will be stored\"\n type = \"string\"\n default = \"\"\n}\n```\n\nRun *scratchrelaxtv* to automatically add any missing variables:\n\n```console\n$ relaxtv -cf\n2019-04-26 08:21:27,289 - INFO - checking for missing variables\n2019-04-26 08:21:27,289 - INFO - input file: main.tf\n2019-04-26 08:21:27,289 - INFO - output file: variables.tf\n2019-04-26 08:21:27,289 - INFO - forcing overwrite of output file\n2019-04-26 08:21:27,289 - INFO - not ordering output file\n2019-04-26 08:21:27,290 - WARNING - input file main.tf is missing variables:\nregion\n```\n\nNow, the `variables.tf` looks like this:\n```hcl\nvariable \"bucket\" {\n description = \"The bucket where the stuff will be stored\"\n type = \"string\"\n default = \"\"\n}\n\nvariable \"region\" {\n description = \"\"\n type = \"string\"\n default = \"\"\n}\n```\n\n## example: generate a stub for using the module\n\nBy default, when generating a stub, *scratchrelaxtv* looks for `variables.tf`.\n\nAssume this `variables.tf`:\n```hcl\nvariable \"id\" {\n description = \"The ID of the resource\"\n type = \"string\"\n default = \"\"\n}\n\nvariable \"bucket\" {\n description = \"The bucket where the stuff will be stored\"\n type = \"string\"\n default = \"\"\n}\n\nvariable \"region\" {\n description = \"The AWS region where the bucket lives\"\n type = \"string\"\n default = \"\"\n}\n```\n\nRun *scratchrelaxtv* with the module stub option:\n```console\n$ relaxtv -m\n2019-04-26 08:09:27,147 - INFO - generating module usage stub\n2019-04-26 08:09:27,147 - INFO - input file: variables.tf\n2019-04-26 08:09:27,147 - INFO - output file: modstub.tf\n2019-04-26 08:09:27,147 - INFO - not forcing overwrite of output file\n2019-04-26 08:09:27,147 - INFO - not ordering output file\n```\n\nThe generated `modstub.tf`:\n```hcl\nmodule \"tests2\" {\n source = \"../tests2\"\n\n providers = {\n aws = \"aws\"\n }\n\n id = \"${local.id}\"\n bucket = \"${local.bucket}\"\n region = \"${local.region}\"\n}\n```\n\n## example: generate a `.env` (dotenv) file\n\nBy default, when generating a `.env` file, *scratchrelaxtv* looks for `variables.tf`.\n\nAssume this `variables.tf`:\n```hcl\nresource \"aws_s3_bucket\" \"this\" {\n bucket = \"${var.bucket}\"\n region = \"${var.region}\"\n}\n```\n\nRun *scratchrelaxtv* with the generate `.env` and sort-ascending options:\n```console\n$ relaxtv -ea\n2019-06-21 20:01:35,362 - INFO - generating .env file\n2019-06-21 20:01:35,362 - INFO - input file: main.tf\n2019-06-21 20:01:35,362 - INFO - output file: .env\n2019-06-21 20:01:35,362 - INFO - not forcing overwrite of output file\n2019-06-21 20:01:35,362 - INFO - ordering output file ascending\n```\n\nThe generated `.env`:\n```bash\nunset \"${!TF_VAR_@}\"\nTF_VAR_bucket=replace\nTF_VAR_region=replace\n```\n\n## example: remove files\n\n```console\n$ relaxtv -r\n```\n\n*scratchrelaxtv* can also tidy up your directories by removing its own extra generated files. Presumably it will only remove files you no longer need but *be careful*. This chart shows examples of what would be deleted or not. \n\n**NOTE**: *scratchrelaxtv* removes files in the current directory _and subdirectories_.\n\n| Filename | Deleted? |\n| -------- | ------ |\n| variables.tf | no |\n| modstub.tf | yes |\n| modstub.1.tf | yes |\n| variables.1.tf | yes |\n| xyz.abc | no |\n| variables.a.tf | no |\n| variables.43.tf | yes |\n| modstub | no |\n| modstub..tf | no |\n\n# help\n\n*scratchrelaxtv* includes help:\n\n```console\n$ relaxtv --help\nusage: scratchrelaxtv [-h] [-i INPUT] [-o OUTPUT] [-f] [-m] [-n MODNAME] [-r]\n [-c] [-e] [-a | -d]\n\noptional arguments:\n -h, --help show this help message and exit\n -i INPUT, --input INPUT\n file to extract vars from\n -o OUTPUT, --output OUTPUT\n file to write extracted vars to\n -f, --force overwrite existing out file\n -m, --modstub generate module usage stub\n -n MODNAME, --modname MODNAME\n name to use in module stub\n -r, --remove remove all modstub.tf, variables.#.tf files\n -c, --check check that all vars are listed\n -e, --env generate .env with Terraform vars\n -a, --asc sort output variables in ascending order\n -d, --desc sort output variables in descending order\n```\n\n# CHANGE LOG\n\n## 0.5.2 - 2019.07.19\n\n* Add compatibility with HCL2 / Terraform 0.12.x variables (variables without `\"${}\"`)\n* Remove feature to automatically set lists default value to an empty list (does not work well with HCL2-style variables)\n\n## 0.5.0 - 2019.07.02\n\n* Add feature to generate Terraform variables (`.tfvars`) file\n\n## 0.4.0 - 2019.06.21\n\n* Add feature to generate dot-env (`.env`) file\n\n## 0.3.0 - 2019.04.25\n\n* Add functionality to check existing `main.tf` and `variables.tf` for missing variables\n\n## 0.2.1 - 2019.04.25\n\n* Fix inconsequential error thrown when removing files\n\n## 0.2.0 - 2019.04.25\n\n* Add capability to delete extra working files\n\n## 0.1.3 - 2019.04.17\n\n* Add module stub capability\n\n## 0.1.2 - 2019.04.17\n\n* Add simple docs\n\n## 0.1.1 - 2019.04.16\n\n* Initial working version\n\n## 0.1.0 - 2019.04.15\n\n* Initial release!\n\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/YakDriver/scratchrelaxtv", "keywords": "", "license": "Apache Software License 2.0", "maintainer": "", "maintainer_email": "", "name": "scratchrelaxtv", "package_url": "https://pypi.org/project/scratchrelaxtv/", "platform": "Linux", "project_url": "https://pypi.org/project/scratchrelaxtv/", "project_urls": { "Homepage": "https://github.com/YakDriver/scratchrelaxtv" }, "release_url": "https://pypi.org/project/scratchrelaxtv/0.5.2/", "requires_dist": null, "requires_python": "", "summary": "Terraform developer tool to extract variables and generate variables.tf files.", "version": "0.5.2" }, "last_serial": 5558398, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "4be516ad9dc3d5ba468f5b0ac39e63e0", "sha256": "11a9ef606dcf2253b03e1526ec00e83ebd8b0d8515250b6b6c113dc3f1f9e592" }, "downloads": -1, "filename": "scratchrelaxtv-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4be516ad9dc3d5ba468f5b0ac39e63e0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16966, "upload_time": "2019-04-15T23:31:36", "url": "https://files.pythonhosted.org/packages/f1/26/677410456d5a4cff5ccae2a20ef087a4677e99fe32595dbb3fe1274664f3/scratchrelaxtv-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "182646c8e89cf33a6a273aac4dad016f", "sha256": "18b6a66e3e6663746a421d4ee08383576e3c89151ee753f28514e402ffb8f14d" }, "downloads": -1, "filename": "scratchrelaxtv-0.1.1.tar.gz", "has_sig": false, "md5_digest": "182646c8e89cf33a6a273aac4dad016f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20428, "upload_time": "2019-04-15T23:31:38", "url": "https://files.pythonhosted.org/packages/1a/20/ea4c7705a7cd28bfba32cd04ccc8f9c3b48549a4b06a5b7c79f84a070354/scratchrelaxtv-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "f33bfcf797605281963cdfd095aedebd", "sha256": "7ba2d61df1f521d208641980355061f2ca83f6a7aa9eb604d2582c5ade48d902" }, "downloads": -1, "filename": "scratchrelaxtv-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f33bfcf797605281963cdfd095aedebd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17389, "upload_time": "2019-04-17T16:41:02", "url": "https://files.pythonhosted.org/packages/73/02/5549105ccc30725ffc6fb916fa9043888db278561a35ae48ee462f99606e/scratchrelaxtv-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0bffe9f13a1a307fb2001674f5e81345", "sha256": "9d4771a2d7a799a67f6e5dbcb4e87b9c13e83395d78c0452e3e18d31e3813478" }, "downloads": -1, "filename": "scratchrelaxtv-0.1.2.tar.gz", "has_sig": false, "md5_digest": "0bffe9f13a1a307fb2001674f5e81345", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21226, "upload_time": "2019-04-17T16:41:04", "url": "https://files.pythonhosted.org/packages/2d/73/9f9343845af7c31ef831b9e7b72d3a0b76662f30be5c52e1a6d9a83aa4ac/scratchrelaxtv-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "a9537046ac0c1565c693b6ac213a5291", "sha256": "3113eadc038cc9bc1f41b27296e6b6ec4016973c534251a7d99923ae579b2535" }, "downloads": -1, "filename": "scratchrelaxtv-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a9537046ac0c1565c693b6ac213a5291", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18034, "upload_time": "2019-04-18T15:10:41", "url": "https://files.pythonhosted.org/packages/ef/86/6601da7fa698afa2c7cc6c742aef7bdc00aac0fa017b7f3f2f13ad556dbc/scratchrelaxtv-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3d4e8054e82380173513ebd03243478", "sha256": "7308fc0178848ee11bf3cd65c9adaf4a626d7ec15bb526610bb93a30c51b03b6" }, "downloads": -1, "filename": "scratchrelaxtv-0.1.3.tar.gz", "has_sig": false, "md5_digest": "a3d4e8054e82380173513ebd03243478", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22277, "upload_time": "2019-04-18T15:10:42", "url": "https://files.pythonhosted.org/packages/62/78/38d4a6b80b7ee4219990806c8e1a3334aa0fa5e5e10ac7d13a2e50f1ebbb/scratchrelaxtv-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1e209de5b732741dc27cf9d888f0ad0a", "sha256": "5897c9175d88b17572a8dff7ce3900523f8e0d370f069397e153e4a69a13b2c7" }, "downloads": -1, "filename": "scratchrelaxtv-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e209de5b732741dc27cf9d888f0ad0a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18445, "upload_time": "2019-04-25T12:47:01", "url": "https://files.pythonhosted.org/packages/07/b5/9e206c11ff4b8bcebd7a89fd3691cdbf8f51ec245eb0ae2634fc6ea0a23e/scratchrelaxtv-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6da1c5b7d755c8797d85f99b22c6ad27", "sha256": "a541427df98713a80a463d455657d560dffaccd9929a6dc21fa11ee9548ac266" }, "downloads": -1, "filename": "scratchrelaxtv-0.2.0.tar.gz", "has_sig": false, "md5_digest": "6da1c5b7d755c8797d85f99b22c6ad27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23048, "upload_time": "2019-04-25T12:47:03", "url": "https://files.pythonhosted.org/packages/c6/0d/89fee1a0548853e1bab4b62f7c48d9fcb43bde74b4f876133c9d6951ecbf/scratchrelaxtv-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ac48195583659df10390dfab793e6c3b", "sha256": "238fb013bc8c1b47f08f5df9880e44c52b305f1acc8ce0417d332d6dbc1b41aa" }, "downloads": -1, "filename": "scratchrelaxtv-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ac48195583659df10390dfab793e6c3b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18723, "upload_time": "2019-04-25T21:32:46", "url": "https://files.pythonhosted.org/packages/7c/98/385c0af9a3b5ae658b1b1a0341028c6812f673be9472929c54347229412d/scratchrelaxtv-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3869ed7da9ffb79b28921bad5ebf82c", "sha256": "d56f2d0a43e0c24e883d87ea24386b74e2654c6c97320085118cd49bd91f2078" }, "downloads": -1, "filename": "scratchrelaxtv-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a3869ed7da9ffb79b28921bad5ebf82c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23590, "upload_time": "2019-04-25T21:32:48", "url": "https://files.pythonhosted.org/packages/f0/71/77df765e1da0773f4aff2ecb8226dea801d1a8989c5c5cce8d189dcea7c9/scratchrelaxtv-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "04d58d7b790584aa3f6a9480b0482f5d", "sha256": "5edcf5236b10c4b5268412f4e6122687bc28cd67a497f7314a6a246fe7a74012" }, "downloads": -1, "filename": "scratchrelaxtv-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "04d58d7b790584aa3f6a9480b0482f5d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20034, "upload_time": "2019-04-26T12:41:50", "url": "https://files.pythonhosted.org/packages/a8/95/0d5698f8a16d4e626cce782cef5e236ff521a80555c66bb413ea94dc8bb3/scratchrelaxtv-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "284490fa30382157ee0cdd2c1b14ea3b", "sha256": "551241785ad410f5be4d70e869e307de44afb8225c61d16735fe61b45112fa0f" }, "downloads": -1, "filename": "scratchrelaxtv-0.3.0.tar.gz", "has_sig": false, "md5_digest": "284490fa30382157ee0cdd2c1b14ea3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25959, "upload_time": "2019-04-26T12:41:52", "url": "https://files.pythonhosted.org/packages/2f/f1/d91e97f43e5d72567200f7cb3d51e08553db5a9a247365a8da0eb609e7f8/scratchrelaxtv-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "e8dbf823efcd7f3682e5ed2e0f1fa2c6", "sha256": "a7d519d1eef6d18384ec2177f20b957c060b52c64f3b36aa06161600c6f894cb" }, "downloads": -1, "filename": "scratchrelaxtv-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e8dbf823efcd7f3682e5ed2e0f1fa2c6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20398, "upload_time": "2019-06-22T01:00:44", "url": "https://files.pythonhosted.org/packages/1b/eb/59c91394e2906efb1353db98020b2df48e7927b88b90f5ec065f2de8250f/scratchrelaxtv-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a4f189738fcdf8e9da00fe85b5ff617f", "sha256": "16e3fd786273f763d85b8237d0e1e28ad69975447ed2bbd157d8f1f4e4973fce" }, "downloads": -1, "filename": "scratchrelaxtv-0.4.0.tar.gz", "has_sig": false, "md5_digest": "a4f189738fcdf8e9da00fe85b5ff617f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26721, "upload_time": "2019-06-22T01:00:46", "url": "https://files.pythonhosted.org/packages/fb/f8/67fc4249bbd4e82bc271dd89989f4794e438bcd539777487c74a47b947e5/scratchrelaxtv-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d2b1fba67aca169edad8fa6f20cc697f", "sha256": "e13a6d6b5feb3fdc7fc9b0c909ad155acfd930bcc7b958fd259deb97b43e1951" }, "downloads": -1, "filename": "scratchrelaxtv-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d2b1fba67aca169edad8fa6f20cc697f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20520, "upload_time": "2019-07-03T02:15:03", "url": "https://files.pythonhosted.org/packages/82/5f/9b3ee3938945bae6451ba9807b67ea2232e62186b1174c9c515d842591e9/scratchrelaxtv-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a3f9ba0907f3f53da8fe82a73bc33dd", "sha256": "cda0eb70939ef2a68124c67754fdcd41622bb111ac65186ba583393ad7d4e297" }, "downloads": -1, "filename": "scratchrelaxtv-0.5.0.tar.gz", "has_sig": false, "md5_digest": "6a3f9ba0907f3f53da8fe82a73bc33dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26995, "upload_time": "2019-07-03T02:15:05", "url": "https://files.pythonhosted.org/packages/c7/08/f6dddf136af0726dd727a80693a8eb38008bc06ca13213cfeaabd2378121/scratchrelaxtv-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "371c507cea20f8bcb8618d1e6a268a66", "sha256": "315e71dfee595d1000718911006b9d7a870287ea72a8a17e1b37fd55cc1622a8" }, "downloads": -1, "filename": "scratchrelaxtv-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "371c507cea20f8bcb8618d1e6a268a66", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20523, "upload_time": "2019-07-03T06:19:59", "url": "https://files.pythonhosted.org/packages/f5/cb/360ebe373f8a6affea58194f8a85b0165741684bac4601aa49d8ef4fd767/scratchrelaxtv-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6286547c9eda0714d5b2d528eddc24be", "sha256": "3f100a612a22bee834550e7f92020039acbd043678f9b809f351d697cdca499e" }, "downloads": -1, "filename": "scratchrelaxtv-0.5.1.tar.gz", "has_sig": false, "md5_digest": "6286547c9eda0714d5b2d528eddc24be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27005, "upload_time": "2019-07-03T06:20:01", "url": "https://files.pythonhosted.org/packages/fc/ac/69c9fda54c0546b3242334507d78b499f66d2b05884e2f92eeb4c2dc4160/scratchrelaxtv-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "50d329aa3442b98e39454ad87df06eb1", "sha256": "4216283c9b10edd16b72022324f69b689997afebda346f6663ed5528fc38f799" }, "downloads": -1, "filename": "scratchrelaxtv-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "50d329aa3442b98e39454ad87df06eb1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20482, "upload_time": "2019-07-19T21:04:12", "url": "https://files.pythonhosted.org/packages/13/e4/4de469237c4c533d4a365cc35b81a5630fde2d03cf7bef05fae222c5022f/scratchrelaxtv-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8e0baa2087e98f9082773003339785a", "sha256": "a714349614b97803f14e2ce1014558572b52a7be1cf0e3a8e4af818507bc9429" }, "downloads": -1, "filename": "scratchrelaxtv-0.5.2.tar.gz", "has_sig": false, "md5_digest": "a8e0baa2087e98f9082773003339785a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27200, "upload_time": "2019-07-19T21:04:14", "url": "https://files.pythonhosted.org/packages/d3/93/96d9f58c1773d3240a8ed49bc35038b65bc2562167582fde39691f1f043e/scratchrelaxtv-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "50d329aa3442b98e39454ad87df06eb1", "sha256": "4216283c9b10edd16b72022324f69b689997afebda346f6663ed5528fc38f799" }, "downloads": -1, "filename": "scratchrelaxtv-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "50d329aa3442b98e39454ad87df06eb1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20482, "upload_time": "2019-07-19T21:04:12", "url": "https://files.pythonhosted.org/packages/13/e4/4de469237c4c533d4a365cc35b81a5630fde2d03cf7bef05fae222c5022f/scratchrelaxtv-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8e0baa2087e98f9082773003339785a", "sha256": "a714349614b97803f14e2ce1014558572b52a7be1cf0e3a8e4af818507bc9429" }, "downloads": -1, "filename": "scratchrelaxtv-0.5.2.tar.gz", "has_sig": false, "md5_digest": "a8e0baa2087e98f9082773003339785a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27200, "upload_time": "2019-07-19T21:04:14", "url": "https://files.pythonhosted.org/packages/d3/93/96d9f58c1773d3240a8ed49bc35038b65bc2562167582fde39691f1f043e/scratchrelaxtv-0.5.2.tar.gz" } ] }