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 | Reset | |||
|---|---|---|---|---|
| libterraform-0.15.3-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| libterraform-0.15.3-py3-none-manylinux_2_35_x86_64.whl | Python 3 | none | Linux glibc 2.35+ x86-64 | Details |
| libterraform-0.15.3-py3-none-macosx_14_0_x86_64.whl | Python 3 | none | macOS 14.0+ x86-64 | Details |
| libterraform-0.15.3-py3-none-macosx_10_15_universal2.whl | Python 3 | none | macOS 10.15+ universal2 (ARM64, x86-64) | Details |
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}
|