Python libterraform
Python binding for Terraform. Bundles Terraform as a shared library so you can run Terraform commands and parse configurations from Python without a separate terraform binary.
Language: English | 中文
Documentation: https://prodesire.github.io/py-libterraform/
Installation
pip install libterraform
Execution model:
TerraformCommandandAsyncTerraformCommanduse process-isolated execution by default, so Terraform's process-wide state does not leak into the caller process. Usebackend="thread"only when you explicitly want the current-process backend. UseTerraformPoolwhen you want to reuse worker processes or run independent Terraform operations in parallel.
Usage
from libterraform import TerraformCommand, TerraformConfig
# Run Terraform commands
cli = TerraformCommand("path/to/module")
cli.init(check=True)
cli.plan(check=True)
# Parse Terraform configuration
module, diagnostics = TerraformConfig.load_config_dir("path/to/module")
Asyncio applications can use AsyncTerraformCommand to await Terraform
operations without blocking the event loop:
from libterraform import AsyncTerraformCommand
cli = AsyncTerraformCommand("path/to/module")
await cli.validate(check=True)
Use TerraformPool to reuse worker processes and run Terraform commands in
parallel:
from libterraform import TerraformPool
with TerraformPool(max_workers=4) as pool:
for result in pool.map("validate", ["modules/a", "modules/b"], check=True):
print(result.value["valid"])
The pool starts worker processes, so this must run under an
if __name__ == "__main__": guard. The
Quick Start creates a
runnable module in seconds, and
Parallel Execution
has a complete pool example.
If you are choosing between Python Terraform options, see
Choosing a Python Terraform Integration
for a comparison with python-terraform, TofuPy, direct subprocess, Pulumi,
CDKTN, and deprecated CDK for Terraform.
Contributing
Install uv, then:
make install # Install dependencies and Git hooks
make build # Build the shared library
make test # Run tests
make lint # Run linters
make doc-serve # Preview documentation site
See the Development Guide for details.
Metadata
Release files for libterraform 0.15.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| libterraform-0.15.3-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details for libterraform-0.15.3-py3-none-win_amd64.whl |
| libterraform-0.15.3-py3-none-manylinux_2_35_x86_64.whl | Python 3 | none | Linux glibc 2.35+ x86-64 | Details for libterraform-0.15.3-py3-none-manylinux_2_35_x86_64.whl |
| libterraform-0.15.3-py3-none-macosx_14_0_x86_64.whl | Python 3 | none | macOS 14.0+ x86-64 | Details for libterraform-0.15.3-py3-none-macosx_14_0_x86_64.whl |
| libterraform-0.15.3-py3-none-macosx_10_15_universal2.whl | Python 3 | none | macOS 10.15+ universal2 (ARM64, x86-64) | Details for libterraform-0.15.3-py3-none-macosx_10_15_universal2.whl |
Total release size: 197.9 MB
Release files / libterraform-0.15.3-py3-none-win_amd64.whl
| Download URL | libterraform-0.15.3-py3-none-win_amd64.whl |
|---|---|
| Size | 64.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e21840dcaa5d44e2f273d63aa7be66ed751d78a7e429d933e67e522a2e447756
|
|
BLAKE2b-256 checksum How to use checksums |
5c44b1fa0653f97ad6512c084f418c8caa0df3a215f980b3f233133d3ed8d022
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / libterraform-0.15.3-py3-none-manylinux_2_35_x86_64.whl
| Download URL | libterraform-0.15.3-py3-none-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 64.0 MB |
| Tags | Linux glibc 2.35+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
d7dd30aef7bf2eaa440c564954b9aec43cfb163174fe36d9097c4192cf24a75c
|
|
BLAKE2b-256 checksum How to use checksums |
6173b3f2d13fb74ac9ef8a77b1baf732e29a3c38f05974a2487c77ecdbcd735d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / libterraform-0.15.3-py3-none-macosx_14_0_x86_64.whl
| Download URL | libterraform-0.15.3-py3-none-macosx_14_0_x86_64.whl |
|---|---|
| Size | 36.2 MB |
| Tags | Python 3 macOS 14.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
f6396a5bcfd413bcfda19bdd1c2129150e4bd27e58cfc3363746c9f27a468f83
|
|
BLAKE2b-256 checksum How to use checksums |
0c7f527f5236143be419306661e53a29ae3b325689572216dcad9154d25ad188
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / libterraform-0.15.3-py3-none-macosx_10_15_universal2.whl
| Download URL | libterraform-0.15.3-py3-none-macosx_10_15_universal2.whl |
|---|---|
| Size | 33.5 MB |
| Tags | Python 3 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
710358bdf72690a0c8e2114f99e52a9f344c7a4c672a73e92f0b8b485264d778
|
|
BLAKE2b-256 checksum How to use checksums |
eab826f2023e69ff8ebe671ac25e62fb9291a1bf368c6f2e681ca32e143b2c92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for libterraform 0.15.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.