Skip to main content

Python libterraform logo

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.

Test PyPI Python Downloads

Language: English | 中文

Documentation: https://prodesire.github.io/py-libterraform/

Installation

pip install libterraform

Execution model: TerraformCommand and AsyncTerraformCommand use process-isolated execution by default, so Terraform's process-wide state does not leak into the caller process. Use backend="thread" only when you explicitly want the current-process backend. Use TerraformPool when 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)

Table of built distributions (wheels) for libterraform 0.15.3
File
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}

Release history Release notifications | RSS feed

This release

0.15.3 This release

4 release files

0.15.2

4 release files

0.8.2

24 release files

0.8.0

23 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page