MCPcopy Index your code
hub / github.com/Prodesire/py-libterraform

github.com/Prodesire/py-libterraform @v0.15.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.15.3 ↗ · + Follow
475 symbols 1,669 edges 60 files 101 documented · 21% updated 4d agov0.15.3 · 2026-07-03★ 44
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Python libterraform logo

Python libterraform

Terraform 的 Python 绑定。将 Terraform 打包为共享库,无需单独安装 terraform 即可从 Python 执行 Terraform 命令和解析配置。

Test PyPI Python Downloads

语言: English | 中文

文档: https://prodesire.github.io/py-libterraform/zh/

安装

pip install libterraform

线程说明: TerraformCommand 可以被多个 Python 线程调用,但由于 Terraform CLI 使用进程级全局状态,共享库内部会串行执行 Terraform 命令。如需 真正并行的 Terraform 操作,请使用 TerraformPool(或多个进程隔离)。

使用

from libterraform import TerraformCommand, TerraformConfig

# 执行 Terraform 命令
cli = TerraformCommand("path/to/module")
cli.init(check=True)
cli.plan(check=True)

# 解析 Terraform 配置
module, diagnostics = TerraformConfig.load_config_dir("path/to/module")

asyncio 应用可以使用 AsyncTerraformCommand 等待 Terraform 操作,同时避免阻塞 event loop:

from libterraform import AsyncTerraformCommand

cli = AsyncTerraformCommand("path/to/module")
await cli.validate(check=True)

使用 TerraformPool 可以在多个 worker 进程间并行执行 Terraform 命令:

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"])

pool 会启动 worker 进程,因此上述代码必须运行在 if __name__ == "__main__": 保护之下。快速开始 可在几秒内创建一个可运行的模块,并行执行 提供了完整的 pool 示例。

如果你正在比较 Python Terraform 生态中的不同选择,可以阅读 如何选择 Python Terraform 集成方式: 其中对比了 python-terraform、TofuPy、直接 subprocess、Pulumi、CDKTN 和已弃用的 CDK for Terraform。

贡献

安装 uv,然后:

make install        # 安装依赖和 Git hooks
make build          # 构建共享库
make test           # 运行测试
make lint           # 运行检查
make doc-serve      # 预览文档站

详见开发指南

Core symbols most depended-on inside this repo

flag
called by 64
src/libterraform/cli.py
get
called by 52
src/libterraform/cli.py
apply
called by 28
src/libterraform/cli.py
_run
called by 24
src/libterraform/cli.py
run
called by 17
src/libterraform/pool.py
json_loads
called by 15
src/libterraform/common.py
init
called by 11
src/libterraform/cli.py
cancel
called by 9
src/libterraform/cli.py

Shape

Function 218
Method 207
Class 48
Struct 2

Languages

Python96%
Go3%
TypeScript1%

Modules by API surface

src/libterraform/cli.py91 symbols
tests/test_docs_site.py28 symbols
src/libterraform/pool.py25 symbols
tests/cli/test_pool.py21 symbols
tests/cli/test_async_cli.py17 symbols
scripts/inspect_upstream.py16 symbols
src/libterraform/async_cli.py15 symbols
native/go/libterraform.go15 symbols
tests/cli/test_test.py13 symbols
tests/cli/test_structured.py13 symbols
tests/cli/test_state.py13 symbols
tests/test_workflows.py11 symbols

For agents

$ claude mcp add py-libterraform \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact