Skip to main content

Near Zero-Overhead Python Code Coverage

Project description

Covers: Near Zero-Overhead Python Code Coverage

Covers is a fast Python code coverage tool, originally based on SlipCover. This version has been re-written as a Rust / PyO3 extension for improved performance and maintainability.

license pypi pyversions tests

About Covers

Covers is a fast code coverage tool. It tracks a Python program as it runs and reports on the parts that executed and those that didn't. That can help guide your testing (showing code that isn't being tested), debugging, fuzzing or to find "dead" code.

Past code coverage tools can make programs significantly slower; it is not uncommon for them to take twice as long to execute. Covers aims to provide the same information with near-zero overhead, often almost as fast as running the original Python program.

How it works

Previous coverage tools like Coverage.py rely on Python's tracing facilities, which add significant overhead. Instead, Covers uses the new sys.monitoring API to collect coverage information with minimal performance impact. The core data collection is implemented in Rust for maximum efficiency.

Getting started

Covers is available from PyPI. You can install it like any other Python module with

pip3 install covers

You could then run your Python script with:

python3 -m covers myscript.py

Using it with a test harness

Covers can also execute a Python module, as in:

python3 -m covers -m pytest -x -v

which starts pytest, passing it any options (-x -v in this example) after the module name. No plug-in is required for pytest.

Platforms

Our GitHub workflows run the automated test suite on Linux, MacOS and Windows, but really it should work anywhere where CPython does.

Contributing

Covers is under active development; contributions are welcome! Please also feel free to create a new issue with any suggestions or issues you may encounter.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

covers-0.0.4.dev202511092035.tar.gz (333.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

covers-0.0.4.dev202511092035-cp312-abi3-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12+Windows x86-64

covers-0.0.4.dev202511092035-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ x86-64

covers-0.0.4.dev202511092035-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ ARM64

covers-0.0.4.dev202511092035-cp312-abi3-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

covers-0.0.4.dev202511092035-cp312-abi3-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12+macOS 10.12+ x86-64

File details

Details for the file covers-0.0.4.dev202511092035.tar.gz.

File metadata

File hashes

Hashes for covers-0.0.4.dev202511092035.tar.gz
Algorithm Hash digest
SHA256 857af0ff9eb39fd0d2fa88fbdedacbbbf79bf3cb4762564f640445c530f8a881
MD5 ba045c72b63c420b4d92d453ea66e6e4
BLAKE2b-256 57bd414f6b7a8ce622b1c50e7e69bb653c9e188ef391e44d882648076e2048b3

See more details on using hashes here.

File details

Details for the file covers-0.0.4.dev202511092035-cp312-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for covers-0.0.4.dev202511092035-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f98fe38997205a84347506f34479552b0284c6a61a072e77f42f3d6fff3f2182
MD5 f789911ab0a069117b34f3f8ee7bdc1c
BLAKE2b-256 bdf700434583c4da28d2e684ac9479356d22327b1f21b172db0c3641a940f5af

See more details on using hashes here.

File details

Details for the file covers-0.0.4.dev202511092035-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for covers-0.0.4.dev202511092035-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8cf23d7a36868fb59ce46f9b8f819dae203155a8c5d820e0bcb3c5338eac6148
MD5 54a54d96046240bed1ceb39dc9d33066
BLAKE2b-256 42a4cda88138b594d7ecc5baea4a14121aff949be362f4b3cbb4e4b2dd8b2c7b

See more details on using hashes here.

File details

Details for the file covers-0.0.4.dev202511092035-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for covers-0.0.4.dev202511092035-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 53bfd921b379a6f3fdf26892b51a1bd91696dcb0c7f3b9ebad01bcc4a0e0cfbb
MD5 95b81a7e78ddc2cbc9ba1f90fa9c1feb
BLAKE2b-256 4e7756c7b7f47741f2f9e1cac9aa5daf8584c2e75de882a16904d60b16c1e792

See more details on using hashes here.

File details

Details for the file covers-0.0.4.dev202511092035-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for covers-0.0.4.dev202511092035-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15b658aeef237b2459a5c0aeec2a928230f263d2c5d26fe37310c21c85e73ff4
MD5 7488e078d4fc777f187e6d639abf20d3
BLAKE2b-256 35d0c9a27fb7d01aa529b9c86e9269ff9296cece66b89e997e97c586f95ab19e

See more details on using hashes here.

File details

Details for the file covers-0.0.4.dev202511092035-cp312-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for covers-0.0.4.dev202511092035-cp312-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 df1391fdca41733354fe8bb16acf6b3c9d612fabd9bbaef908997d2289b2a54a
MD5 013de58bc66b8e4b0faa6fcec817139e
BLAKE2b-256 e6b52fc0dab2b68cae7cab56d850c6bcd4a2bcd4d2e9ae49baa7b46cdc502422

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page