testscan (Python launcher)
English | Русский
Thin wrapper: finds the Go binary and forwards argv / exit code.
Source of truth is the Go CLI (cmd/testscan). Python has no rules, parsing, or flag handling.
Package name on PyPI: testscan. Version comes from git tags (v*) via hatch-vcs.
Install (PyPI)
uvx testscan@latest tests/
# or: pipx run testscan tests/
# or: pip install testscan && testscan tests/
Release CI builds platform wheels (linux/amd64, darwin/arm64, windows/amd64) with the Go binary under testscan_py/bin/.
Local embed (contributors)
Binaries under src/testscan_py/bin/ are not committed (.gitignore). Embed before uvx --from ./python. pyproject.toml sets ignore-vcs = true and force-include for bin/*, otherwise hatchling can drop the binary because of gitignore.
powershell -ExecutionPolicy Bypass -File python/scripts/embed_bin.ps1
bash python/scripts/embed_bin.sh
Manual equivalent:
go build -o python/src/testscan_py/bin/testscan ./cmd/testscan
# Windows: .../bin/testscan.exe
Then:
uvx --from ./python testscan --help
uvx --from ./python testscan rules/testdata/empty --fail-on never
Without embed — via env (handy for debugging the wrapper):
go build -o /tmp/testscan ./cmd/testscan
TESTSCAN_BIN=/tmp/testscan uvx --from ./python testscan --help
Platform wheel (release / maintainers)
# from repo root; needs git tag history for hatch-vcs
bash python/scripts/build_platform_wheel.sh linux-amd64 manylinux_2_17_x86_64
Tag a release (v0.1.0) to trigger .github/workflows/release.yml → multi-OS wheels → PyPI + GitHub Release.
Before the first publish: create a PyPI project + Trusted Publisher for this repo (workflow Release, environment pypi), or the publish job will fail on OIDC.
Binary lookup (priority)
TESTSCAN_BIN- bundled:
testscan_py/bin/testscan.exe(Windows) /testscan(unix) PATH(shutil.which("testscan"))
If not found → message on stderr, exit 2.
Manual check list
-
uvx testscan@latest --help(after PyPI publish) → usage (exit 0) -
uvx --from ./python testscan --helpafter embed → usage (exit 0) -
uvx --from ./python testscan rules/testdata/empty/hit --rule empty-test --fail-on error→ exit 1 -
uvx --from ./python testscan rules/testdata/empty/clean --fail-on error→ exit 0 - bundled binary in wheel after embed +
ignore-vcs/force-include -
go test ./...green
Release files for testscan 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| testscan-0.1.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| testscan-0.1.0-py3-none-manylinux_2_17_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| testscan-0.1.0-py3-none-macosx_11_0_x86_64.whl | Python 3 | none | macOS 11.0+ x86-64 | Details |
| testscan-0.1.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
Total release size: 4.8 MB
Release files / testscan-0.1.0-py3-none-win_amd64.whl
| Download URL | testscan-0.1.0-py3-none-win_amd64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a600ec2f2a6f8666441be1a703ee175edc931289c656f64b5a90d07dbe01e20f
|
|
BLAKE2b-256 checksum How to use checksums |
6a07c14e6c788e5871ff33912c2073e93504cad89348b7cb7a89d78fe3e725fb
|
| 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 24, 2026.
Transparency logRelease files / testscan-0.1.0-py3-none-manylinux_2_17_x86_64.whl
| Download URL | testscan-0.1.0-py3-none-manylinux_2_17_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
f736cbe75ad42712d190dda5fe66c0c31c40d2bb389634c32f7d0b0232c37a08
|
|
BLAKE2b-256 checksum How to use checksums |
cb4a9334c6b8ef44a9b02009045a544ecf665b6a80a4cfa9198f2391816adc6c
|
| 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 24, 2026.
Transparency logRelease files / testscan-0.1.0-py3-none-macosx_11_0_x86_64.whl
| Download URL | testscan-0.1.0-py3-none-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
b047d26e4625bcfc360f88e01834d9ce1d5a3563d7ffee81d81f43a12a13869b
|
|
BLAKE2b-256 checksum How to use checksums |
dfd53ca749f9ad990aeaafff817585372097363566db52336f8ab18c4764dfc2
|
| 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 24, 2026.
Transparency logRelease files / testscan-0.1.0-py3-none-macosx_11_0_arm64.whl
| Download URL | testscan-0.1.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d649dfaf95ae7b437f768ff218476d7368fec0422459bf10196f8338a9924fd6
|
|
BLAKE2b-256 checksum How to use checksums |
8d7e6b74ae6b19a9ebea24cefc6c1ac28cadbf1b74433b15d4b315ed977dc137
|
| 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 24, 2026.
Transparency log