Skip to main content

coverwise

PyPI npm License

Combinatorial test coverage for Python. The coverwise package ships the native C++ CLI plus a Python API that generates, analyzes, and incrementally extends t-wise test suites — including a pytest decorator that replaces a hand-written cross-product with a covering suite.

Installation

pip install coverwise

Supported wheels: Linux x86_64, Linux aarch64, and macOS 14+ Apple Silicon. The package ships a prebuilt executable rather than portable Python code, so other platforms have to build the CLI from source. There are no Python runtime dependencies, and the coverwise command is installed directly.

Quick Start

import coverwise

result = coverwise.generate(
    parameters={
        "os": ["Linux", "macOS", "Windows"],
        "browser": ["Chrome", "Firefox", "Safari"],
    },
    constraints=["IF os = Windows THEN browser != Safari"],
    strength=2,
)

result["coverage"]  # 1
result["tests"]     # [{"os": "Linux", "browser": "Firefox"}, ...]

Every function takes and returns plain dictionaries — the same JSON the CLI reads and writes:

Function Purpose
generate(model, **fields) Generate a covering suite
analyze_coverage(parameters, tests, strength, constraints) Measure an existing suite
extend_tests(existing, model, **fields) Extend a suite, keeping existing tests
estimate_model(model, **fields) Model size and validity, without generating

Invalid models and unparsable constraints raise coverwise.CoverwiseError, carrying code, exit_code, and the CLI's stderr.

pytest

coverwise.parametrize runs a test once per generated case, passing each parameter as a same-named argument:

import coverwise

@coverwise.parametrize(
    {
        "os": ["Windows", "macOS", "Linux"],
        "browser": ["Chrome", "Firefox", "Safari"],
        "locale": ["en", "ja"],
    },
    constraints=["IF os = Windows THEN browser != Safari"],
)
def test_login(os, browser, locale):
    assert login(os, browser, locale).ok

The full cross-product is 18 cases; the pairwise suite covers every pair in far fewer. pytest is not a dependency of this package — the decorator only needs it where tests run, and pip install coverwise[pytest] installs both together.

Command Line

coverwise generate input.json > tests.json
coverwise analyze --params input.json --tests tests.json
coverwise extend --existing tests.json input.json > updated.json
coverwise stats input.json

Any input path may be - to read that JSON from standard input. python -m coverwise is equivalent to the installed command, and coverwise --help lists every command with its exit-code contract.

See the Python API reference, the CLI reference, and the full project documentation.

License

Apache-2.0

Release files for coverwise 1.5.0

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

Built distributions (wheels)

Table of built distributions (wheels) for coverwise 1.5.0
File Interpreter ABI Platform
coverwise-1.5.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
coverwise-1.5.0-py3-none-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
coverwise-1.5.0-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

Total release size: 995.4 kB

Release files / coverwise-1.5.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL coverwise-1.5.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 424.3 kB
Tags Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
22934c2e87988ca11aa085f12233140f00146836b54289c5426a88b1f42c652d
BLAKE2b-256 checksum
How to use checksums
d64bd7996e6eb45aaada6ac7b772b1fe81c86b084e2bae9df1cc94afbd32fc0c
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 Aug 23, 2026.

Transparency log

Release files / coverwise-1.5.0-py3-none-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL coverwise-1.5.0-py3-none-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 377.0 kB
Tags Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
33b6fa679078127c5cd24fbadd129b58e77256e30a37f430dc8b4e5fa72ed054
BLAKE2b-256 checksum
How to use checksums
1fd70640a098317e8dd9a2e8e6686cdee43c0b00783c1d9b2e77c6a707aef91a
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 Aug 23, 2026.

Transparency log

Release files / coverwise-1.5.0-py3-none-macosx_14_0_arm64.whl

Download URL coverwise-1.5.0-py3-none-macosx_14_0_arm64.whl
Size 194.1 kB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
4a5fa2745f8314645a39155961d1a73812298dd15919d6366b631b97aa161f3b
BLAKE2b-256 checksum
How to use checksums
1e75f1f51b237f655ca3f0baaf9e8160e39974080525392481854f5183e6622f
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 Aug 23, 2026.

Transparency log

Release history Release notifications | RSS feed

1.6.0

3 release files

This release

1.5.0 This release

3 release files

1.4.0

3 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