nedbat / coveragepy

The code coverage tool for Python
https://coverage.readthedocs.io
Apache License 2.0
2.98k stars 428 forks source link

.. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 .. For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt

=========== Coverage.py

Code coverage measurement for Python.

.. image:: https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg :target: https://vshymanskyy.github.io/StandWithUkraine :alt: Stand with Ukraine


| |kit| |license| |versions| | |test-status| |quality-status| |docs| |metacov| | |tidelift| |sponsor| |stars| |mastodon-coveragepy| |mastodon-nedbat|

Coverage.py measures code coverage, typically during test execution. It uses the code analysis tools and tracing hooks provided in the Python standard library to determine which lines are executable, and which have been executed.

Coverage.py runs on these versions of Python:

.. PYVERSIONS

Documentation is on Read the Docs. Code repository and issue tracker are on GitHub.

.. _Read the Docs: https://coverage.readthedocs.io/ .. _GitHub: https://github.com/nedbat/coveragepy

New in 7.x: multi-line exclusion patterns; function/class reporting; experimental support for sys.monitoring; dropped support for Python 3.7; added Coverage.collect() context manager; improved data combining; [run] exclude_also setting; report --format=; type annotations.

New in 6.x: dropped support for Python 2.7, 3.5, and 3.6; write data on SIGTERM; added support for 3.10 match/case statements.

For Enterprise

.. |tideliftlogo| image:: https://nedbatchelder.com/pix/Tidelift_Logo_small.png :alt: Tidelift :target: https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=readme

.. list-table:: :widths: 10 100

Getting Started

Looking to run coverage on your test suite? See the Quick Start section_ of the docs.

.. _Quick Start section: https://coverage.readthedocs.io/#quick-start

Change history

The complete history of changes is on the change history page_.

.. _change history page: https://coverage.readthedocs.io/en/latest/changes.html

Code of Conduct

Everyone participating in the coverage.py project is expected to treat other people with respect and to follow the guidelines articulated in the Python Community Code of Conduct_.

.. _Python Community Code of Conduct: https://www.python.org/psf/codeofconduct/

Contributing

Found a bug? Want to help improve the code or documentation? See the Contributing section_ of the docs.

.. _Contributing section: https://coverage.readthedocs.io/en/latest/contributing.html

Security

To report a security vulnerability, please use the Tidelift security contact_. Tidelift will coordinate the fix and disclosure.

.. _Tidelift security contact: https://tidelift.com/security

License

Licensed under the Apache 2.0 License. For details, see NOTICE.txt.

.. _Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 .. _NOTICE.txt: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt

.. |test-status| image:: https://github.com/nedbat/coveragepy/actions/workflows/testsuite.yml/badge.svg?branch=master&event=push :target: https://github.com/nedbat/coveragepy/actions/workflows/testsuite.yml :alt: Test suite status .. |quality-status| image:: https://github.com/nedbat/coveragepy/actions/workflows/quality.yml/badge.svg?branch=master&event=push :target: https://github.com/nedbat/coveragepy/actions/workflows/quality.yml :alt: Quality check status .. |docs| image:: https://readthedocs.org/projects/coverage/badge/?version=latest&style=flat :target: https://coverage.readthedocs.io/ :alt: Documentation .. |kit| image:: https://img.shields.io/pypi/v/coverage :target: https://pypi.org/project/coverage/ :alt: PyPI status .. |versions| image:: https://img.shields.io/pypi/pyversions/coverage.svg?logo=python&logoColor=FBE072 :target: https://pypi.org/project/coverage/ :alt: Python versions supported .. |license| image:: https://img.shields.io/pypi/l/coverage.svg :target: https://pypi.org/project/coverage/ :alt: License .. |metacov| image:: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/nedbat/8c6980f77988a327348f9b02bbaf67f5/raw/metacov.json :target: https://nedbat.github.io/coverage-reports/latest.html :alt: Coverage reports .. |tidelift| image:: https://tidelift.com/badges/package/pypi/coverage :target: https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=readme :alt: Tidelift .. |stars| image:: https://img.shields.io/github/stars/nedbat/coveragepy.svg?logo=github :target: https://github.com/nedbat/coveragepy/stargazers :alt: GitHub stars .. |mastodon-nedbat| image:: https://img.shields.io/badge/dynamic/json?style=flat&labelColor=450657&logo=mastodon&logoColor=ffffff&link=https%3A%2F%2Fhachyderm.io%2F%40nedbat&url=https%3A%2F%2Fhachyderm.io%2Fusers%2Fnedbat%2Ffollowers.json&query=totalItems&label=@nedbat :target: https://hachyderm.io/@nedbat :alt: nedbat on Mastodon .. |mastodon-coveragepy| image:: https://img.shields.io/badge/dynamic/json?style=flat&labelColor=450657&logo=mastodon&logoColor=ffffff&link=https%3A%2F%2Fhachyderm.io%2F%40coveragepy&url=https%3A%2F%2Fhachyderm.io%2Fusers%2Fcoveragepy%2Ffollowers.json&query=totalItems&label=@coveragepy :target: https://hachyderm.io/@coveragepy :alt: coveragepy on Mastodon .. |sponsor| image:: https://img.shields.io/badge/%E2%9D%A4-Sponsor%20me-brightgreen?style=flat&logo=GitHub :target: https://github.com/sponsors/nedbat :alt: Sponsor me on GitHub