Skip to content

Releases: Prodesire/py-libterraform

v0.15.0

10 Jun 02:06

Choose a tag to compare

Highlights

libterraform 0.15.0 updates the embedded Terraform runtime to 1.15.5 and expands the Python CLI wrappers around Terraform 1.15 argument changes.

What's Changed

  • Updated Terraform from 1.14.9 to 1.15.5.
  • Added create_default_workspace to TerraformCommand.init().
  • Added vars and var_files support to TerraformCommand.validate(), get(), show(), modules(), and graph().
  • Added module_depth and verbose to TerraformCommand.graph().
  • Synced the native bridge with Terraform 1.15's reattach parser move.
  • Updated docs and release matrix for the new 0.15 line.

Compatibility

  • Terraform: 1.15.5
  • go-plugin: 1.7.0
  • Python: 3.9+

Install

pip install "libterraform==0.15.0"

Links

v0.14.0

10 Jun 02:06

Choose a tag to compare

Highlights

libterraform 0.14.0 updates the embedded Terraform runtime to 1.14.9 and exposes the Terraform 1.14 init/validate/test flags in the Python wrapper.

What's Changed

  • Updated Terraform from 1.13.5 to 1.14.9.
  • Added enable_pluggable_state_storage_experiment to TerraformCommand.init().
  • Added query to TerraformCommand.validate().
  • Added allow_deferral to TerraformCommand.test().
  • Updated docs, release matrix, and native bridge checks for the Terraform 1.14 line.

Compatibility

  • Terraform: 1.14.9
  • go-plugin: 1.7.0
  • Python: 3.9+

Install

pip install "libterraform==0.14.0"

Links

v0.13.0

09 Jun 06:44

Choose a tag to compare

Highlights

libterraform 0.13.0 updates the embedded Terraform runtime to 1.13.5 and adds AsyncTerraformCommand for asyncio-compatible Terraform command execution.

What's Changed

  • Updated Terraform from 1.12.2 to 1.13.5.
  • Added support for Terraform 1.13 query, stacks, and rpcapi commands.
  • Added TerraformCommand.query() and TerraformCommand.stacks().
  • Added run_parallelism support to TerraformCommand.test().
  • Added AsyncTerraformCommand for running Terraform commands from async Python code.
  • Added cooperative cancellation for async Terraform calls through Terraform's native shutdown path.

Async Usage Example

import asyncio

from libterraform import AsyncTerraformCommand


async def main():
    tf = AsyncTerraformCommand("/path/to/terraform/project")

    version = await tf.version()
    print(version.value)

    plan = await tf.plan()
    print(plan.retcode)


asyncio.run(main())

Cancelling an async Terraform task asks Terraform to shut down through its normal shutdown path:

task = asyncio.create_task(tf.apply())
task.cancel()

try:
    await task
except asyncio.CancelledError:
    pass

Compatibility

  • Terraform: 1.13.5
  • go-plugin: 1.6.3
  • Python: 3.9 to 3.14

Install

pip install "libterraform==0.13.0"

Links

v0.12.0

08 Jun 11:53

Choose a tag to compare

Highlights

libterraform 0.12.0 updates the embedded Terraform runtime to 1.12.2 and refreshes the Python wrapper, native bridge, and documentation for the Terraform 1.12 release line.

What's Changed

  • Updated Terraform from 1.11.4 to 1.12.2.
  • Updated go-plugin from 1.6.0 to 1.6.3 to match the Terraform 1.12 dependency line.
  • Updated the 0.12 release matrix, version metadata, and version comparison docs.
  • Added native command support for Terraform 1.12 state identities.
  • Added TerraformCommand.state_identities() with JSON output parsing and identity_id filtering.
  • Updated Chinese API documentation for the new state_identities interface.
  • Marked the 0.12 release line as active maintenance and moved 0.10 to passive maintenance.

Compatibility

  • Terraform: 1.12.2
  • go-plugin: 1.6.3
  • Python: 3.9 to 3.14

Install

pip install "libterraform==0.12.0"

Links

v0.11.0

08 Jun 11:09

Choose a tag to compare

Highlights

libterraform 0.11.0 updates the embedded Terraform runtime to 1.11.4 and refreshes the Python wrapper, native bridge, and documentation for the Terraform 1.11 release line.

What's Changed

  • Updated Terraform from 1.10.5 to 1.11.4.
  • Updated the 0.11 release matrix, version metadata, and version comparison docs.
  • Updated the native bridge for Terraform 1.11 plugin directory handling.
  • Added explicit junit_xml support to TerraformCommand.test().
  • Adjusted module JSON handling for Terraform 1.11 output where empty module lists are reported as null.
  • Renamed the docs build target from docs-build to doc-build and updated related docs and tests.
  • Regenerated uv.lock against the official PyPI source.
  • Updated English and Chinese API documentation for the changed interfaces.

Compatibility

  • Terraform: 1.11.4
  • go-plugin: 1.6.0
  • Python: 3.9 to 3.14

Install

pip install "libterraform==0.11.0"

Links

v0.10.0

08 Jun 11:24

Choose a tag to compare

Highlights

libterraform 0.10.0 updates the embedded Terraform runtime to 1.10.5 and fills in the Terraform 1.10 command surface while adding the bilingual documentation site used by later release lines.

What's Changed

  • Updated Terraform from 1.9.8 to 1.10.5.
  • Updated the native bridge for Terraform 1.10 command.Meta fields and command registration.
  • Added native command support for TerraformCommand.modules().
  • Added support for Terraform metadata commands through the native command registry.
  • Added vars and var_files support to TerraformCommand.apply().
  • Updated Terraform command documentation links to the current HashiCorp Developer documentation.
  • Added English and Chinese documentation sites, API references, quickstart, installation, and development guides.
  • Added the GitHub Pages documentation workflow.
  • Updated README content and added README.zh-CN.md.
  • Regenerated uv.lock against the official PyPI source.
  • Added release workflow retry handling for PyPI publishing.

Compatibility

  • Terraform: 1.10.5
  • go-plugin: 1.6.0
  • Python: 3.9 to 3.14

Install

pip install "libterraform==0.10.0"

Links

v0.9.0

02 Jun 12:31

Choose a tag to compare

Highlights

libterraform 0.9.0 updates the embedded Terraform runtime to 1.9.8 and establishes the release-line structure used for maintaining future Terraform minor versions.

What's Changed

  • Updated Terraform from 1.8.4 to 1.9.8.
  • Updated go-plugin from 1.4.3 to 1.6.0 to match the Terraform 1.9 dependency line.
  • Moved Python package sources into src/libterraform/ and native Go sources into native/go/.
  • Moved Terraform and go-plugin submodules under upstream/.
  • Added release-matrix.json as the source of truth for libterraform, Terraform, go-plugin, branch, and maintenance-line mapping.
  • Added docs/release-policy.md with branch, patch, backport, and release checklist rules.
  • Added release-matrix verification and tests for project layout, hatch build behavior, and GitHub Actions workflows.
  • Updated CI so release builds run tests during the release workflow and tag pushes do not duplicate the normal test workflow.
  • Updated README examples and the version comparison table for Terraform 1.9.8.

Compatibility

  • Terraform: 1.9.8
  • go-plugin: 1.6.0
  • Python: 3.9 to 3.14

Install

pip install "libterraform==0.9.0"

Links

v0.8.2

22 May 02:24

Choose a tag to compare

Highlights

This 0.8.x patch release keeps libterraform on Terraform 1.8.4 while modernizing the Python packaging and CI toolchain.

Breaking Changes

  • Dropped support for Python 3.7 and 3.8. The minimum supported Python version is now 3.9.

What's Changed

  • Added Python 3.13 and 3.14 support.
  • Migrated the build backend from Poetry to hatchling and the development workflow to uv.
  • Fixed Linux wheel tags so uploaded wheels are accepted by PyPI-compatible installers.
  • Added a macOS x86_64 wheel built via cross-compilation from the ARM macOS runner.
  • Updated GitHub Actions and runner images to currently supported versions.
  • Added make build PY=3.xx support for selecting the Python version during builds.

Compatibility

  • Terraform: 1.8.4
  • Python: 3.9 to 3.14

Install

pip install "libterraform==0.8.2"

Links

v0.8.0

17 Jul 03:02

Choose a tag to compare

Highlights

libterraform 0.8.0 updates the embedded Terraform runtime to 1.8.4 and adds support for the newer providers lock plugin-cache option.

What's Changed

  • Updated Terraform from 1.6.6 to 1.8.4.
  • Added enable_plugin_cache support to TerraformCommand.providers_lock().
  • Added make format and formatted the codebase with the project formatter.
  • Added Ruff as a development formatter/linting tool.

Compatibility

  • Terraform: 1.8.4
  • Python: 3.7+ (tested through Python 3.12)

Contributors

Thanks to @haodeon for the Terraform 1.8.4 update in #9.

Install

pip install "libterraform==0.8.0"

Links

v0.7.0

03 Jul 02:07

Choose a tag to compare

Highlights

libterraform 0.7.0 updates the embedded Terraform runtime to 1.6.6 and refreshes TerraformCommand for the Terraform 1.6 CLI surface.

Breaking Changes

  • TerraformCommand.test() now follows Terraform's official test command instead of the former experimental command shape. Some parameters changed to match Terraform 1.6.

What's Changed

  • Updated Terraform from 1.5.7 to 1.6.6.
  • Added TerraformCommand.get() support.
  • Updated command parameters for init, validate, plan, fmt, providers, providers_lock, providers_mirror, and refresh.
  • Added Python 3.12 support.
  • Fixed the release GitHub Actions workflow.

Compatibility

  • Terraform: 1.6.6
  • Python: 3.7+ (tested through Python 3.12)

Contributors

Thanks to @haodeon for the Terraform 1.6.6 update in #8.

Install

pip install "libterraform==0.7.0"

Links