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.6.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.6.0
File Interpreter ABI Platform
coverwise-1.6.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.6.0-py3-none-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
coverwise-1.6.0-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

Total release size: 1.0 MB

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

Download URL coverwise-1.6.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 438.5 kB
Tags Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
b11d0e14a52d99dd97efdb96b52e98de5f8b5e33adf739ac1be009ad63ab92df
BLAKE2b-256 checksum
How to use checksums
f07a7111ed8c7f0de92ef8fef85557841df723fc5d1f41b4114ec6a1d3f544e1
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 4, 2026.

Transparency log

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

Download URL coverwise-1.6.0-py3-none-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 385.7 kB
Tags Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
9fc19497f0e25f864ca9f08595d33fa6b6008c376fb97d91d02ac0f5a6e32a48
BLAKE2b-256 checksum
How to use checksums
79c1db2f747e4ee4be6b1d85dcc406648c06cea836af352cd0c3eff1977ec86d
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 4, 2026.

Transparency log

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

Download URL coverwise-1.6.0-py3-none-macosx_14_0_arm64.whl
Size 202.2 kB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
cbb7226c4758c67b572f27aa295a1026c5ae2019cdf2e695ca2e7a24e646b9bb
BLAKE2b-256 checksum
How to use checksums
2f8e86a47b3b708c4f0f16e98896402f8ca7e0708734c31a98eb8bcc212e2afc
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 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.6.0 This release

3 release files

1.5.0

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