Skip to main content

gwz-py

gwz-py provides Python bindings to gwz-core and a Python implementation of the GWZ (Git Workspace Zone) CLI. The CLI keeps the bindings exercised through real user-facing workflows, helping ensure that Python applications can rely on the workspace operations exposed by the message-driven core engine.

The gwz-py CLI is intended to be functional and follows the same command model. For general terminal use, the Rust gwz CLI is the primary and more thoroughly tested implementation. Use gwz-py when Python API integration or a Python-distributed CLI is the requirement.

Both the Python API and CLI call the native gwz-core extension; the package does not shell out to or bundle the Rust gwz executable. The current package uses an in-process bridge, while the typed message boundary is designed to also support a separately hosted core through a remote adapter.

Install

python -m pip install gwz

The distribution installs the gwz-py command and the gwz Python package.

Python API

from pathlib import Path

from gwz import Client


async with Client(root=Path(".")) as client:
    response = await client.status(combined=True)

Long-running operations such as clone, materialize, pull, and push also expose streaming forms for operation progress events.

Python CLI

gwz-py --help
gwz-py status
gwz-py diff
gwz-py log

Workspace concepts and workflows are shared with the Rust CLI. Start with the GWZ Quick Start and use the repository lifecycle guide for create, publish, detach, attach, and identity-verification behavior.

Unified commit log

gwz-py log renders the same core commit-log records as the Rust CLI. Its compact default shows the recorded date, workspace-relative member set, short hash, and subject. Use gwz-py log --full --body for git-style blocks with the complete member table and commit body. Human degradations are written to stderr; output is never paged, and --color=auto colors only a terminal.

--json emits one {"schema": "gwz.log/v0", "records": [...]} document. --jsonl begins with the schema header and then emits one entry or degradation record per line. Both machine forms are byte-compatible with Rust gwz for the same protocol records, including the explicit lossy flag for source bytes converted to U+FFFD.

Native Bridge And Repository Lifecycle

The asynchronous client sends generated protocol requests through the native extension. For example:

from pathlib import Path

from gwz import Client


async with Client(root=Path("/work/ws")) as client:
    await client.clone_repo_member(
        "git@github.com:org/shared.git",
        "libs/shared",
        member_id="mem_shared",
        source_id="src_shared",
    )
    await client.detach_repo_member("mem_shared")
    await client.attach_repo_member("mem_shared")

Use clone_repo_member_stream(...) when the caller needs clone progress. The native core verifies snapshot and marker commit evidence before reactivating a historical designation; it does not fetch missing history automatically.

Development

Install the development dependencies and run the Python tests:

python -m pip install -e ".[dev]"
python run_tests.py

Cross-driver tests need a gwz CLI. GWZ_RUST_BIN names one explicitly and is always honoured; otherwise the runner builds the sibling gwz-cli checkout and picks the binary up from where cargo actually put it. A gwz-cli that is a member of the cargo workspace above it (its parent Cargo.toml lists it under [workspace] members) is built into the workspace target/, so that one is preferred and any leftover gwz-cli/target/debug/gwz is ignored; a standalone gwz-cli checkout uses its own target/. The runner prints the binary it chose and the reason.

Build the native extension locally:

python -m maturin develop
python -m pytest src/tests/test_native_bridge.py -q

Check or regenerate the protocol API against the sibling gwz-core checkout:

python scripts/check_protocol_drift.py
python scripts/regen_protocol.py --check

The release smoke test builds and repairs a wheel, installs it in a fresh environment, exercises the installed CLI against a workspace fixture, and checks operation events and materialized state:

python scripts/package_smoke.py

Platform And Status

Status: alpha.

CI validates macOS, Linux, and Windows. Source builds require Rust 1.95 or newer and may need platform OpenSSL, libgit2, and SSH prerequisites when a wheel is not available. Windows source builds can provide those dependencies through vcpkg with VCPKG_ROOT set.

If gwz._gwz_core is missing in a development checkout, run python -m maturin develop from this directory.

License

gwz-py is licensed under GPL-2.0-only.

Metadata

Release files for gwz 1.0.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gwz 1.0.14
File Size Uploaded
gwz-1.0.14.tar.gz 291.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for gwz 1.0.14
File
gwz-1.0.14-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
gwz-1.0.14-cp310-abi3-manylinux_2_39_x86_64.whl CPython 3.10 abi3 Linux glibc 2.39+ x86-64 Details
gwz-1.0.14-cp310-abi3-manylinux_2_39_aarch64.whl CPython 3.10 abi3 Linux glibc 2.39+ ARM64 Details
gwz-1.0.14-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
gwz-1.0.14-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 38.5 MB

Release files / gwz-1.0.14.tar.gz

Download URL gwz-1.0.14.tar.gz
Size 291.4 kB
Tags Source
SHA-256 checksum
How to use checksums
77d52e9427f207bd662121165c6d39478921818d8bd33e2a085902021c793d62
BLAKE2b-256 checksum
How to use checksums
4d71939b2b34f8161045731ee7fcb21322febb1c59c54b0f0d1a1b1d4bcaaf39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / gwz-1.0.14-cp310-abi3-win_amd64.whl

Download URL gwz-1.0.14-cp310-abi3-win_amd64.whl
Size 5.5 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
af4d294909845480db144ae65c25c6995d3813f0c67f35a7d0421e17eff8e686
BLAKE2b-256 checksum
How to use checksums
5f5eb6ef3cd4ba74c236bfe4fbee679a91f6f89f872f65a62896ddf3bb857274
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / gwz-1.0.14-cp310-abi3-manylinux_2_39_x86_64.whl

Download URL gwz-1.0.14-cp310-abi3-manylinux_2_39_x86_64.whl
Size 8.3 MB
Tags CPython 3.10 Linux glibc 2.39+ x86-64 abi3
SHA-256 checksum
How to use checksums
a49578e6b72846c1476ba2fa5239ce01ef23838ee1b9a0c3d97a1decec39d7d3
BLAKE2b-256 checksum
How to use checksums
be190cd7225cd554f728a0eefb9b2abe19f5e1c328d48377356df9a673d38ef9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / gwz-1.0.14-cp310-abi3-manylinux_2_39_aarch64.whl

Download URL gwz-1.0.14-cp310-abi3-manylinux_2_39_aarch64.whl
Size 8.1 MB
Tags CPython 3.10 Linux glibc 2.39+ ARM64 abi3
SHA-256 checksum
How to use checksums
a11a874dec7b872c8f9ff138721e52f55ce052018f19581cd66887e286b51c27
BLAKE2b-256 checksum
How to use checksums
e6434b471329dc561319bb64bb4b61ded2e50c8af201f85e8ab058a58a633f74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / gwz-1.0.14-cp310-abi3-macosx_11_0_arm64.whl

Download URL gwz-1.0.14-cp310-abi3-macosx_11_0_arm64.whl
Size 8.1 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e178b1d7b1f4dfc5079114745cec9e4f2743c1eb6b3e9f7ad77722aff1814ad6
BLAKE2b-256 checksum
How to use checksums
90b7994ea6fb15f7400fd3c0df0dfe97a91cc408d55667d5aaf02126edd32024
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / gwz-1.0.14-cp310-abi3-macosx_10_12_x86_64.whl

Download URL gwz-1.0.14-cp310-abi3-macosx_10_12_x86_64.whl
Size 8.2 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
5fb55f0c3d312419dfec930ab52ad1df6141082704fe5628e4123a583fc3afbc
BLAKE2b-256 checksum
How to use checksums
b6e109497fa2115c8e7a2b348efff089549ce0e45a8fe9f49395ef496a0d0102
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release history Release notifications | RSS feed

1.0.17

6 release files

1.0.16

6 release files

This release

1.0.14 This release

6 release files

1.0.13

6 release files

1.0.12

6 release files

1.0.11

6 release files

1.0.8

6 release files

1.0.3

6 release files

0.12.0

6 release files

0.11.1

6 release files

0.11.0

6 release files

0.10.5

6 release files

0.10.2

6 release files

0.9.2

6 release files

0.9.1

6 release files

0.9.0

6 release files

0.8.2

6 release files

0.8.1

6 release files

0.7.5

6 release files

0.7.4

6 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