# Python libterraform
[![libterraform](https://img.shields.io/pypi/v/libterraform.svg)](https://pypi.python.org/pypi/libterraform)
[![libterraform](https://img.shields.io/pypi/l/libterraform.svg)](https://pypi.python.org/pypi/libterraform)
[![libterraform](https://img.shields.io/pypi/pyversions/libterraform.svg)](https://pypi.python.org/pypi/libterraform)
[![Test](https://github.com/Prodesire/py-libterraform/actions/workflows/test.yml/badge.svg)](https://github.com/Prodesire/py-libterraform/actions/workflows/test.yml)
[![libterraform](https://img.shields.io/pypi/dm/libterraform)](https://pypi.python.org/pypi/libterraform)
Python binding for [Terraform](https://www.terraform.io/).
## Installation
```bash
$ pip install libterraform
```
> **NOTE**
> - Please install version **0.3.1** or above, which solves the memory leak problem.
> - This library does **not support** multithreading.
## Usage
### Terraform CLI
`TerraformCommand` is used to invoke various Terraform commands.
Now, support all commands (`plan`, `apply`, `destroy` etc.), and return a `CommandResult` object. The `CommandResult`
object has the following properties:
- `retcode` indicates the command return code. A value of 0 or 2 is normal, otherwise is abnormal.
- `value` represents command output. If `json=True` is specified when executing the command, the output will be loaded
as json.
- `json` indicates whether to load the output as json.
- `error` indicates command error output.
To get Terraform verison:
```python
>>> from libterraform import TerraformCommand
>>> TerraformCommand().version()
<CommandResult retcode=0 json=True>
>>> _.value
{'terraform_version': '1.8.4', 'platform': 'darwin_arm64', 'provider_selections': {}, 'terraform_outdated': True}
>>> TerraformCommand().version(json=False)
<CommandResult retcode=0 json=False>
>>> _.value
'Terraform v1.8.4\non darwin_arm64\n'
```
To `init` and `apply` according to Terraform configuration files in the specified directory:
```python
>>> from libterraform import TerraformCommand
>>> cli = TerraformCommand('your_terraform_configuration_directory')
>>> cli.init()
<CommandResult retcode=0 json=False>
>>> cli.apply()
<CommandResult retcode=0 json=True>
```
Additionally, `run()` can execute arbitrary commands, returning a tuple `(retcode, stdout, stderr)`.
```python
>>> TerraformCommand.run('version')
(0, 'Terraform v1.8.4\non darwin_arm64\n', '')
>>> TerraformCommand.run('invalid')
(1, '', 'Terraform has no command named "invalid".\n\nTo see all of Terraform\'s top-level commands, run:\n terraform -help\n\n')
```
### Terraform Config Parser
`TerraformConfig` is used to parse Terraform config files.
For now, only supply `TerraformConfig.load_config_dir` method which reads the .tf and .tf.json files in the given
directory as config files and then combines these files into a single Module. This method returns `(mod, diags)`
which are both dict, corresponding to
the [*Module](https://github.com/hashicorp/terraform/blob/2a5420cb9acf8d5f058ad077dade80214486f1c4/internal/configs/module.go#L14)
and [hcl.Diagnostic](https://github.com/hashicorp/hcl/blob/v2.11.1/diagnostic.go#L26) structures in Terraform
respectively.
```python
>>> from libterraform import TerraformConfig
>>> mod, _ = TerraformConfig.load_config_dir('your_terraform_configuration_directory')
>>> mod['ManagedResources'].keys()
dict_keys(['time_sleep.wait1', 'time_sleep.wait2'])
```
## Version comparison
| libterraform | Terraform |
|-------------------------------------------------------|-------------------------------------------------------------|
| [0.8.0](https://pypi.org/project/libterraform/0.8.0/) | [1.8.4](https://github.com/hashicorp/terraform/tree/v1.8.4) |
| [0.7.0](https://pypi.org/project/libterraform/0.7.0/) | [1.6.6](https://github.com/hashicorp/terraform/tree/v1.6.6) |
| [0.6.0](https://pypi.org/project/libterraform/0.6.0/) | [1.5.7](https://github.com/hashicorp/terraform/tree/v1.5.7) |
| [0.5.0](https://pypi.org/project/libterraform/0.5.0/) | [1.3.0](https://github.com/hashicorp/terraform/tree/v1.3.0) |
| [0.4.0](https://pypi.org/project/libterraform/0.4.0/) | [1.2.2](https://github.com/hashicorp/terraform/tree/v1.2.2) |
| [0.3.1](https://pypi.org/project/libterraform/0.3.1/) | [1.1.7](https://github.com/hashicorp/terraform/tree/v1.1.7) |
## Building & Testing
If you want to develop this library, should first prepare the following environments:
- [GoLang](https://go.dev/dl/) (Version 1.21.5+)
- [Python](https://www.python.org/downloads/) (Version 3.7~3.12)
- GCC
Then, initialize git submodule:
```bash
$ git submodule init
$ git submodule update
```
`pip install` necessary tools:
```bash
$ pip install poetry pytest
```
Now, we can build and test:
```bash
$ poetry build -f wheel
$ pytest
```
## Why use this library?
Terraform is a great tool for deploying resources. If you need to call the Terraform command in the Python program for
deployment, a new process needs to be created to execute the Terraform command on the system. A typical example of this
is the [python-terraform](https://github.com/beelit94/python-terraform) library. Doing so has the following problems:
- Requires Terraform commands on the system.
- The overhead of starting a new process is relatively high.
This library compiles Terraform as a **dynamic link library** in advance, and then loads it for calling. So there is no
need to install Terraform, nor to start a new process.
In addition, since the Terraform dynamic link library is loaded, this library can further call Terraform's
**internal capabilities**, such as parsing Terraform config files.
Raw data
{
"_id": null,
"home_page": "https://github.com/Prodesire/py-libterraform",
"name": "libterraform",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.7",
"maintainer_email": null,
"keywords": "libterraform, terraform",
"author": "Prodesire",
"author_email": "wangbinxin001@126.com",
"download_url": null,
"platform": null,
"description": "# Python libterraform\n\n[![libterraform](https://img.shields.io/pypi/v/libterraform.svg)](https://pypi.python.org/pypi/libterraform)\n[![libterraform](https://img.shields.io/pypi/l/libterraform.svg)](https://pypi.python.org/pypi/libterraform)\n[![libterraform](https://img.shields.io/pypi/pyversions/libterraform.svg)](https://pypi.python.org/pypi/libterraform)\n[![Test](https://github.com/Prodesire/py-libterraform/actions/workflows/test.yml/badge.svg)](https://github.com/Prodesire/py-libterraform/actions/workflows/test.yml)\n[![libterraform](https://img.shields.io/pypi/dm/libterraform)](https://pypi.python.org/pypi/libterraform)\n\nPython binding for [Terraform](https://www.terraform.io/).\n\n## Installation\n\n```bash\n$ pip install libterraform\n```\n\n> **NOTE**\n> - Please install version **0.3.1** or above, which solves the memory leak problem.\n> - This library does **not support** multithreading.\n\n## Usage\n\n### Terraform CLI\n\n`TerraformCommand` is used to invoke various Terraform commands.\n\nNow, support all commands (`plan`, `apply`, `destroy` etc.), and return a `CommandResult` object. The `CommandResult`\nobject has the following properties:\n\n- `retcode` indicates the command return code. A value of 0 or 2 is normal, otherwise is abnormal.\n- `value` represents command output. If `json=True` is specified when executing the command, the output will be loaded\n as json.\n- `json` indicates whether to load the output as json.\n- `error` indicates command error output.\n\nTo get Terraform verison:\n\n```python\n>>> from libterraform import TerraformCommand\n>>> TerraformCommand().version()\n<CommandResult retcode=0 json=True>\n>>> _.value\n{'terraform_version': '1.8.4', 'platform': 'darwin_arm64', 'provider_selections': {}, 'terraform_outdated': True}\n>>> TerraformCommand().version(json=False)\n<CommandResult retcode=0 json=False>\n>>> _.value\n'Terraform v1.8.4\\non darwin_arm64\\n'\n```\n\nTo `init` and `apply` according to Terraform configuration files in the specified directory:\n\n```python\n>>> from libterraform import TerraformCommand\n>>> cli = TerraformCommand('your_terraform_configuration_directory')\n>>> cli.init()\n<CommandResult retcode=0 json=False>\n>>> cli.apply()\n<CommandResult retcode=0 json=True>\n```\n\nAdditionally, `run()` can execute arbitrary commands, returning a tuple `(retcode, stdout, stderr)`.\n\n```python\n>>> TerraformCommand.run('version')\n(0, 'Terraform v1.8.4\\non darwin_arm64\\n', '')\n>>> TerraformCommand.run('invalid')\n(1, '', 'Terraform has no command named \"invalid\".\\n\\nTo see all of Terraform\\'s top-level commands, run:\\n terraform -help\\n\\n')\n```\n\n### Terraform Config Parser\n\n`TerraformConfig` is used to parse Terraform config files.\n\nFor now, only supply `TerraformConfig.load_config_dir` method which reads the .tf and .tf.json files in the given\ndirectory as config files and then combines these files into a single Module. This method returns `(mod, diags)`\nwhich are both dict, corresponding to\nthe [*Module](https://github.com/hashicorp/terraform/blob/2a5420cb9acf8d5f058ad077dade80214486f1c4/internal/configs/module.go#L14)\nand [hcl.Diagnostic](https://github.com/hashicorp/hcl/blob/v2.11.1/diagnostic.go#L26) structures in Terraform\nrespectively.\n\n```python\n>>> from libterraform import TerraformConfig\n>>> mod, _ = TerraformConfig.load_config_dir('your_terraform_configuration_directory')\n>>> mod['ManagedResources'].keys()\ndict_keys(['time_sleep.wait1', 'time_sleep.wait2'])\n```\n\n## Version comparison\n\n| libterraform | Terraform |\n|-------------------------------------------------------|-------------------------------------------------------------|\n| [0.8.0](https://pypi.org/project/libterraform/0.8.0/) | [1.8.4](https://github.com/hashicorp/terraform/tree/v1.8.4) |\n| [0.7.0](https://pypi.org/project/libterraform/0.7.0/) | [1.6.6](https://github.com/hashicorp/terraform/tree/v1.6.6) |\n| [0.6.0](https://pypi.org/project/libterraform/0.6.0/) | [1.5.7](https://github.com/hashicorp/terraform/tree/v1.5.7) |\n| [0.5.0](https://pypi.org/project/libterraform/0.5.0/) | [1.3.0](https://github.com/hashicorp/terraform/tree/v1.3.0) |\n| [0.4.0](https://pypi.org/project/libterraform/0.4.0/) | [1.2.2](https://github.com/hashicorp/terraform/tree/v1.2.2) |\n| [0.3.1](https://pypi.org/project/libterraform/0.3.1/) | [1.1.7](https://github.com/hashicorp/terraform/tree/v1.1.7) |\n\n## Building & Testing\n\nIf you want to develop this library, should first prepare the following environments:\n\n- [GoLang](https://go.dev/dl/) (Version 1.21.5+)\n- [Python](https://www.python.org/downloads/) (Version 3.7~3.12)\n- GCC\n\nThen, initialize git submodule:\n\n```bash\n$ git submodule init\n$ git submodule update\n```\n\n`pip install` necessary tools:\n\n```bash\n$ pip install poetry pytest\n```\n\nNow, we can build and test:\n\n```bash\n$ poetry build -f wheel\n$ pytest\n```\n\n## Why use this library?\n\nTerraform is a great tool for deploying resources. If you need to call the Terraform command in the Python program for\ndeployment, a new process needs to be created to execute the Terraform command on the system. A typical example of this\nis the [python-terraform](https://github.com/beelit94/python-terraform) library. Doing so has the following problems:\n\n- Requires Terraform commands on the system.\n- The overhead of starting a new process is relatively high.\n\nThis library compiles Terraform as a **dynamic link library** in advance, and then loads it for calling. So there is no\nneed to install Terraform, nor to start a new process.\n\nIn addition, since the Terraform dynamic link library is loaded, this library can further call Terraform's\n**internal capabilities**, such as parsing Terraform config files.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python binding for Terraform.",
"version": "0.8.0",
"project_urls": {
"Homepage": "https://github.com/Prodesire/py-libterraform",
"Repository": "https://github.com/Prodesire/py-libterraform"
},
"split_keywords": [
"libterraform",
" terraform"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ff21e35a739a909da2811d0f7ae70af2fe57a227b91130774626ea0b0a07c5ac",
"md5": "d6d2c1339eed72bb2bfd2b4dc30cb043",
"sha256": "6e48548c9a6cdd572c42567ff45f7913c5689d4b1b7c225d1ded630f6d5960c8"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp310-cp310-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "d6d2c1339eed72bb2bfd2b4dc30cb043",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.7",
"size": 27420476,
"upload_time": "2024-07-17T03:02:35",
"upload_time_iso_8601": "2024-07-17T03:02:35.459431Z",
"url": "https://files.pythonhosted.org/packages/ff/21/e35a739a909da2811d0f7ae70af2fe57a227b91130774626ea0b0a07c5ac/libterraform-0.8.0-cp310-cp310-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "52c325f123e75248f527e970205901f51abd3c4c732b80a5b8f078de253fe80c",
"md5": "0b1852b89fbc27a9039539d7d16fe772",
"sha256": "a8118429ae8c2ca8622c55785dde0a49206229222dda96c8378abccadef8e48e"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp310-cp310-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "0b1852b89fbc27a9039539d7d16fe772",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.7",
"size": 25788554,
"upload_time": "2024-07-17T03:02:43",
"upload_time_iso_8601": "2024-07-17T03:02:43.457637Z",
"url": "https://files.pythonhosted.org/packages/52/c3/25f123e75248f527e970205901f51abd3c4c732b80a5b8f078de253fe80c/libterraform-0.8.0-cp310-cp310-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7aaa43e65b896565a3bf617b761fae31a9f053f94e64d24cc1a628ad5ce1e8a8",
"md5": "ecd9c1c70db944a5b8de3caab1ef6f1f",
"sha256": "abe854e96279e62a27a4b9ba6aa2077cf9d25854bddbba48edf43dcf78bbb066"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp310-cp310-manylinux_2_31_x86_64.whl",
"has_sig": false,
"md5_digest": "ecd9c1c70db944a5b8de3caab1ef6f1f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.7",
"size": 49312695,
"upload_time": "2024-07-17T03:02:56",
"upload_time_iso_8601": "2024-07-17T03:02:56.557337Z",
"url": "https://files.pythonhosted.org/packages/7a/aa/43e65b896565a3bf617b761fae31a9f053f94e64d24cc1a628ad5ce1e8a8/libterraform-0.8.0-cp310-cp310-manylinux_2_31_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "051913d1427337de3f52fd3b0119b07aa2c2c1782e7f6022d6847ffc31b32482",
"md5": "5b8f858b7b64cb333fce315d0f480d27",
"sha256": "9d97cda87e7b56ec443ad00ed26e15a18a75594d3c3a4bc027eb186c059a7810"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "5b8f858b7b64cb333fce315d0f480d27",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.7",
"size": 48718777,
"upload_time": "2024-07-17T03:03:09",
"upload_time_iso_8601": "2024-07-17T03:03:09.536371Z",
"url": "https://files.pythonhosted.org/packages/05/19/13d1427337de3f52fd3b0119b07aa2c2c1782e7f6022d6847ffc31b32482/libterraform-0.8.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "647fa0bd1eed5ecd076e8715456ad9fe6022c1b1e7888b7be141c11aa3de63fb",
"md5": "b814b176f0c65204cda1aeeef4da046b",
"sha256": "f74d297710913a2cabf4513763c274444f395695dd27102f0d3583bcef2952c2"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp311-cp311-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "b814b176f0c65204cda1aeeef4da046b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.7",
"size": 27420476,
"upload_time": "2024-07-17T03:03:17",
"upload_time_iso_8601": "2024-07-17T03:03:17.122731Z",
"url": "https://files.pythonhosted.org/packages/64/7f/a0bd1eed5ecd076e8715456ad9fe6022c1b1e7888b7be141c11aa3de63fb/libterraform-0.8.0-cp311-cp311-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "139f4545980723f129fb2ab749ca62c80b79d240b60c581133bffc694c850f6b",
"md5": "ca39e5d4ec6c578d0630e6b89c284f37",
"sha256": "020773d41680ff301627115f523ed5bd3da713bf3209b2ff84283b2162601fe7"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp311-cp311-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "ca39e5d4ec6c578d0630e6b89c284f37",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.7",
"size": 25788553,
"upload_time": "2024-07-17T03:03:25",
"upload_time_iso_8601": "2024-07-17T03:03:25.433838Z",
"url": "https://files.pythonhosted.org/packages/13/9f/4545980723f129fb2ab749ca62c80b79d240b60c581133bffc694c850f6b/libterraform-0.8.0-cp311-cp311-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0afbd96a91f352930ee4b59f106850b76f81222f7a787cdb98e95eafbfa75db1",
"md5": "deb712a9f151c7eeeaccef7d85318c5d",
"sha256": "5799bbbf7af72d52799f4afbffae00dd8192d1ea70c89abfcbee2bb6c1841832"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp311-cp311-manylinux_2_31_x86_64.whl",
"has_sig": false,
"md5_digest": "deb712a9f151c7eeeaccef7d85318c5d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.7",
"size": 49312694,
"upload_time": "2024-07-17T03:03:36",
"upload_time_iso_8601": "2024-07-17T03:03:36.878914Z",
"url": "https://files.pythonhosted.org/packages/0a/fb/d96a91f352930ee4b59f106850b76f81222f7a787cdb98e95eafbfa75db1/libterraform-0.8.0-cp311-cp311-manylinux_2_31_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ec03c4fd8c7bf321d0dee392a1eff73c29bbbc282831b7c339ff2122e302a9f5",
"md5": "ae40470b47ba2ef33161d0673c2ea31f",
"sha256": "806680187cf24b24d7e739f87584ad4ebc67cecb817f7634c8ccf35318bf3da3"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "ae40470b47ba2ef33161d0673c2ea31f",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.7",
"size": 48718777,
"upload_time": "2024-07-17T03:03:48",
"upload_time_iso_8601": "2024-07-17T03:03:48.380777Z",
"url": "https://files.pythonhosted.org/packages/ec/03/c4fd8c7bf321d0dee392a1eff73c29bbbc282831b7c339ff2122e302a9f5/libterraform-0.8.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b1a010924513f68b6a192d5e01daedcd0c8e9fa807bd5258d8279f0a7adba053",
"md5": "d1d81d713aabf36f4472dd2d43b97026",
"sha256": "9d4d9e745f157b5164c8e02e8bf3714d3349e61279ecaa6256a031e982bf6b6e"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp312-cp312-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "d1d81d713aabf36f4472dd2d43b97026",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.7",
"size": 27420477,
"upload_time": "2024-07-17T03:03:58",
"upload_time_iso_8601": "2024-07-17T03:03:58.329222Z",
"url": "https://files.pythonhosted.org/packages/b1/a0/10924513f68b6a192d5e01daedcd0c8e9fa807bd5258d8279f0a7adba053/libterraform-0.8.0-cp312-cp312-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "674f998d8b6bb978af390e02953db1fccec5671b5ee0844a60ebeee09afc2e06",
"md5": "302bb3b17a8ac7b93ed97a9445a69f1c",
"sha256": "d437ab3e27b43f5bf53dcc14e3e2a748e6345afa53a3be1c618e5f85164d8b93"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp312-cp312-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "302bb3b17a8ac7b93ed97a9445a69f1c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.7",
"size": 25788555,
"upload_time": "2024-07-17T03:04:06",
"upload_time_iso_8601": "2024-07-17T03:04:06.109090Z",
"url": "https://files.pythonhosted.org/packages/67/4f/998d8b6bb978af390e02953db1fccec5671b5ee0844a60ebeee09afc2e06/libterraform-0.8.0-cp312-cp312-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "91766836e7e4d7d23f27a622f513e9d8ca07bfa49c9fdba4dc6eabe2ae0e673c",
"md5": "d0dc43736c6b127ebd4d95a0a1f59ab1",
"sha256": "1cc4bd1d3c1722972281898ea3323853ea43d51a7e524e520861c0359dfc5502"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp312-cp312-manylinux_2_31_x86_64.whl",
"has_sig": false,
"md5_digest": "d0dc43736c6b127ebd4d95a0a1f59ab1",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.7",
"size": 49312694,
"upload_time": "2024-07-17T03:04:22",
"upload_time_iso_8601": "2024-07-17T03:04:22.031883Z",
"url": "https://files.pythonhosted.org/packages/91/76/6836e7e4d7d23f27a622f513e9d8ca07bfa49c9fdba4dc6eabe2ae0e673c/libterraform-0.8.0-cp312-cp312-manylinux_2_31_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2d0aa9619db80176aeb1cbd45d28364ad3441534db1dfdc726b879e7bb5500f2",
"md5": "b11009f240dd3e0985ba88685bb883bc",
"sha256": "19ee4bb689f6b9b4fc445351941f1642a2b54fab23de530f29769ceb6fb2ea85"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "b11009f240dd3e0985ba88685bb883bc",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.7",
"size": 48718778,
"upload_time": "2024-07-17T03:04:39",
"upload_time_iso_8601": "2024-07-17T03:04:39.118584Z",
"url": "https://files.pythonhosted.org/packages/2d/0a/a9619db80176aeb1cbd45d28364ad3441534db1dfdc726b879e7bb5500f2/libterraform-0.8.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2ba901c48a08b501ddd140af0303947e30ccad4156f2c5d340139c45669c1bf6",
"md5": "083a555245b49fb9d36ec3c91bd6df12",
"sha256": "7f92759b2353c453ab97783e63dd717e43f3904e008a7482c4cc4cbbaf0a6167"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp37-cp37m-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "083a555245b49fb9d36ec3c91bd6df12",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": "<4.0,>=3.7",
"size": 27420479,
"upload_time": "2024-07-17T03:04:47",
"upload_time_iso_8601": "2024-07-17T03:04:47.492857Z",
"url": "https://files.pythonhosted.org/packages/2b/a9/01c48a08b501ddd140af0303947e30ccad4156f2c5d340139c45669c1bf6/libterraform-0.8.0-cp37-cp37m-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "12f62cf82829498ca61ecb8f63391929aabb36abb3b31f650c6171c2ab7721c1",
"md5": "8b372e869ed8802d53c13c3a12b02c89",
"sha256": "f347dfa7d09ebd2f7aadaefc919aa463fd5ce6d2b40cd826ac4c37478a3166e3"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp37-cp37m-manylinux_2_31_x86_64.whl",
"has_sig": false,
"md5_digest": "8b372e869ed8802d53c13c3a12b02c89",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": "<4.0,>=3.7",
"size": 49312699,
"upload_time": "2024-07-17T03:04:58",
"upload_time_iso_8601": "2024-07-17T03:04:58.143791Z",
"url": "https://files.pythonhosted.org/packages/12/f6/2cf82829498ca61ecb8f63391929aabb36abb3b31f650c6171c2ab7721c1/libterraform-0.8.0-cp37-cp37m-manylinux_2_31_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7c21db26c6b7d28c6c64a5dcf10a1510dad27a80105e96d3507ee56b86552f53",
"md5": "a4b2caf8ec3d4edecfacfb080b88c20d",
"sha256": "077cc03b0bf59f526bc2ddbd2776cab939766b51781ae5494d9d272961c9063d"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "a4b2caf8ec3d4edecfacfb080b88c20d",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": "<4.0,>=3.7",
"size": 48718781,
"upload_time": "2024-07-17T03:05:13",
"upload_time_iso_8601": "2024-07-17T03:05:13.200468Z",
"url": "https://files.pythonhosted.org/packages/7c/21/db26c6b7d28c6c64a5dcf10a1510dad27a80105e96d3507ee56b86552f53/libterraform-0.8.0-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3cef7e739a31373ee668a7e98e00d67427fa922893ba21a5c02661148e619342",
"md5": "aa4690b12ec186058295bd198bb6c8e8",
"sha256": "f490e06de8f7651787bcac365fbebbbb37333d1e7594045a1616d7e6c385a64a"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp38-cp38-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "aa4690b12ec186058295bd198bb6c8e8",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<4.0,>=3.7",
"size": 27420441,
"upload_time": "2024-07-17T03:05:24",
"upload_time_iso_8601": "2024-07-17T03:05:24.350631Z",
"url": "https://files.pythonhosted.org/packages/3c/ef/7e739a31373ee668a7e98e00d67427fa922893ba21a5c02661148e619342/libterraform-0.8.0-cp38-cp38-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "87d3c7d45eff57cfe563722f7c7679d724d25a0cd76cdbe1ba0ff4576b4fc9fb",
"md5": "b211cb6e934d99b35340a57d03add203",
"sha256": "d53a2cc51469f06d6ec16c750bd7c86633c00e48dfa7e3dfe991eb62545cbcaf"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp38-cp38-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "b211cb6e934d99b35340a57d03add203",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<4.0,>=3.7",
"size": 25788554,
"upload_time": "2024-07-17T03:05:36",
"upload_time_iso_8601": "2024-07-17T03:05:36.016860Z",
"url": "https://files.pythonhosted.org/packages/87/d3/c7d45eff57cfe563722f7c7679d724d25a0cd76cdbe1ba0ff4576b4fc9fb/libterraform-0.8.0-cp38-cp38-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7b3f6fa710d9cedce2ecc2e7336a3595a406270a5cc4390d52882f0718410272",
"md5": "e8b4469f90a428116f4d9cf49ef56656",
"sha256": "f0bb0607a26f5b5072a1aacc4d4a6d7f5b3e0517357a44414205364eedae1727"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp38-cp38-manylinux_2_31_x86_64.whl",
"has_sig": false,
"md5_digest": "e8b4469f90a428116f4d9cf49ef56656",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<4.0,>=3.7",
"size": 49312694,
"upload_time": "2024-07-17T03:05:51",
"upload_time_iso_8601": "2024-07-17T03:05:51.778813Z",
"url": "https://files.pythonhosted.org/packages/7b/3f/6fa710d9cedce2ecc2e7336a3595a406270a5cc4390d52882f0718410272/libterraform-0.8.0-cp38-cp38-manylinux_2_31_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f0c1450b100bd1c2e17cf3b5f806eae220b3eac0889ba2a4ff07441031b4db93",
"md5": "31e3e6b1fc89d70085bd5d1957762e35",
"sha256": "26e916834da828fb1b4d94b8f2888f32bd1b66e3b8b36438340ecb59f2e2bad5"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "31e3e6b1fc89d70085bd5d1957762e35",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<4.0,>=3.7",
"size": 48718776,
"upload_time": "2024-07-17T03:06:02",
"upload_time_iso_8601": "2024-07-17T03:06:02.866194Z",
"url": "https://files.pythonhosted.org/packages/f0/c1/450b100bd1c2e17cf3b5f806eae220b3eac0889ba2a4ff07441031b4db93/libterraform-0.8.0-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "02614e7f4d14b3897a4a7005de573305204fa4fa77d936e7baa8c4d77b509572",
"md5": "df0dab552b3377f3a7750c3633412e84",
"sha256": "08316237f27826896d9c16e854eac50a97a24f79e2be09c92bd899ee1e079ee5"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp39-cp39-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "df0dab552b3377f3a7750c3633412e84",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<4.0,>=3.7",
"size": 27420442,
"upload_time": "2024-07-17T03:06:12",
"upload_time_iso_8601": "2024-07-17T03:06:12.036722Z",
"url": "https://files.pythonhosted.org/packages/02/61/4e7f4d14b3897a4a7005de573305204fa4fa77d936e7baa8c4d77b509572/libterraform-0.8.0-cp39-cp39-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c8d2347eeaaf3fa721cfb5e32c519b2e846955c8dae5349b6aa62dbbf84aa003",
"md5": "d0b67870b0ad454a558dbf25bc31dacc",
"sha256": "f278e76d52fd2249ae205272265f5b25b5ae6be986a10a4bc6663bdbdbf15a43"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp39-cp39-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "d0b67870b0ad454a558dbf25bc31dacc",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<4.0,>=3.7",
"size": 25788552,
"upload_time": "2024-07-17T03:06:21",
"upload_time_iso_8601": "2024-07-17T03:06:21.506340Z",
"url": "https://files.pythonhosted.org/packages/c8/d2/347eeaaf3fa721cfb5e32c519b2e846955c8dae5349b6aa62dbbf84aa003/libterraform-0.8.0-cp39-cp39-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "01c37bba7faf7c1ad1e5802ed4a386d9c96eca498d45710cf12d1e3d3727848c",
"md5": "33dec3ccd9156c74cd56d48631a827a7",
"sha256": "e315f5209d813a582edeb9fec06ec1a4b4828c0a3d3cdea9ca43a074f2c46908"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp39-cp39-manylinux_2_31_x86_64.whl",
"has_sig": false,
"md5_digest": "33dec3ccd9156c74cd56d48631a827a7",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<4.0,>=3.7",
"size": 49312692,
"upload_time": "2024-07-17T03:06:33",
"upload_time_iso_8601": "2024-07-17T03:06:33.565263Z",
"url": "https://files.pythonhosted.org/packages/01/c3/7bba7faf7c1ad1e5802ed4a386d9c96eca498d45710cf12d1e3d3727848c/libterraform-0.8.0-cp39-cp39-manylinux_2_31_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4a2102c835fb8c06cf95d6babde41a2625b37f2fa99d295974a74ad1c6932c40",
"md5": "d92ae7e03f3f5a4d4a162344801d012c",
"sha256": "026c59f5a9ca5077cd864def280a437f3167fdeabe402020da673637ff6e9c66"
},
"downloads": -1,
"filename": "libterraform-0.8.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "d92ae7e03f3f5a4d4a162344801d012c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<4.0,>=3.7",
"size": 48718777,
"upload_time": "2024-07-17T03:06:47",
"upload_time_iso_8601": "2024-07-17T03:06:47.338378Z",
"url": "https://files.pythonhosted.org/packages/4a/21/02c835fb8c06cf95d6babde41a2625b37f2fa99d295974a74ad1c6932c40/libterraform-0.8.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-17 03:02:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Prodesire",
"github_project": "py-libterraform",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "libterraform"
}