This release is a pre-release and may not be stable for production use.
zclick
Python command-line interfaces backed by Rust and zclap. Import the public API
as import zclick as click, including the matching zclick.core, zclick.types,
zclick.testing and zclick.shell_completion submodules.
The fixed compatibility target is Click 8.5.1, source commit
cf19179.
The versioned documentation, API inventory and original tests are pinned in
compatibility/target.json. The implementation uses
registry zclap 0.1.4, PyO3 0.30.1 and Rust 1.99.1 / Edition 2024.
This is a preview release; the complete compatibility target is not yet met. CPython subinterpreters are currently unsupported and are explicitly rejected at native module initialization. The locked PyO3 binding has Python object caches that are not partitioned by interpreter. See the open compatibility record. Stable publication is blocked while an open compatibility gap remains.
Compatibility evidence · Performance measurements · Architecture · Build and release
Installation and a first command
After PyPI publication, install the preview with:
pip install --pre zclick
Published wheels and source archives are also available through
GitHub Releases. Ordinary
CPython wheels support Python 3.10 and newer; PyPy and free-threaded CPython
require their corresponding wheels or an interpreter-specific source build.
The intended stable installation is pip install zclick once the outstanding
compatibility gate is satisfied.
import zclick as click
@click.command()
@click.option("--count", default=1, type=int, help="Number of greetings.")
@click.option("--name", prompt="Your name", help="The person to greet.")
def hello(count, name):
for _ in range(count):
click.echo(f"Hello, {name}!")
if __name__ == "__main__":
hello()
Migration
Replace import click with import zclick as click. Replace submodule imports,
for example from click.testing import CliRunner, with
from zclick.testing import CliRunner.
The wheel installs the zclick namespace. It has no third-party Python runtime
requirements, does not install a top-level click package, and does not
redirect another package's imports. Original Click is only a development and
comparison dependency.
A third-party extension that imports Click internally continues to use Click. Its classes and context stack require separate migration. The extension compatibility report reproduces this boundary with locked releases of click-didyoumean, click-plugins and click-repl, including their original-Click control runs. Changing an application's import alias does not automatically migrate those extensions.
Compatibility and performance
The release gate requires the complete 33,459-case official test collection, including 31,000 stress cases, with the same test IDs and original platform skip/expected-failure conditions. It additionally checks 196 public objects and their members, the 12 upstream typing examples, native property and differential tests, and real Bash, Zsh, Fish and PowerShell completion. Results are tied to an immutable implementation commit; configured platforms are not reported as passing until their jobs succeed. See COMPATIBILITY.md and the CI runs.
Rust removes interpreter work from parsing, scheduling, dispatch and text
formatting. Python object creation and virtual method calls still have a cost.
The benchmark report includes construction, repeated
parser calls, full Command.main calls, nested commands, help, wrapping, imports
and memory measurements. Some workloads are faster and some are slower; the
report includes both. No universal speedup or zero-allocation claim is made.
Examples
| Example | Behavior |
|---|---|
hello.py |
Decorators, options, prompting and output |
pipeline.py |
Chained commands, context state and result callbacks |
workspace.py |
A custom type, arbitrary-size integers, context resources, environment defaults and completion |
python examples/hello.py --count 2 --name Ada
python examples/pipeline.py --text 'hello world' uppercase replace WORLD Rust
python examples/workspace.py --prefix demo convert 0x10000000000000000
Shell completion setup covers the source/complete protocols and the scope of actual shell-engine validation.
Development
Use Python 3.10 or newer and the pinned Rust toolchain. Create a virtual environment, install Maturin and the test dependencies, then build the extension:
python -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements-dev.txt
maturin develop --release --locked
python -m pytest tests
python scripts/run_compatibility.py
Use the development guide for complete stress verification, cross-platform builds, dependency audits, reproducible benchmarks and version bumps. The release workflow builds and installs the actual wheels before publishing them.
Architecture
Python objects preserve decorators, custom subclasses, callbacks and ordinary
Python values. The native extension builds a fresh parsing plan for each call.
The Rust core performs token recognition through zclap, applies Click argument
consumption rules, schedules parameters and formats text. Rust also drives
command groups and parser actions through Python's current methods. The core uses
no_std with alloc; its only direct third-party dependency is zclap. The
extension uses PyO3 and the Rust standard library.
The Python interface accepts mutations between invocations. Plans are not cached, and user callbacks run without a native lock or borrowed mutable parser state. Python integer conversion uses Python integers rather than fixed-width Rust integers. Input strings preserve surrogate code points at the binding boundary.
CliRunner changes interpreter streams, environment variables and sometimes the
working directory. Use separate processes for concurrent runner tests.
The project implementation is MIT licensed. Distribution notices for the generated Click API declarations, Rust dependencies and standard library are listed in THIRD_PARTY_LICENSES.md.
Metadata
Release files for zclick 0.1.1a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| zclick-0.1.1a1.tar.gz | 219.5 kB | With provenance | Details for zclick-0.1.1a1.tar.gz |
Built distributions (wheels)
Total release size: 7.8 MB
Release files / zclick-0.1.1a1.tar.gz
| Download URL | zclick-0.1.1a1.tar.gz |
|---|---|
| Size | 219.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d86ba424eb8f0ecef8740639461e0e2f7ee9c76fcac13dcb2fe2c4dcf3a795c
|
|
BLAKE2b-256 checksum How to use checksums |
aea4215cb248843af9835358ac5dc22c2c8cb59b23a6afa17e52a551af3b6798
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-pp312-pypy312_pp80-manylinux_2_34_x86_64.whl
| Download URL | zclick-0.1.1a1-pp312-pypy312_pp80-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 626.6 kB |
| Tags | Linux glibc 2.34+ x86-64 PyPy 3.12 PyPy 3.12 8.0 |
|
SHA-256 checksum How to use checksums |
3e6dc314b9b414a224598be9a90e3d7acb9c2a2344a5764d0407191d5acdd51b
|
|
BLAKE2b-256 checksum How to use checksums |
821b2e59ae498e14db21261d9bd95c39046417d192111c782709e14d71019075
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-pp311-pypy311_pp80-manylinux_2_34_x86_64.whl
| Download URL | zclick-0.1.1a1-pp311-pypy311_pp80-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 628.3 kB |
| Tags | Linux glibc 2.34+ x86-64 PyPy 3.11 PyPy 3.11 8.0 |
|
SHA-256 checksum How to use checksums |
3fe5afe1e54e22ed9d5f568ecac29fde35a1e69f121eb0f368df2d46cdb68256
|
|
BLAKE2b-256 checksum How to use checksums |
48836db28a26557ab6fd8982d02bb24a3750f2c5b0695304f96dfef8195721a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp315-cp315t-manylinux_2_34_x86_64.whl
| Download URL | zclick-0.1.1a1-cp315-cp315t-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 624.6 kB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
b641b61129ec25a70d8272cd58e07c22479d4c1183742e6e712cee7e9909f015
|
|
BLAKE2b-256 checksum How to use checksums |
496ec0f60602866ed9768c00142a7b66d6c74c7823d39c19a2eebc77f48bb2af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp314-cp314t-manylinux_2_34_x86_64.whl
| Download URL | zclick-0.1.1a1-cp314-cp314t-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 624.6 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
27e64507f1b46d37d50e636026cbcc1d0379f4ca25f8a85e14683efc7937891e
|
|
BLAKE2b-256 checksum How to use checksums |
ba8e07b4bca56fc71ba5740bd5ace7b57a8d75eb0e57c4bb5730b37bcf10833c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp310-abi3-win_arm64.whl
| Download URL | zclick-0.1.1a1-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 503.1 kB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
b5ec2cd570ac97744459f373fffad48f43413c00525378ad682f85f5a3dcebce
|
|
BLAKE2b-256 checksum How to use checksums |
6e144e0fc0677d1b6ddce1b91571d35946c0bcfd07b1fbc891fe42e09943d410
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp310-abi3-win_amd64.whl
| Download URL | zclick-0.1.1a1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 511.4 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
355779cc84e7fb4890f8e8579fc580a98a939bd210c13cf2477ab3806df63d62
|
|
BLAKE2b-256 checksum How to use checksums |
31424a538e162148cdae3c62796858b969d4062c4230824d661c3a83ea0ea000
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | zclick-0.1.1a1-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 844.9 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c308f9b241c0b8cc66940e202b86446039457b5e98d181d3d4ad089ab9229dfd
|
|
BLAKE2b-256 checksum How to use checksums |
47ccd23a1175152db1e4066360b5c3b2719143b1f9a970499b16f3b18886ae7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | zclick-0.1.1a1-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 802.5 kB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
daa463ecee2adc2b74e579f8c81a25773f437972c9dabdb93bea90d677532ccb
|
|
BLAKE2b-256 checksum How to use checksums |
554068c0d4f07e8439be6d67d3a461af5275e2a3b9ef9e0534ba306c02c41518
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | zclick-0.1.1a1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 632.2 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
457e6d01343ccc39cc925ac86ab0e43b6c85e45a165af14e06f37c827ee13a98
|
|
BLAKE2b-256 checksum How to use checksums |
19b9c77487db0608d8b1813d1cb34398f38322bc56df958175560f02a3d28f77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | zclick-0.1.1a1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
|---|---|
| Size | 623.8 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e86b07022018c15df6baa9e59a803b8ae5367651e37936d2c14f948e1ec83536
|
|
BLAKE2b-256 checksum How to use checksums |
bc4fcadc5f357816771b52977cf51d607a0f0db47655a2fd7c260bb06de5c81a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | zclick-0.1.1a1-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 598.4 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5eb368ea6fe01b407ed255e692361384db31d20ee3c371454839dc80f3b53515
|
|
BLAKE2b-256 checksum How to use checksums |
2bd83c9b8ae21a6c219101a553d5e8d07994567708d60495152bc1c345044bc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logRelease files / zclick-0.1.1a1-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | zclick-0.1.1a1-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 604.8 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
34ec4c16a8d2670937e4c878776fe9f1fc7dbe9d862432fac956b72b8c144dab
|
|
BLAKE2b-256 checksum How to use checksums |
ae34ec267712a45540b99da41fb9334be6abcb5c6afcb9a99007f82481cd5168
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 11, 2026.
Transparency logSecurity for zclick 0.1.1a1
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.
Full provenance
All 13 files in this release have been uploaded with provenance metadata.
Attestation for zclick-0.1.1a1.tar.gz
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 Nov 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.