Releases: Prodesire/py-libterraform
v0.15.0
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_workspacetoTerraformCommand.init(). - Added
varsandvar_filessupport toTerraformCommand.validate(),get(),show(),modules(), andgraph(). - Added
module_depthandverbosetoTerraformCommand.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
- PyPI: https://pypi.org/project/libterraform/0.15.0/
- Full changelog: v0.14.0...v0.15.0
v0.14.0
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_experimenttoTerraformCommand.init(). - Added
querytoTerraformCommand.validate(). - Added
allow_deferraltoTerraformCommand.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
- PyPI: https://pypi.org/project/libterraform/0.14.0/
- Full changelog: v0.13.0...v0.14.0
v0.13.0
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, andrpcapicommands. - Added
TerraformCommand.query()andTerraformCommand.stacks(). - Added
run_parallelismsupport toTerraformCommand.test(). - Added
AsyncTerraformCommandfor 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:
passCompatibility
- Terraform: 1.13.5
- go-plugin: 1.6.3
- Python: 3.9 to 3.14
Install
pip install "libterraform==0.13.0"Links
- PyPI: https://pypi.org/project/libterraform/0.13.0/
- Full changelog: v0.12.0...v0.13.0
v0.12.0
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 andidentity_idfiltering. - Updated Chinese API documentation for the new
state_identitiesinterface. - 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
- PyPI: https://pypi.org/project/libterraform/0.12.0/
- Full changelog: v0.11.0...v0.12.0
v0.11.0
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_xmlsupport toTerraformCommand.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-buildtodoc-buildand updated related docs and tests. - Regenerated
uv.lockagainst 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
- PyPI: https://pypi.org/project/libterraform/0.11.0/
- Full changelog: v0.10.0...v0.11.0
v0.10.0
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.Metafields and command registration. - Added native command support for
TerraformCommand.modules(). - Added support for Terraform metadata commands through the native command registry.
- Added
varsandvar_filessupport toTerraformCommand.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.lockagainst 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
- PyPI: https://pypi.org/project/libterraform/0.10.0/
- Full changelog: v0.9.0...v0.10.0
v0.9.0
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 intonative/go/. - Moved Terraform and go-plugin submodules under
upstream/. - Added
release-matrix.jsonas the source of truth for libterraform, Terraform, go-plugin, branch, and maintenance-line mapping. - Added
docs/release-policy.mdwith 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
- PyPI: https://pypi.org/project/libterraform/0.9.0/
- Full changelog: v0.8.2...v0.9.0
v0.8.2
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.xxsupport 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
- PyPI: https://pypi.org/project/libterraform/0.8.2/
- Full changelog: v0.8.0...v0.8.2
v0.8.0
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_cachesupport toTerraformCommand.providers_lock(). - Added
make formatand 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
- PyPI: https://pypi.org/project/libterraform/0.8.0/
- Full changelog: v0.7.0...v0.8.0
v0.7.0
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 officialtestcommand 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, andrefresh. - 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
- PyPI: https://pypi.org/project/libterraform/0.7.0/
- Full changelog: v0.6.0...v0.7.0