libterraform


Namelibterraform JSON
Version 0.5.0 PyPI version JSON
download
home_pagehttps://github.com/Prodesire/py-libterraform
SummaryPython binding for Terraform.
upload_time2023-09-14 08:38:45
maintainer
docs_urlNone
authorProdesire
requires_python>=3.7,<4.0
licenseMIT
keywords libterraform terraform
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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.2.2', 'platform': 'darwin_arm64', 'provider_selections': {}, 'terraform_outdated': False}
>>> TerraformCommand().version(json=False)
<CommandResult retcode=0 json=False>
>>> _.value
'Terraform v1.2.2\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.2.2\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.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.18+)
- [Python](https://www.python.org/downloads/) (Version 3.7~3.10)
- 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": "",
    "docs_url": null,
    "requires_python": ">=3.7,<4.0",
    "maintainer_email": "",
    "keywords": "libterraform,terraform",
    "author": "Prodesire",
    "author_email": "wangbinxin001@126.com",
    "download_url": "",
    "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.2.2', 'platform': 'darwin_arm64', 'provider_selections': {}, 'terraform_outdated': False}\n>>> TerraformCommand().version(json=False)\n<CommandResult retcode=0 json=False>\n>>> _.value\n'Terraform v1.2.2\\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.2.2\\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.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.18+)\n- [Python](https://www.python.org/downloads/) (Version 3.7~3.10)\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.5.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": "7d54ccb5f86a0bb0e44b5c523c922ddb493c1109acef5f683c010c03dace5ab6",
                "md5": "81c12296167fe42f0bbedd6607b30d6a",
                "sha256": "7f812cff6cad2c564a2e207c4a0eed4a89ec8fa03034ca8e26e5af958919e2d2"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp310-cp310-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "81c12296167fe42f0bbedd6607b30d6a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7,<4.0",
            "size": 37830511,
            "upload_time": "2023-09-14T08:38:45",
            "upload_time_iso_8601": "2023-09-14T08:38:45.444277Z",
            "url": "https://files.pythonhosted.org/packages/7d/54/ccb5f86a0bb0e44b5c523c922ddb493c1109acef5f683c010c03dace5ab6/libterraform-0.5.0-cp310-cp310-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3ff787768462c98852875e510c3d7d78df5785fd2b4a19ecf0b587a40872e543",
                "md5": "8b97e59974a71237d7afb6203ea11340",
                "sha256": "8a2a8ce2cee644241b4832a9f882e48a590045e99e3cda8c8da544afa8db65b0"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp310-cp310-macosx_13_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8b97e59974a71237d7afb6203ea11340",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7,<4.0",
            "size": 35272038,
            "upload_time": "2023-09-14T08:40:59",
            "upload_time_iso_8601": "2023-09-14T08:40:59.125031Z",
            "url": "https://files.pythonhosted.org/packages/3f/f7/87768462c98852875e510c3d7d78df5785fd2b4a19ecf0b587a40872e543/libterraform-0.5.0-cp310-cp310-macosx_13_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "776a48cb4725fe94733ee9970e7004bb0bd1f011cceea8f9b62e763f686098d2",
                "md5": "c1cd8696fbbef622b718b28c13218883",
                "sha256": "5cda1f1f7d39e3d49e1fd1d60c028f5c52bab8c446635ed003a061d43d8d624d"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp310-cp310-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c1cd8696fbbef622b718b28c13218883",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7,<4.0",
            "size": 35684408,
            "upload_time": "2023-09-14T08:38:49",
            "upload_time_iso_8601": "2023-09-14T08:38:49.878870Z",
            "url": "https://files.pythonhosted.org/packages/77/6a/48cb4725fe94733ee9970e7004bb0bd1f011cceea8f9b62e763f686098d2/libterraform-0.5.0-cp310-cp310-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "219a1c5ebb09339836c176e88687cc39af8f367fc875364a50cb278a27ace1f7",
                "md5": "cf528186638c28502f7a2c9a0686b2f9",
                "sha256": "a32d5b76989f8eb862001eac0daea688aa42e935ee8f31f3e909b965a6cc2e93"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "cf528186638c28502f7a2c9a0686b2f9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7,<4.0",
            "size": 35660069,
            "upload_time": "2023-09-14T08:38:54",
            "upload_time_iso_8601": "2023-09-14T08:38:54.171648Z",
            "url": "https://files.pythonhosted.org/packages/21/9a/1c5ebb09339836c176e88687cc39af8f367fc875364a50cb278a27ace1f7/libterraform-0.5.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "36b12a2dbd8b0f2c7cf38a6065d02a33aa0acf61b4b9308bbfca10b5811ead5b",
                "md5": "ea0d760097d1073bbc227b2786993764",
                "sha256": "835578724a08bc77a9bb85c4c577fcf9681cfbec0129cb0799499fa5832cca64"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp311-cp311-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ea0d760097d1073bbc227b2786993764",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7,<4.0",
            "size": 37830463,
            "upload_time": "2023-09-14T08:38:57",
            "upload_time_iso_8601": "2023-09-14T08:38:57.846201Z",
            "url": "https://files.pythonhosted.org/packages/36/b1/2a2dbd8b0f2c7cf38a6065d02a33aa0acf61b4b9308bbfca10b5811ead5b/libterraform-0.5.0-cp311-cp311-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3accc0bc9d067508ae5072adf7e81e04c6beff9cf5546907c3a23aefe7935107",
                "md5": "800840fcd69309d07273ae69b1a55a14",
                "sha256": "afb3a8103cd18e9d4790146d285d61628ca9f930561af3d1968dc2165b70e67c"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp311-cp311-macosx_13_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "800840fcd69309d07273ae69b1a55a14",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7,<4.0",
            "size": 35272040,
            "upload_time": "2023-09-14T08:41:12",
            "upload_time_iso_8601": "2023-09-14T08:41:12.576394Z",
            "url": "https://files.pythonhosted.org/packages/3a/cc/c0bc9d067508ae5072adf7e81e04c6beff9cf5546907c3a23aefe7935107/libterraform-0.5.0-cp311-cp311-macosx_13_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d5274df648283eeec4d903f2098e00f376eae04ff7aa065a99b00a3a8d32a1eb",
                "md5": "5d694f7530321c48b3b9a852a2112c7d",
                "sha256": "67943ea16ec696cd28067865cc29799f5f8915dd80cb36a4e11f8e6cad2a7cf5"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp311-cp311-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5d694f7530321c48b3b9a852a2112c7d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7,<4.0",
            "size": 35684409,
            "upload_time": "2023-09-14T08:39:02",
            "upload_time_iso_8601": "2023-09-14T08:39:02.683687Z",
            "url": "https://files.pythonhosted.org/packages/d5/27/4df648283eeec4d903f2098e00f376eae04ff7aa065a99b00a3a8d32a1eb/libterraform-0.5.0-cp311-cp311-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d41ba15fb1853f15c7a5c58080b9dbd556731c9980e61c9c6b1e4c46c3a9b18c",
                "md5": "eccea1263bd288e93447a1f80fa86d7c",
                "sha256": "7efed982ae2d670e785ae66d3844be19aaa99537daae1aea01b85db4a122db5d"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "eccea1263bd288e93447a1f80fa86d7c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7,<4.0",
            "size": 35660057,
            "upload_time": "2023-09-14T08:39:06",
            "upload_time_iso_8601": "2023-09-14T08:39:06.549486Z",
            "url": "https://files.pythonhosted.org/packages/d4/1b/a15fb1853f15c7a5c58080b9dbd556731c9980e61c9c6b1e4c46c3a9b18c/libterraform-0.5.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aab13745c60641bd1cd21a4bae7990870cc9fe5ce38f2be08110f0616c185b13",
                "md5": "e88bc780894e13e2c90bd9850a502b86",
                "sha256": "45ecf1f1b988e6dc85dbe9d23544b5a59976e92de6ed9937baa3c67e46ac5993"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp37-cp37m-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e88bc780894e13e2c90bd9850a502b86",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7,<4.0",
            "size": 37830463,
            "upload_time": "2023-09-14T08:39:10",
            "upload_time_iso_8601": "2023-09-14T08:39:10.547149Z",
            "url": "https://files.pythonhosted.org/packages/aa/b1/3745c60641bd1cd21a4bae7990870cc9fe5ce38f2be08110f0616c185b13/libterraform-0.5.0-cp37-cp37m-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2ca01fa802be950009425ff236a3eb1b0bfe686a8e6d4e060f38d66d69f167c0",
                "md5": "00940b2e5f52e2e50cf08fb9eb2a45bb",
                "sha256": "d930b61bafe47963e49d082ed99a5daa6e1b1cdf58b12292de453585739a8c67"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp37-cp37m-macosx_13_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "00940b2e5f52e2e50cf08fb9eb2a45bb",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7,<4.0",
            "size": 35272038,
            "upload_time": "2023-09-14T08:41:26",
            "upload_time_iso_8601": "2023-09-14T08:41:26.222361Z",
            "url": "https://files.pythonhosted.org/packages/2c/a0/1fa802be950009425ff236a3eb1b0bfe686a8e6d4e060f38d66d69f167c0/libterraform-0.5.0-cp37-cp37m-macosx_13_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b76ee5c4a054d8cdd899b62676c3a17fa3c587af728a20fbe80b8faaeab71d02",
                "md5": "04778a4c9dd1efdddf8e5adad4255c40",
                "sha256": "7b6cf110746d6f2383c496e34acdc552531ed30cf8afa865a1ebb5d85650170e"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp37-cp37m-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "04778a4c9dd1efdddf8e5adad4255c40",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7,<4.0",
            "size": 35684412,
            "upload_time": "2023-09-14T08:39:14",
            "upload_time_iso_8601": "2023-09-14T08:39:14.860574Z",
            "url": "https://files.pythonhosted.org/packages/b7/6e/e5c4a054d8cdd899b62676c3a17fa3c587af728a20fbe80b8faaeab71d02/libterraform-0.5.0-cp37-cp37m-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "49792e2e8906702c3a2b5b8e56af5e583173e1b7d91744d27a1b2efd84ca6d47",
                "md5": "d51987be9a58f74a6b746e3a91e36b43",
                "sha256": "4607cb532c49111c7b1dc8b06d4cf157d956eb3be1d63f624161180e254279bd"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d51987be9a58f74a6b746e3a91e36b43",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7,<4.0",
            "size": 35660058,
            "upload_time": "2023-09-14T08:39:18",
            "upload_time_iso_8601": "2023-09-14T08:39:18.690447Z",
            "url": "https://files.pythonhosted.org/packages/49/79/2e2e8906702c3a2b5b8e56af5e583173e1b7d91744d27a1b2efd84ca6d47/libterraform-0.5.0-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "32ce136ec855f73f6caf76a87bf6158e0b135b33f40784601c8282ca6f2698da",
                "md5": "501b769001a637b33e50e912ed6d3f62",
                "sha256": "d388fec67f461e59a6708a4132ffeeae3a3e4957e5505e42b545421da0e2ddc0"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp38-cp38-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "501b769001a637b33e50e912ed6d3f62",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7,<4.0",
            "size": 37830461,
            "upload_time": "2023-09-14T08:39:22",
            "upload_time_iso_8601": "2023-09-14T08:39:22.378731Z",
            "url": "https://files.pythonhosted.org/packages/32/ce/136ec855f73f6caf76a87bf6158e0b135b33f40784601c8282ca6f2698da/libterraform-0.5.0-cp38-cp38-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2224cb0473ceb93c8aa2ae0979d05f2249ea6b35296b6245ad97c905a250902c",
                "md5": "a05b4b13bb65c93efb9685f28721997c",
                "sha256": "7a83b24414a8188cabbff22d5fe942f95c13ae78425ce4843259c8bcb82d73e5"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp38-cp38-macosx_13_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a05b4b13bb65c93efb9685f28721997c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7,<4.0",
            "size": 35272038,
            "upload_time": "2023-09-14T08:41:41",
            "upload_time_iso_8601": "2023-09-14T08:41:41.618058Z",
            "url": "https://files.pythonhosted.org/packages/22/24/cb0473ceb93c8aa2ae0979d05f2249ea6b35296b6245ad97c905a250902c/libterraform-0.5.0-cp38-cp38-macosx_13_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "66968af06bcf61c25b4c0293e33b75e4ebc62322901a6dc79133ace7ad619981",
                "md5": "8e4ee3366cfee0ebea3214134540b918",
                "sha256": "17c255f778671a8af2b4451caa0e30d9c1495322fae1ca9b45f780849ce1dbfe"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp38-cp38-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8e4ee3366cfee0ebea3214134540b918",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7,<4.0",
            "size": 35684408,
            "upload_time": "2023-09-14T08:39:26",
            "upload_time_iso_8601": "2023-09-14T08:39:26.404456Z",
            "url": "https://files.pythonhosted.org/packages/66/96/8af06bcf61c25b4c0293e33b75e4ebc62322901a6dc79133ace7ad619981/libterraform-0.5.0-cp38-cp38-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4c535390d4dd6b4eadb5f3a98b003c14be920f909cf3ffdb470939e6e3db834a",
                "md5": "a0e6b2afc55660ee0f3704b9f62feb0c",
                "sha256": "26b2cd92111d947680692411d1014c268e3930410c81453553e49a3aa6a60cc3"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a0e6b2afc55660ee0f3704b9f62feb0c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7,<4.0",
            "size": 35660039,
            "upload_time": "2023-09-14T08:39:30",
            "upload_time_iso_8601": "2023-09-14T08:39:30.653748Z",
            "url": "https://files.pythonhosted.org/packages/4c/53/5390d4dd6b4eadb5f3a98b003c14be920f909cf3ffdb470939e6e3db834a/libterraform-0.5.0-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9266b812fcf168657151f1a53148f96f8d87f0e6f041d6dc94cd0c50d6a83cae",
                "md5": "937ddc6401cfb5323ae7febe55eb4597",
                "sha256": "3dc223ae1edfd19e7cd834db57c4476f054e9acb9c3c8d7d6adb2702fe24b8f1"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp39-cp39-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "937ddc6401cfb5323ae7febe55eb4597",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7,<4.0",
            "size": 37830462,
            "upload_time": "2023-09-14T08:39:34",
            "upload_time_iso_8601": "2023-09-14T08:39:34.895641Z",
            "url": "https://files.pythonhosted.org/packages/92/66/b812fcf168657151f1a53148f96f8d87f0e6f041d6dc94cd0c50d6a83cae/libterraform-0.5.0-cp39-cp39-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b5e038526c0632b682a67349c626972a730f7e2d69eb1dda2a2934fd794cf53",
                "md5": "91e2df32d0613834d8e021c2a4c6a317",
                "sha256": "00b1e419b8c2d99f2e56aadc235a088ec29c092853a37a4e56411f79a91eba17"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp39-cp39-macosx_13_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "91e2df32d0613834d8e021c2a4c6a317",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7,<4.0",
            "size": 35272039,
            "upload_time": "2023-09-14T08:41:59",
            "upload_time_iso_8601": "2023-09-14T08:41:59.616593Z",
            "url": "https://files.pythonhosted.org/packages/9b/5e/038526c0632b682a67349c626972a730f7e2d69eb1dda2a2934fd794cf53/libterraform-0.5.0-cp39-cp39-macosx_13_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9d06fa42d10256778af3febc9be7f74fe5ba1db4f8f2c1a8657b32363f3ec34e",
                "md5": "25908b3c032dbb3927ae1938dee7fee9",
                "sha256": "0500ddeb421e958fa399de66fae96a78172ccaabd4fe8d110f95cf2b043b0aa0"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp39-cp39-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "25908b3c032dbb3927ae1938dee7fee9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7,<4.0",
            "size": 35684409,
            "upload_time": "2023-09-14T08:39:38",
            "upload_time_iso_8601": "2023-09-14T08:39:38.737336Z",
            "url": "https://files.pythonhosted.org/packages/9d/06/fa42d10256778af3febc9be7f74fe5ba1db4f8f2c1a8657b32363f3ec34e/libterraform-0.5.0-cp39-cp39-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d5ba188bd49488dda868828103239ff4b3181c4d08f4d568b55e4b186834222d",
                "md5": "6255a7a7302d835fee61bd1dea30ccd5",
                "sha256": "0d01ccaab7ff32b90c739a57dd150f3fbec98a38688688c184d24b32d7378921"
            },
            "downloads": -1,
            "filename": "libterraform-0.5.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "6255a7a7302d835fee61bd1dea30ccd5",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7,<4.0",
            "size": 35660043,
            "upload_time": "2023-09-14T08:39:43",
            "upload_time_iso_8601": "2023-09-14T08:39:43.566138Z",
            "url": "https://files.pythonhosted.org/packages/d5/ba/188bd49488dda868828103239ff4b3181c4d08f4d568b55e4b186834222d/libterraform-0.5.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-14 08:38:45",
    "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"
}
        
Elapsed time: 0.11479s