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
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.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gwz-1.0.13.tar.gz | 285.4 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| gwz-1.0.13-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| gwz-1.0.13-cp310-abi3-manylinux_2_39_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.39+ x86-64 | Details |
| gwz-1.0.13-cp310-abi3-manylinux_2_39_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.39+ ARM64 | Details |
| gwz-1.0.13-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| gwz-1.0.13-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 38.3 MB
Release files / gwz-1.0.13.tar.gz
| Download URL | gwz-1.0.13.tar.gz |
|---|---|
| Size | 285.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ce43319a10d5e8988e5c4fbaf72f1b1279c872bcdce512926f7cd632ec74c71b
|
|
BLAKE2b-256 checksum How to use checksums |
b93199754b33604a2f11dca2b124a33e5059897bef39e398c6610bf74dbea13a
|
| 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 16, 2026.
Transparency logRelease files / gwz-1.0.13-cp310-abi3-win_amd64.whl
| Download URL | gwz-1.0.13-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
0b3216419a3e4a49202bb9c17775e77d1b50eb9ce2d1c5b811fafa9ed66e9e84
|
|
BLAKE2b-256 checksum How to use checksums |
505f533627d2036bd1dd5757a5548504aba56cca7fd34cba49ab1a7b2efadc1d
|
| 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 16, 2026.
Transparency logRelease files / gwz-1.0.13-cp310-abi3-manylinux_2_39_x86_64.whl
| Download URL | gwz-1.0.13-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 |
f11b432f9aae3ffbe2837dc8b1ec07492c38e279022753ef31ac824470ae33bd
|
|
BLAKE2b-256 checksum How to use checksums |
97131afc8207bd326ae3bb5b7c54bfffc6fb9687c6308b6a5b214a53ed4eaedf
|
| 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 16, 2026.
Transparency logRelease files / gwz-1.0.13-cp310-abi3-manylinux_2_39_aarch64.whl
| Download URL | gwz-1.0.13-cp310-abi3-manylinux_2_39_aarch64.whl |
|---|---|
| Size | 8.0 MB |
| Tags | CPython 3.10 Linux glibc 2.39+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ab3e853f285b57b3230e8056cb3a5fa45589c2b3b1f3535cc45de304ccaebd6a
|
|
BLAKE2b-256 checksum How to use checksums |
ad68748f7178711f0ef345ab70da1a6fdde6efd8de14b62732696e2a7aa46dc2
|
| 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 16, 2026.
Transparency logRelease files / gwz-1.0.13-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | gwz-1.0.13-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 |
e744679908b685bb29865d6cc9a3caa48fdf345f65037561b275d3b85f0ee592
|
|
BLAKE2b-256 checksum How to use checksums |
99847811304ff7afc043e7357bedd321bb3aad424305c760cd378c8c037838d1
|
| 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 16, 2026.
Transparency logRelease files / gwz-1.0.13-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | gwz-1.0.13-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 |
ffbe6c46b5543f016f3ef3c341fc86513946c7e74f54270b0173e333b71d820d
|
|
BLAKE2b-256 checksum How to use checksums |
9e10ad1fc34233816acc4664347c89bec595e5a098d063b3965d0d0a0b409255
|
| 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 16, 2026.
Transparency log