{ "info": { "author": "Amplify Education", "author_email": "github@amplify.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "[![Codacy Badge](https://api.codacy.com/project/badge/Grade/e8bf52c80edf4070a18d8725b1f5f166)](https://app.codacy.com/app/amplify-education/terrawrap?utm_source=github.com&utm_medium=referral&utm_content=amplify-education/terrawrap&utm_campaign=Badge_Grade_Settings)\n[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/ceeb459250dd429f9ca5a497c0e45051)](https://www.codacy.com/app/amplify-education/terrawrap?utm_source=github.com&utm_medium=referral&utm_content=amplify-education/terrawrap&utm_campaign=Badge_Coverage)\n[![Build Status](https://travis-ci.org/amplify-education/terrawrap.svg?branch=master)](https://travis-ci.org/amplify-education/terrawrap)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/amplify-education/terrawrap/master/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/terrawrap.svg)](https://pypi.org/project/terrawrap/)\n[![Python Versions](https://img.shields.io/pypi/pyversions/terrawrap.svg)](https://pypi.python.org/pypi/terrawrap)\n[![Downloads](https://img.shields.io/badge/dynamic/json.svg?label=downloads&url=https%3A%2F%2Fpypistats.org%2Fapi%2Fpackages%2Fterrawrap%2Frecent&query=data.last_month&colorB=brightgreen&suffix=%2FMonth)](https://pypistats.org/packages/terrawrap)\n\n# Terrawrap\n\nSet of Python-based CLI tools for working with Terraform configurations in bulk\n\n## About Amplify\n\nAmplify builds innovative and compelling digital educational products that empower teachers and students across the \ncountry. We have a long history as the leading innovator in K-12 education - and have been described as the best tech \ncompany in education and the best education company in tech. While others try to shrink the learning experience into \nthe technology, we use technology to expand what is possible in real classrooms with real students and teachers.\n\nLearn more at \n\n## Table of Contents\n\n- [Features](#features)\n\n- [Goals](#goals)\n\n- [Getting Started](#getting-started)\n - [Prerequisites](#prerequisites)\n - [Installing](#installing)\n - [Building From Source](#building-from-source)\n - [Running Tests](#running-tests)\n\n- [Configuration](#configuration)\n - [.tf_wrapper](#tf_wrapper)\n - [Autovars](#autovars)\n - [Backend Configuration](#backend-configuration)\n\n- [Commands](#commands)\n - [tf](#tf)\n - [plan_check](#plan_check)\n\n## Features\n\n1. `auto.tfvars` inheritance. Terrawrap makes it easier to share variables between Terraform directories through\n inheritance of `auto.tfvars` files.\n\n2. Remote backend generation. Terrawrap makes it easier to work with remote state backends by\n generating configuration for them.\n\n3. Repository level plan/apply. Terrawrap provides commands for running plan/apply recursively on a entire\n repository at once.\n\n## Goals\n\n1. Make Terraform DRY for large organizations. A Terraform best practices is to break up Terraform configs\n into many small state files. This leads to an explosion in boilerplate code when using Terraform in large\n organizations with 100s of state files. Terrawrap reduces some boilerplate code by providing `auto.tfvars`\n inheritance and generating backend configurations.\n\n2. Make Terraform code easier to manage. Terraform only runs commands on a single directory at a time. This makes\n working with hundreds of terraform directories/state files hard. Terrawrap provides utilities for running\n commands against an entire repository at once instead of one directory at a time.\n\n3. All Terraform code should be valid Terraform. Any Terraform code used with Terrawrap should be runnable with\n Terraform by itself without the wrapper. Terrawrap does not provide any new syntax.\n\n4. Terrawrap is not a code generator. Generated code is harder to\n read and understand. Code generators tend to lead to leaky abstractions that can be more trouble than they are\n worth. However, Terrawrap does generate remote backend configs as a workaround to Terraform's lack of support for\n variables in backend configs (See ). We expect this to be\n the only instance of code generation in Terrawrap.\n\n## Getting Started\n\n### Prerequisites\n\nTerrawrap requires Python 3.6.0 or higher to run.\n\n### Installing\n\nThis package can be installed using `pip`\n\n```sh\npip3 install terrawrap\n```\n\nYou should now be able to use the `tf` command.\n\n## Building From Source\n\nFor development, `tox>=2.9.1` is recommended.\n\n### Running Tests\n\nTerrawrap uses `tox`. You will need to install tox with `pip install tox`.\nRunning `tox` will automatically execute linters as well as the unit tests.\n\nYou can also run them individually with the `-e` argument.\n\nFor example, `tox -e py37-unit` will run the unit tests for python 3.7\n\nTo see all the available options, run `tox -l`.\n\n## Configuration\n\n### .tf_wrapper\n\nTerrawrap can be configured via a `.tf_wrapper` file. The wrapper will walk the provided configuration\npath and look for `.tf_wrapper` files. The files are merged in the order that they are discovered. Consider \nthe below example:\n\n```text\nfoo\n\u251c\u2500\u2500 bar\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 .tf_wrapper\n\u2514\u2500\u2500 .tf_wrapper\n```\n\nIf there are conflicting configurations between those two `.tf_wrapper` files, the `.tf_wrapper` file in\n`foo/bar` will win.\n\nThe following options are supported in `.tf_wrapper`:\n\n```yaml\nconfigure_backend: True # If true, automatically configure Terraform backends.\npipeline_check: True # If true, require this directory to be in a pipeline file.\n\nenvvars:\n :\n source: # The source of the envvar. One of `['ssm', 'text']`.\n path: # If the source of the envvar is `ssm`, the SSM Parameter Store path to lookup the value of the environment variable from.\n value: # if the source of the envvar is `text`, the string value to set as the environment variable.\n```\n\n### Autovars\n\nTerrawrap automatically adds `-var-file` arguments to any terraform command by scanning for `*.auto.tfvars` \nfiles in the directory structure.\n\nFor example, the following command `tf config/foo/bar apply` with the following directory structure:\n\n```text\nconfig\n\u251c\u2500\u2500 foo\n|\u00a0\u00a0 \u2514\u2500\u2500 bar\n|\u00a0\u00a0 \u2502 \u251c\u2500\u2500 baz.tf\n|\u00a0\u00a0 \u2502 \u2514\u2500\u2500 bar.auto.tfvars\n|\u00a0\u00a0 \u2514\u2500\u2500 foo.auto.tfvars\n\u2514\u2500\u2500 config.auto.tfvars\n```\n\nwill generate the following command:\n\n```bash\nterraform apply -var-file config/config.auto.tfvars \\\n -var-file config/foo/foo.auto.tfvars \\\n -var-file config/foo/bar/bar.auto.tfvars\n```\n\n### Backend Configuration\n\nTerrawrap supports automatically configuring backends by injecting the appropriate `-backend-config`\nargs when running `init`\n\nFor example, the Terrawrap command `tf config/foo/bar init` will generate a Terraform command like below if using\nan AWS S3 remote state backend\n\n```bash\nterraform init -reconfigure \\\n -backend-config=dynamodb_table= \\\n -backend-config=encrypt=true \\\n -backend-config=key=config/foo/bar.tfstate \\\n -backend-config=region= \\\n -backend-config=bucket= \\\n -backend-config=skip_region_validation=true \\\n -backend-config=skip_credentials_validation=true\n```\n\nTerrawrap configures the backend by looking for `.tf_wrapper` files in the directory structure. \nEither `s3` or `gcs` are supported. See the relevant Terraform documentation for the options available\nfor each type of backend: \n\n\n\n#### S3 Backend\n```yml\nbackends:\n s3:\n region:\n role_arn:\n bucket:\n dynamodb_table:\n```\n\n| Option Name | Required | Purpose |\n| -------------- | -------- | ------------------------------------------------------------------------------------ |\n| bucket | Yes | Name of S3 Bucket |\n| region | Yes | AWS Region that S3 state bucket and DynamoDB lock table are located in |\n| dynamodb_table | No | DynamoDB table to use for state locking. Locking is disable if lock_table is not set |\n| role_arn | No | AWS role to assume when reading/writing to S3 bucket and lock table |\n\nThe S3 state file key name is generated from the directory name being used to run the terraform command. \nFor example, `tf config/foo/bar init` uses a state file with the key `config/foo/bar.tfstate` in S3\n\n#### GCS Backend\n```yml\nbackends:\n gcs:\n bucket:\n```\n| Option Name | Required | Purpose |\n| -------------- | -------- | ------------------------------------------------------------------------------------ |\n| bucket | Yes | Name of GCS Bucket |\n\n## Commands\n\n### tf\n\n`tf ` runs a terraform command for a given directory that contains `*.tf` files. \nTerrawrap automatically includes autovars as described above when running the given command. Any Terraform\ncommand is supported \n\n### plan_check\n\n`plan_check ` runs `terraform plan` recursively for all child directories starting at the given directory.\n`plan_check` uses `git` to identify which files have changed compared with the `master` branch. It will then run `plan`\non any directory that contains `tf` files with the following criteria\n\n1. A directory that has files that changed\n2. A directory that is symlinked to a directory that has files changed\n3. A directory with symlinked files that are linked to files that changed\n4. A directory that that uses a Terraform module whose source changed\n5. A directory with Terraform files that refer to an autovar file that changed\n\n### backend_check\n\n`backend_check [directory]` verifies that all directories under the given directory that contain `.tf` files\nalso have Terraform Backends defined.", "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/amplify-education/terrawrap", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "terrawrap", "package_url": "https://pypi.org/project/terrawrap/", "platform": "", "project_url": "https://pypi.org/project/terrawrap/", "project_urls": { "Homepage": "https://github.com/amplify-education/terrawrap" }, "release_url": "https://pypi.org/project/terrawrap/0.5.7/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "Set of Python-based CLI tools for working with Terraform configurations", "version": "0.5.7" }, "last_serial": 5907634, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "65f023ac524082707eb0b5be7757b59f", "sha256": "60109303d54c5ac8e5db74756ccd793ec9616607e35b4618618f089cb1d0e9fd" }, "downloads": -1, "filename": "terrawrap-0.1.0.tar.gz", "has_sig": false, "md5_digest": "65f023ac524082707eb0b5be7757b59f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23069, "upload_time": "2019-05-01T03:52:56", "url": "https://files.pythonhosted.org/packages/46/97/b14fa27d8c3596918040f4ac02f737d26104a0fc7ab68d3efb7834700613/terrawrap-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a8bc9a687dc4dba2c2a4dad742240d04", "sha256": "253fde26536b6eb9f2e830f892c8a419aaeafb9de8ddfbdd9bbbb0d8db6450f2" }, "downloads": -1, "filename": "terrawrap-0.1.1.tar.gz", "has_sig": false, "md5_digest": "a8bc9a687dc4dba2c2a4dad742240d04", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23068, "upload_time": "2019-05-01T03:57:20", "url": "https://files.pythonhosted.org/packages/3c/53/1e35d1ba3e79b0192cda52bf4c936478144d049fe2aae861626fc8bf710a/terrawrap-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "072ae0642dbb6a1d1e96c9cb3881e8c5", "sha256": "09726ba445286f0397e9bb3d44e27e03c881a87cd66479abc42c39bfb40f382a" }, "downloads": -1, "filename": "terrawrap-0.1.2.tar.gz", "has_sig": false, "md5_digest": "072ae0642dbb6a1d1e96c9cb3881e8c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23255, "upload_time": "2019-05-01T04:05:40", "url": "https://files.pythonhosted.org/packages/6e/e4/4ff6746e072ae91a744cb774c7b77096f5266a6d63d298449d95f1abb9c4/terrawrap-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "5cd92b5fa02893ff1287cf921ed5a2df", "sha256": "0daec2cc96df21d825e1e069093f2015de08af05c3c5227d3eb1905dc21d81c4" }, "downloads": -1, "filename": "terrawrap-0.1.3.tar.gz", "has_sig": false, "md5_digest": "5cd92b5fa02893ff1287cf921ed5a2df", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23527, "upload_time": "2019-05-01T22:06:10", "url": "https://files.pythonhosted.org/packages/29/aa/5a6153cd5b4ae58c715f007afb0d8008adaf9af9f30582298c1508ee6f9d/terrawrap-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b37c7273c86d1c96e2d7de225ef835e6", "sha256": "cd525cc674e1b8018b95a0e5ec3ad28c39cc0682d894faab262419dc8be5b465" }, "downloads": -1, "filename": "terrawrap-0.1.4.tar.gz", "has_sig": false, "md5_digest": "b37c7273c86d1c96e2d7de225ef835e6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23654, "upload_time": "2019-05-02T18:54:04", "url": "https://files.pythonhosted.org/packages/64/8c/4b441d27b2f30821ece5e078884bc4903b27dd0f92c1aa4baf1fbffa5be5/terrawrap-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "65d8df22007ed4bbe8a7559fe85f6a91", "sha256": "a1595c99a081b9beb373147639519f0f7f8d18bc1df21e602f6f77cfe5f0f28a" }, "downloads": -1, "filename": "terrawrap-0.1.5.tar.gz", "has_sig": false, "md5_digest": "65d8df22007ed4bbe8a7559fe85f6a91", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23653, "upload_time": "2019-05-02T21:13:14", "url": "https://files.pythonhosted.org/packages/62/64/38a81926a8b306147c557c67f23c593fee347ba59b2753c733f4986afe2d/terrawrap-0.1.5.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "958c76ab22f3ee6255c54091749c62f5", "sha256": "fd90fb61dc59e7976ca2324a7eebdc418e45abdd5d39826e5aa3423bc081e87b" }, "downloads": -1, "filename": "terrawrap-0.2.0.tar.gz", "has_sig": false, "md5_digest": "958c76ab22f3ee6255c54091749c62f5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 24318, "upload_time": "2019-05-06T18:39:28", "url": "https://files.pythonhosted.org/packages/fa/74/cd7b079d57fd378caf251027f731e007144b7016cadc4a48a732923374b7/terrawrap-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "93d64c35a94fea378d920dfde557e7ea", "sha256": "b9944182b2ae54c03511f31b3d7e6d4aa606e6f0261543d6b1c65d5d11edaba2" }, "downloads": -1, "filename": "terrawrap-0.2.1.tar.gz", "has_sig": false, "md5_digest": "93d64c35a94fea378d920dfde557e7ea", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 24340, "upload_time": "2019-05-10T22:11:02", "url": "https://files.pythonhosted.org/packages/61/40/492a357b7d4a3ada9391c76c247d3d220f8f825e7551c8a481b15a9fe55b/terrawrap-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "4c89ff7fac4eb26c55bf16378344fec5", "sha256": "ec487e5132c45a9bb53126635ac3955b697d4d3c4381880770456ed62882d884" }, "downloads": -1, "filename": "terrawrap-0.2.2.tar.gz", "has_sig": false, "md5_digest": "4c89ff7fac4eb26c55bf16378344fec5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 25395, "upload_time": "2019-05-16T18:24:47", "url": "https://files.pythonhosted.org/packages/8a/90/38f8769b3edc6de4f30147ab634028573004b17f35dfff78d703e7a0468d/terrawrap-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "57702d28feb179776430cfb2ca41b7b9", "sha256": "2ae2c23d2d4bd01e67164e1e707a8ab9b398d7b09748b93bef48a2f8179c8b7b" }, "downloads": -1, "filename": "terrawrap-0.3.0.tar.gz", "has_sig": false, "md5_digest": "57702d28feb179776430cfb2ca41b7b9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 25921, "upload_time": "2019-05-16T18:25:53", "url": "https://files.pythonhosted.org/packages/e2/71/ee4c54398ea0440b2bd8148078a11a81223cccaa09db0ac752b2c8a20f43/terrawrap-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "d0765ab343984220bcd1308808c4cc51", "sha256": "d8d3f575bc89e84883dae243965181d65bf0459ab85af9bab0772c2440e74b55" }, "downloads": -1, "filename": "terrawrap-0.3.1.tar.gz", "has_sig": false, "md5_digest": "d0765ab343984220bcd1308808c4cc51", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 24869, "upload_time": "2019-05-17T14:03:44", "url": "https://files.pythonhosted.org/packages/53/8b/8ff25c7fc269da533e720ac477fb3ddb61b1949c1b1c1f08b221e01845af/terrawrap-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "b0797e02cbbaf6634a7c6b3e78e47110", "sha256": "7cd4b3e75410b2683aaeda5eaa9efcb5b0c83905de466ad964736e1c7d2f571b" }, "downloads": -1, "filename": "terrawrap-0.3.2.tar.gz", "has_sig": false, "md5_digest": "b0797e02cbbaf6634a7c6b3e78e47110", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 24868, "upload_time": "2019-05-17T17:51:49", "url": "https://files.pythonhosted.org/packages/10/63/62b59a94e66b4c0d941b64eb0220be6961691bb2d35e09aa19c05ee7e768/terrawrap-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "daa32b123abb6e8058d705ad6b2e2b15", "sha256": "960163c4253d0942516a06215f24eb03f003214da3c27486f1408fc40d63be9f" }, "downloads": -1, "filename": "terrawrap-0.4.0.tar.gz", "has_sig": false, "md5_digest": "daa32b123abb6e8058d705ad6b2e2b15", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 24968, "upload_time": "2019-05-22T14:40:12", "url": "https://files.pythonhosted.org/packages/37/ac/ea4b59be5d0c647894335ad91320dff232d05f3a811c22670d36a267b846/terrawrap-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "95c52a8dc9d7785a1e1168259c6424ac", "sha256": "46bf2a66445ef4d4ad775e2482a41595f8798b3b3f650cb5e0781730fff900ba" }, "downloads": -1, "filename": "terrawrap-0.4.1.tar.gz", "has_sig": false, "md5_digest": "95c52a8dc9d7785a1e1168259c6424ac", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 25060, "upload_time": "2019-05-24T17:18:03", "url": "https://files.pythonhosted.org/packages/bd/05/e93e2f125b615f1116524b43d2d1cac2627ea3b8a4a6b0bc74c4f2fdbaf7/terrawrap-0.4.1.tar.gz" } ], "0.4.10": [ { "comment_text": "", "digests": { "md5": "a35d8ce6ae7b47eefa4460c86b1096d9", "sha256": "f82f52bbf2b7a0efdc073f61e8f9f16ca097ab933dbd6ac7a5f02e538a5b19f7" }, "downloads": -1, "filename": "terrawrap-0.4.10.tar.gz", "has_sig": false, "md5_digest": "a35d8ce6ae7b47eefa4460c86b1096d9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22363, "upload_time": "2019-08-01T13:40:19", "url": "https://files.pythonhosted.org/packages/a1/8d/3230db8780dfbc2a2eb32f7820579ecd7ff0a4a060440de3c56de386de1e/terrawrap-0.4.10.tar.gz" } ], "0.4.11": [ { "comment_text": "", "digests": { "md5": "88ca5f41dc602fb9096c5e993abc7f94", "sha256": "bbeb94f589bca853679224ff2e9f1f9fd98711a4b4110aab8d6cf12f9567e4d1" }, "downloads": -1, "filename": "terrawrap-0.4.11.tar.gz", "has_sig": false, "md5_digest": "88ca5f41dc602fb9096c5e993abc7f94", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22481, "upload_time": "2019-08-02T13:28:49", "url": "https://files.pythonhosted.org/packages/27/64/4d234c81d3475f38089ca7f1350b2e5291bd627e2ab56899da3cf98b2074/terrawrap-0.4.11.tar.gz" } ], "0.4.12": [ { "comment_text": "", "digests": { "md5": "a7f408cb7f5e4cecc332dad2424a5e61", "sha256": "7d2d7561b0aeb0eda4cec45f4025670d83ff13246debaf381410917ae8cb2f88" }, "downloads": -1, "filename": "terrawrap-0.4.12.tar.gz", "has_sig": false, "md5_digest": "a7f408cb7f5e4cecc332dad2424a5e61", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22563, "upload_time": "2019-08-02T15:05:11", "url": "https://files.pythonhosted.org/packages/43/be/eedecd7b082386f3f0cc98ca32adce53e600b1ebd30085313ef943db4191/terrawrap-0.4.12.tar.gz" } ], "0.4.13": [ { "comment_text": "", "digests": { "md5": "2d28402fbb978101024e192417f5cbc5", "sha256": "46aec0ed0db03bbc41af264948b234fb65b929e90ef3eea2d4076dcff2688eaf" }, "downloads": -1, "filename": "terrawrap-0.4.13.tar.gz", "has_sig": false, "md5_digest": "2d28402fbb978101024e192417f5cbc5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22605, "upload_time": "2019-08-02T20:14:59", "url": "https://files.pythonhosted.org/packages/d6/e4/57c8e7c8015e7117722fd5614794b41ce03ba06a6744121903b0d3470352/terrawrap-0.4.13.tar.gz" } ], "0.4.14": [ { "comment_text": "", "digests": { "md5": "9ee88c7c3495a101a95919df9f98cf86", "sha256": "5f981c9fce44f1efce8847b97c46177c3e689f3297b04ad28cd7dca034acafe6" }, "downloads": -1, "filename": "terrawrap-0.4.14.tar.gz", "has_sig": false, "md5_digest": "9ee88c7c3495a101a95919df9f98cf86", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22705, "upload_time": "2019-08-06T20:25:28", "url": "https://files.pythonhosted.org/packages/26/7a/b3e332631d6f91e1b9cd7a5d14eb4786d0a93d35e587ced234d6eea4591f/terrawrap-0.4.14.tar.gz" } ], "0.4.15": [ { "comment_text": "", "digests": { "md5": "037299f085c13f8ebe27e43ac3775a80", "sha256": "1abc4d1239778a30ebeb9a04dd598d7437eb54de6a17d04c4f94bba0e799d7a2" }, "downloads": -1, "filename": "terrawrap-0.4.15.tar.gz", "has_sig": false, "md5_digest": "037299f085c13f8ebe27e43ac3775a80", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22793, "upload_time": "2019-08-09T22:21:32", "url": "https://files.pythonhosted.org/packages/b2/cf/e7d22d57ebf8bea1d9b43b9adc3f37cd802d5ae10b40ba5ca39d491ae316/terrawrap-0.4.15.tar.gz" } ], "0.4.16": [ { "comment_text": "", "digests": { "md5": "d65c4416ca17867c42e1929c133569a0", "sha256": "6bcaf78efc602dde489b06a2578d6d051db1ed67d87ddb2ba4f71e7c72b6e3ad" }, "downloads": -1, "filename": "terrawrap-0.4.16.tar.gz", "has_sig": false, "md5_digest": "d65c4416ca17867c42e1929c133569a0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22855, "upload_time": "2019-08-09T22:39:31", "url": "https://files.pythonhosted.org/packages/c9/9b/8932348b6065a6faabad8a86c587cf6c5125ce9f21bd892bc9987e1f5f02/terrawrap-0.4.16.tar.gz" } ], "0.4.17": [ { "comment_text": "", "digests": { "md5": "3ee7ec719ebc1ae8ed815d0d84bb53b2", "sha256": "02fdde81b0354d9c8edb2c635916c62b371a0d16534a4aadc603352d7918fef1" }, "downloads": -1, "filename": "terrawrap-0.4.17.tar.gz", "has_sig": false, "md5_digest": "3ee7ec719ebc1ae8ed815d0d84bb53b2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22983, "upload_time": "2019-08-27T16:19:13", "url": "https://files.pythonhosted.org/packages/d5/f8/07e774c1da3a537460440320e4b0c3ecf664ae794d327ec14a74e56c03c8/terrawrap-0.4.17.tar.gz" } ], "0.4.18": [ { "comment_text": "", "digests": { "md5": "90643eb494356396f5bb6726277d2132", "sha256": "9cd90e9b0ea80ed96354775b5a854cd700f289cec1be3a36bff43eeffa15defa" }, "downloads": -1, "filename": "terrawrap-0.4.18.tar.gz", "has_sig": false, "md5_digest": "90643eb494356396f5bb6726277d2132", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22978, "upload_time": "2019-08-27T18:55:56", "url": "https://files.pythonhosted.org/packages/a2/79/d24b4337bed19274fbb1eb059fb98a9e1a32420e172066a605af2f0dab89/terrawrap-0.4.18.tar.gz" } ], "0.4.19": [ { "comment_text": "", "digests": { "md5": "23bdd4fadb7c1449b4aaf74b13961cd9", "sha256": "ad9c31969467611f0d46bbe08b36fedc241e016a8894e446173fea92b211dcc0" }, "downloads": -1, "filename": "terrawrap-0.4.19.tar.gz", "has_sig": false, "md5_digest": "23bdd4fadb7c1449b4aaf74b13961cd9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23008, "upload_time": "2019-08-27T19:36:45", "url": "https://files.pythonhosted.org/packages/29/3c/b43f0254666bd4a7536c4657d05c8da60f72105dd92f3fe4dc39881bfc14/terrawrap-0.4.19.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "53fdeb0a0ea42cca80a43c0d0a761551", "sha256": "aa8ed3324594e4501d36c0ae2b47f79a17a66db0d3069ec499484a2ad0305ed6" }, "downloads": -1, "filename": "terrawrap-0.4.2.tar.gz", "has_sig": false, "md5_digest": "53fdeb0a0ea42cca80a43c0d0a761551", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 25049, "upload_time": "2019-07-01T14:50:57", "url": "https://files.pythonhosted.org/packages/f7/4e/d5bb684adbe34db3ef3a2204a43ea2972de45f497751337aaa487e64bd8d/terrawrap-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "41f9a6012fc5c8da3313d39971c4aeb8", "sha256": "6564053064176ec28a25837f1ef713c4ad1215fdec0e9ef365617119b868e9a5" }, "downloads": -1, "filename": "terrawrap-0.4.3.tar.gz", "has_sig": false, "md5_digest": "41f9a6012fc5c8da3313d39971c4aeb8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 25046, "upload_time": "2019-07-08T17:46:41", "url": "https://files.pythonhosted.org/packages/b6/6b/5210d59d39dd40e4d123c05d5245cc6bb93382a8dc688f4d6693f85cefcb/terrawrap-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "74c8150705fd1e3ce0ff35e170fa33ba", "sha256": "9f0263cca6dc6d16810a838997d95b56970c4e5d7e6325fa62bc3fc6b9b7a6f5" }, "downloads": -1, "filename": "terrawrap-0.4.4.tar.gz", "has_sig": false, "md5_digest": "74c8150705fd1e3ce0ff35e170fa33ba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22915, "upload_time": "2019-07-22T14:16:14", "url": "https://files.pythonhosted.org/packages/24/09/72f12643d895a07de93260d746156e41d049ad278865defbb520ee203aa3/terrawrap-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "5edb2bf12dedc05a2570b15c46a29a86", "sha256": "27050799ab56375882ca97401989b0a8f917b60e52b6843e7c8bdd00fd0992dc" }, "downloads": -1, "filename": "terrawrap-0.4.5.tar.gz", "has_sig": false, "md5_digest": "5edb2bf12dedc05a2570b15c46a29a86", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23019, "upload_time": "2019-07-24T22:07:20", "url": "https://files.pythonhosted.org/packages/10/5a/7d877201954e6c1611c85cab40cd8db0abd8fca20febb2abdbebe68b5f9e/terrawrap-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "8f9ba7dd61ba7f9bac764417ef0270c2", "sha256": "2985256a6d0a97778b588a099c4bd2b005ede2a2b83c1ca6cd7906d437f6511b" }, "downloads": -1, "filename": "terrawrap-0.4.6.tar.gz", "has_sig": false, "md5_digest": "8f9ba7dd61ba7f9bac764417ef0270c2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22354, "upload_time": "2019-07-25T19:47:42", "url": "https://files.pythonhosted.org/packages/98/22/c895e23d445a4c269511c4388040e9affccd84e1bfb220d7a6bacfcbafdc/terrawrap-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "4a951306cff34e9e6955c05aadca1c54", "sha256": "b899ac53dcdc07b2e39998a6e50959c9627abf4faa6e2394579ac5c26dcf2da5" }, "downloads": -1, "filename": "terrawrap-0.4.7.tar.gz", "has_sig": false, "md5_digest": "4a951306cff34e9e6955c05aadca1c54", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22258, "upload_time": "2019-07-26T11:25:07", "url": "https://files.pythonhosted.org/packages/1a/25/9b0c3dc22942d86889c0fe8406b43ec385ce96911b63ff03f3a1dc517812/terrawrap-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "4de5d18f69284f9e038336b0e91a7936", "sha256": "3e7cb4b2f4e4ec60bc61889089d627c73bea16d70df30d523bf8a8e406560983" }, "downloads": -1, "filename": "terrawrap-0.4.8.tar.gz", "has_sig": false, "md5_digest": "4de5d18f69284f9e038336b0e91a7936", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22262, "upload_time": "2019-07-29T14:06:27", "url": "https://files.pythonhosted.org/packages/d4/75/e857ac9738e0a039a4c63b363fb2909ce667ff425254566d11d663f423f9/terrawrap-0.4.8.tar.gz" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "fb15fa62df0eb066db7577bf9f189740", "sha256": "c1920f6d601a0479961e412a6d5a680cacbe0ceb8876310fc32b313d8ed154f7" }, "downloads": -1, "filename": "terrawrap-0.4.9.tar.gz", "has_sig": false, "md5_digest": "fb15fa62df0eb066db7577bf9f189740", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22287, "upload_time": "2019-07-29T14:30:50", "url": "https://files.pythonhosted.org/packages/40/67/c9f1d9d3c41ee77072ae6d18840261ac2e372db896d0f0d2c9a79d0970d0/terrawrap-0.4.9.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d1f2cce72753ad23bc13d6b98b442e43", "sha256": "8ae6782221c11292055aae980d67c9cb3a2d7a3dc695988f4996e0d9561ad86c" }, "downloads": -1, "filename": "terrawrap-0.5.0.tar.gz", "has_sig": false, "md5_digest": "d1f2cce72753ad23bc13d6b98b442e43", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23740, "upload_time": "2019-08-30T17:38:01", "url": "https://files.pythonhosted.org/packages/f3/38/113719b391aa3a34bb9b0f035456b456e73c1ac804815e3d93853a5805a1/terrawrap-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "2e7f24fa5dd7df0c1b6dce573fc846c0", "sha256": "af9de5516d689ae6675778ce1d95c0b34413d5822e628067406d5159b2be7998" }, "downloads": -1, "filename": "terrawrap-0.5.1.tar.gz", "has_sig": false, "md5_digest": "2e7f24fa5dd7df0c1b6dce573fc846c0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23726, "upload_time": "2019-09-10T21:37:54", "url": "https://files.pythonhosted.org/packages/e2/8a/05328b83defd13177979b2e79ce13d41e8e256ef12bcebaf89ace9848fb9/terrawrap-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "575d582451e3f6503f91f9eafa7c0f25", "sha256": "f7a27805faf0fbfa575bc6b6a1ac40ed5580ce53d53c0c47324d6c90609dc3e4" }, "downloads": -1, "filename": "terrawrap-0.5.2.tar.gz", "has_sig": false, "md5_digest": "575d582451e3f6503f91f9eafa7c0f25", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23734, "upload_time": "2019-09-13T16:14:18", "url": "https://files.pythonhosted.org/packages/02/f7/02125b08b16160fd85ef5b982483b100c807204f02ef1967792d621beb90/terrawrap-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "dfbf3f4cc7472791135d19b5776b07ab", "sha256": "f475322e50ace7bffb3fcbdde7f91821f6f09cbcfc480f57488b2a9e45057772" }, "downloads": -1, "filename": "terrawrap-0.5.3.tar.gz", "has_sig": false, "md5_digest": "dfbf3f4cc7472791135d19b5776b07ab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23989, "upload_time": "2019-09-17T04:09:21", "url": "https://files.pythonhosted.org/packages/cc/8c/49c2d56d4f47ebb58cfa4ae4d7c304221834498cdb9f18aa1e68741d5216/terrawrap-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "af60ea290b927b11561d05c46c1ecefe", "sha256": "b0e68adc21d15b132a1ad8decc29e6d03e7906097950ab6da7b5bea19887f8da" }, "downloads": -1, "filename": "terrawrap-0.5.4.tar.gz", "has_sig": false, "md5_digest": "af60ea290b927b11561d05c46c1ecefe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23980, "upload_time": "2019-09-17T04:22:23", "url": "https://files.pythonhosted.org/packages/ae/3d/5cb33224d8cc8dcb061fff55f4a0ff9562c2846a66e69ff45931bcc020a4/terrawrap-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "61f5833cabfb3897e073f8d4123fd22c", "sha256": "5befb4df93ccfa84c49ca25a019b4fca185928619348c8efee7bc8f2f4265b54" }, "downloads": -1, "filename": "terrawrap-0.5.5.tar.gz", "has_sig": false, "md5_digest": "61f5833cabfb3897e073f8d4123fd22c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 23996, "upload_time": "2019-09-18T13:51:29", "url": "https://files.pythonhosted.org/packages/df/db/526a107357655da3f956301676035b257f16ca932cea7ae0ce0489a3628d/terrawrap-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "64f3097e7809b71f461197553e3ad1a9", "sha256": "2d9dff3f130cbdef858dccb3d638538a7413b8dc1a640a6e1139c0699777f842" }, "downloads": -1, "filename": "terrawrap-0.5.6.tar.gz", "has_sig": false, "md5_digest": "64f3097e7809b71f461197553e3ad1a9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 24697, "upload_time": "2019-09-18T20:25:50", "url": "https://files.pythonhosted.org/packages/cb/e2/f18393e65b9c58e7c1935bb6b679826a146dea7d7dad36fb8f934f950802/terrawrap-0.5.6.tar.gz" } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "c109cacd273a184f7e54784adfd6d0b5", "sha256": "2a3ff6b85a70eb3e0d50a5132960443ada4b225b1c3d42d7e7f81d603dae552b" }, "downloads": -1, "filename": "terrawrap-0.5.7.tar.gz", "has_sig": false, "md5_digest": "c109cacd273a184f7e54784adfd6d0b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 24713, "upload_time": "2019-09-30T15:46:31", "url": "https://files.pythonhosted.org/packages/05/6d/7156bdd67340892e441e8b3d722ba3d73c42e3e44fd6e3bc9a12036fc7e8/terrawrap-0.5.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c109cacd273a184f7e54784adfd6d0b5", "sha256": "2a3ff6b85a70eb3e0d50a5132960443ada4b225b1c3d42d7e7f81d603dae552b" }, "downloads": -1, "filename": "terrawrap-0.5.7.tar.gz", "has_sig": false, "md5_digest": "c109cacd273a184f7e54784adfd6d0b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 24713, "upload_time": "2019-09-30T15:46:31", "url": "https://files.pythonhosted.org/packages/05/6d/7156bdd67340892e441e8b3d722ba3d73c42e3e44fd6e3bc9a12036fc7e8/terrawrap-0.5.7.tar.gz" } ] }