diff --git a/.github/ISSUE_TEMPLATE/support.md b/.github/ISSUE_TEMPLATE/support.md new file mode 100644 index 000000000..d373ef5c6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/support.md @@ -0,0 +1,26 @@ +--- +name: Support request +about: Ask for help using coverage.py +title: '' +labels: support, needs triage +assignees: '' + +--- + +**Have you asked elsewhere?** + +There are other good places to ask for help using coverage.py. These places let +other people suggest solutions, are more likely places for people to find your +question: + +- [Stack Overflow](https://stackoverflow.com/questions/tagged/coverage.py) +- [discuss.python.org](https://discuss.python.org/search?q=coverage.py) + +**Describe your situation** + +Wherever you ask your question, be sure to explain: + +- What you did +- What happened +- How that was different than what you wanted to happen +- What kind of help you need diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 5bd88afa1..5c9a8814f 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -55,10 +55,13 @@ jobs: - "pypy-3.9" - "pypy-3.10" exclude: - # Mac PyPy always takes the longest, and doesn't add anything. Skip - # 3.8, but use 3.9/3.10 while Windows is still borked. + # Mac PyPy always takes the longest, and doesn't add anything. - os: macos python-version: "pypy-3.8" + - os: macos + python-version: "pypy-3.9" + - os: macos + python-version: "pypy-3.10" # Windows pypy 3.9 and 3.10 get stuck with PyPy 7.3.15. I hope to # unstick them, but I don't want that to block all other progress, so # skip them for now. @@ -66,6 +69,13 @@ jobs: python-version: "pypy-3.9" - os: windows python-version: "pypy-3.10" + # Skip 3.13.0a4 and pin to 3.13.0a3 for Windows due to build error. + # Undo when 3.13.0a5 is released. + - os: windows + python-version: "3.13" + include: + - os: windows + python-version: "3.13.0-alpha.3" # If one job fails, stop the whole thing. fail-fast: true @@ -232,7 +242,9 @@ jobs: path: reports_repo/${{ env.report_dir }} - name: "Push to report repo" - if: ${{ github.ref == 'refs/heads/master' }} + if: | + github.repository_owner == 'nedbat' + && github.ref == 'refs/heads/master' env: COMMIT_MESSAGE: ${{ github.event.head_commit.message }} run: | @@ -256,7 +268,9 @@ jobs: echo '[${{ env.url }}](${{ env.url }})' >> $GITHUB_STEP_SUMMARY - name: "Create badge" - if: ${{ github.ref == 'refs/heads/master' }} + if: | + github.repository_owner == 'nedbat' + && github.ref == 'refs/heads/master' # https://gist.githubusercontent.com/nedbat/8c6980f77988a327348f9b02bbaf67f5 uses: schneegans/dynamic-badges-action@e9a478b16159b4d31420099ba146cdc50f134483 with: diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index e6742753e..ee94b1ea0 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -62,6 +62,13 @@ jobs: python-version: "pypy-3.9" - os: windows python-version: "pypy-3.10" + # Skip 3.13.0a4 and pin to 3.13.0a3 for Windows due to build error. + # Undo when 3.13.0a5 is released. + - os: windows + python-version: "3.13" + include: + - os: windows + python-version: "3.13.0-alpha.3" fail-fast: false steps: diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 1960ebca2..b02536f1a 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -16,8 +16,8 @@ sphinx: builder: html configuration: doc/conf.py -# Build all the formats -formats: all +# Don't build anything except HTML. +formats: [] python: install: diff --git a/CHANGES.rst b/CHANGES.rst index a65101ea6..933aac7d8 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -9,6 +9,9 @@ These changes are listed in decreasing version number order. Note this can be different from a strict chronological order when there are two branches in development at the same time, such as 4.5.x and 5.0. +See :ref:`migrating` for significant changes that might be required when +upgrading your version of coverage.py. + .. When updating the "Unreleased" header to a specific version, use this .. format. Don't forget the jump target: .. @@ -19,6 +22,18 @@ development at the same time, such as 4.5.x and 5.0. .. scriv-start-here +.. _changes_7-4-2: + +Version 7.4.2 — 2024-02-20 +-------------------------- + +- Fix: setting ``COVERAGE_CORE=sysmon`` no longer errors on 3.11 and lower, + thanks `Hugo van Kemenade `_. It now issues a warning that + sys.monitoring is not available and falls back to the default core instead. + +.. _pull 1747: https://github.com/nedbat/coveragepy/pull/1747 + + .. _changes_7-4-1: Version 7.4.1 — 2024-01-26 @@ -886,10 +901,12 @@ Version 6.3 — 2022-01-25 Version 6.2 — 2021-11-26 ------------------------ -- Feature: Now the ``--concurrency`` setting can now have a list of values, so - that threads and another lightweight threading package can be measured - together, such as ``--concurrency=gevent,thread``. Closes `issue 1012`_ and - `issue 1082`_. +- Feature: Now the ``--concurrency`` setting can have a list of values, so that + threads and another lightweight threading package can be measured together, + such as ``--concurrency=gevent,thread``. Closes `issue 1012`_ and `issue + 1082`_. This also means that ``thread`` must be explicitly specified in some + cases that used to be implicit such as ``--concurrency=multiprocessing``, + which must be changed to ``--concurrency=multiprocessing,thread``. - Fix: A module specified as the ``source`` setting is imported during startup, before the user program imports it. This could cause problems if the rest of diff --git a/Makefile b/Makefile index 52a6c4cce..cf81a8a38 100644 --- a/Makefile +++ b/Makefile @@ -179,19 +179,19 @@ sample_html_beta: _sample_cog_html ## Generate sample HTML report for a beta rel REPO_OWNER = nedbat/coveragepy -edit_for_release: ## Edit sources to insert release facts. +edit_for_release: #: Edit sources to insert release facts (see howto.txt). python igor.py edit_for_release cheats: ## Create some useful snippets for releasing. python igor.py cheats | tee cheats.txt -relbranch: ## Create the branch for releasing. +relbranch: #: Create the branch for releasing (see howto.txt). git switch -c nedbat/release-$$(date +%Y%m%d) -relcommit1: ## Commit the first release changes. +relcommit1: #: Commit the first release changes (see howto.txt). git commit -am "docs: prep for $$(python setup.py --version)" -relcommit2: ## Commit the latest sample HTML report. +relcommit2: #: Commit the latest sample HTML report (see howto.txt). git commit -am "docs: sample HTML for $$(python setup.py --version)" kit: ## Make the source distribution. @@ -287,7 +287,7 @@ $(RELNOTES_JSON): $(CHANGES_MD) $(DOCBIN)/python ci/parse_relnotes.py tmp/rst_rst/changes.md $(RELNOTES_JSON) github_releases: $(DOCBIN) ## Update GitHub releases. - $(DOCBIN)/python -m scriv github-release + $(DOCBIN)/python -m scriv github-release --all comment_on_fixes: $(RELNOTES_JSON) ## Add a comment to issues that were fixed. python ci/comment_on_fixes.py $(REPO_OWNER) diff --git a/ci/comment_on_fixes.py b/ci/comment_on_fixes.py index 08b4dee06..2f7dbdc47 100644 --- a/ci/comment_on_fixes.py +++ b/ci/comment_on_fixes.py @@ -7,7 +7,7 @@ import re import sys -import requests +from session import get_session with open("tmp/relnotes.json") as frn: relnotes = json.load(frn) @@ -27,14 +27,14 @@ if kind == "issues": url = f"https://api.github.com/repos/{repo_owner}/issues/{number}" - issue_data = requests.get(url).json() + issue_data = get_session().get(url).json() if issue_data["state"] == "closed": do_comment = True else: print(f"Still open, comment manually: {m[0]}") else: url = f"https://api.github.com/repos/{repo_owner}/pulls/{number}" - pull_data = requests.get(url).json() + pull_data = get_session().get(url).json() if pull_data["state"] == "closed": if pull_data["merged"]: do_comment = True @@ -46,5 +46,5 @@ if do_comment: print(f"Commenting on {m[0]}") url = f"https://api.github.com/repos/{repo_owner}/issues/{number}/comments" - resp = requests.post(url, json={"body": comment}) + resp = get_session().post(url, json={"body": comment}) print(resp) diff --git a/ci/download_gha_artifacts.py b/ci/download_gha_artifacts.py index bb866833f..d91add0c3 100644 --- a/ci/download_gha_artifacts.py +++ b/ci/download_gha_artifacts.py @@ -13,12 +13,11 @@ import time import zipfile -import requests - +from session import get_session def download_url(url, filename): """Download a file from `url` to `filename`.""" - response = requests.get(url, stream=True) + response = get_session().get(url, stream=True) if response.status_code == 200: with open(filename, "wb") as f: for chunk in response.iter_content(16*1024): @@ -60,7 +59,7 @@ def all_items(url, key): """ url += ("&" if "?" in url else "?") + "per_page=100" while url: - response = requests.get(url) + response = get_session().get(url) response.raise_for_status() data = response.json() if isinstance(data, dict) and (msg := data.get("message")): diff --git a/ci/session.py b/ci/session.py new file mode 100644 index 000000000..48c6f0bcb --- /dev/null +++ b/ci/session.py @@ -0,0 +1,27 @@ +# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 +# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt + +"""Help make a requests Session with proper authentication.""" + +import os + +import requests + +_SESSION = None + +def get_session(): + """Get a properly authenticated requests Session.""" + + global _SESSION + + if _SESSION is None: + # If GITHUB_TOKEN is in the environment, use it. + _SESSION = requests.session() + token = os.environ.get("GITHUB_TOKEN") + if token is not None: + _SESSION.headers["Authorization"] = f"token {token}" + # requests.get() will always prefer the .netrc file even if a header + # is already set. This tells it to ignore the .netrc file. + _SESSION.trust_env = False + + return _SESSION diff --git a/ci/trigger_build_kits.py b/ci/trigger_build_kits.py index 0485df10a..4751016aa 100644 --- a/ci/trigger_build_kits.py +++ b/ci/trigger_build_kits.py @@ -5,7 +5,7 @@ import sys -import requests +from session import get_session repo_owner = sys.argv[1] @@ -18,9 +18,12 @@ # - build-kits # -resp = requests.post( +resp = get_session().post( f"https://api.github.com/repos/{repo_owner}/dispatches", json={"event_type": "build-kits"}, ) -print(f"Status: {resp.status_code}") -print(resp.text) +if resp.status_code // 100 == 2: + print("Success") +else: + print(f"Status: {resp.status_code}") + print(resp.text) diff --git a/coverage/collector.py b/coverage/collector.py index 1fd06dbb5..87cd620e3 100644 --- a/coverage/collector.py +++ b/coverage/collector.py @@ -150,6 +150,11 @@ def __init__( core = "pytrace" else: core = os.getenv("COVERAGE_CORE") + + if core == "sysmon" and not env.PYBEHAVIOR.pep669: + self.warn("sys.monitoring isn't available, using default core", slug="no-sysmon") + core = None + if not core: # Once we're comfortable with sysmon as a default: # if env.PYBEHAVIOR.pep669 and self.should_start_context is None: diff --git a/coverage/sysmon.py b/coverage/sysmon.py index ab231fde1..e6fe28fc3 100644 --- a/coverage/sysmon.py +++ b/coverage/sysmon.py @@ -251,11 +251,11 @@ def stop(self) -> None: return assert sys_monitoring is not None sys_monitoring.set_events(self.myid, 0) + self.sysmon_on = False for code in self.local_event_codes.values(): sys_monitoring.set_local_events(self.myid, code, 0) self.local_event_codes = {} sys_monitoring.free_tool_id(self.myid) - self.sysmon_on = False @panopticon() def post_fork(self) -> None: diff --git a/coverage/version.py b/coverage/version.py index 2f953e709..69fe7597e 100644 --- a/coverage/version.py +++ b/coverage/version.py @@ -8,7 +8,7 @@ # version_info: same semantics as sys.version_info. # _dev: the .devN suffix if any. -version_info = (7, 4, 1, "final", 0) +version_info = (7, 4, 2, "final", 0) _dev = 0 diff --git a/doc/cmd.rst b/doc/cmd.rst index a440e987c..439927d9c 100644 --- a/doc/cmd.rst +++ b/doc/cmd.rst @@ -273,6 +273,11 @@ Conflicting dynamic contexts (dynamic-conflict) :meth:`.Coverage.switch_context` function to change the context. Only one of these mechanisms should be in use at a time. +sys.monitoring isn't available, using default core (no-sysmon) + You requested to use the sys.monitoring measurement core, but are running on + Python 3.11 or lower where it isn't available. A default core will be used + instead. + Individual warnings can be disabled with the :ref:`disable_warnings ` configuration setting. To silence "No data was collected," add this to your configuration file: diff --git a/doc/conf.py b/doc/conf.py index 04ce4c0a6..18c5a3c70 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -67,11 +67,11 @@ # @@@ editable copyright = "2009–2024, Ned Batchelder" # pylint: disable=redefined-builtin # The short X.Y.Z version. -version = "7.4.1" +version = "7.4.2" # The full version, including alpha/beta/rc tags. -release = "7.4.1" +release = "7.4.2" # The date of release, in "monthname day, year" format. -release_date = "January 26, 2024" +release_date = "February 20, 2024" # @@@ end rst_epilog = """ diff --git a/doc/faq.rst b/doc/faq.rst index d4f5a565e..500182e7b 100644 --- a/doc/faq.rst +++ b/doc/faq.rst @@ -136,25 +136,6 @@ It's good, but `it isn't perfect`__. __ https://nedbatchelder.com/blog/200710/flaws_in_coverage_measurement.html -.. Other resources - --------------- - - There are a number of projects that help integrate coverage.py into other - systems: - - - `trialcoverage`_ is a plug-in for Twisted trial. - - .. _trialcoverage: https://pypi.org/project/trialcoverage/ - - - `pytest-cov`_ - - .. _pytest-cov: https://pypi.org/project/pytest-cov/ - - - `django-coverage`_ for use with Django. - - .. _django-coverage: https://pypi.org/project/django-coverage/ - - Q: Where can I get more help with coverage.py? .............................................. @@ -168,7 +149,7 @@ Bug reports are gladly accepted at the `GitHub issue tracker`_. .. _GitHub issue tracker: https://github.com/nedbat/coveragepy/issues -`I can be reached`__ in a number of ways, I'm happy to answer questions about +`I can be reached`__ in a number of ways. I'm happy to answer questions about using coverage.py. __ https://nedbatchelder.com/site/aboutned.html diff --git a/doc/index.rst b/doc/index.rst index 522c4a6bf..9ebcde8c5 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -240,6 +240,7 @@ More information api howitworks plugins + other contributing trouble faq diff --git a/doc/migrating.rst b/doc/migrating.rst index 443afac63..865ede3a0 100644 --- a/doc/migrating.rst +++ b/doc/migrating.rst @@ -8,10 +8,10 @@ Migrating between versions ========================== New versions of coverage.py or Python might require you to adjust your -settings, options, or other aspects how you use coverage.py. This page details -those changes. +settings, options, or other aspects of how you use coverage.py. This page +details those changes. -.. _migrating_cov7: +.. _migrating_cov7x: Migrating to coverage.py 7.x ---------------------------- @@ -41,6 +41,18 @@ Consider these changes when migrating to coverage.py 7.x: updates. +.. _migrating_cov62: + +Migrating to coverage.py 6.2 +---------------------------- + +- The ``--concurrency`` settings changed in 6.2 to be a list of values. You + might need to explicitly list concurrency options that we previously implied. + For example, ``--concurrency=multiprocessing`` used to implicitly enable + thread concurrency. Now that must be explicitly enabled with + ``--concurrency=multiprocessing,thread``. + + .. _migrating_py312: Migrating to Python 3.12 diff --git a/doc/other.rst b/doc/other.rst new file mode 100644 index 000000000..d0998b37f --- /dev/null +++ b/doc/other.rst @@ -0,0 +1,131 @@ +.. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 +.. For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt + +.. _other: + +=============== +Other resources +=============== + + +There are a number of projects that help integrate coverage.py into other +systems, provide help using it, offer assistance, and so on. + +There's no guarantee these items are maintained or work well. Some of them +seem to be quite old. If you have suggestions for updates to this page, `open +a pull request`_ or `get in touch`_ some other way. + +.. _open a pull request: https://github.com/nedbat/coveragepy/blob/master/doc/other.rst +.. _get in touch: https://nedbatchelder.com/site/aboutned.html + +Test runners +------------ + +Helpers for using coverage with specific test runners. + +* `pytest-cov`__ is a pytest plugin to coordinate coverage.py usage. + + __ https://pypi.org/project/pytest-cov/ + +* `trialcoverage`__ is a plug-in for Twisted trial. + + __ https://pypi.org/project/trialcoverage/ + + +Configuration helpers +--------------------- + +Tools to provide more control over how coverage is configured. + +* `covdefaults`__ provides "sensible" default settings for coverage. + + __ https://github.com/asottile/covdefaults + +* `coverage-conditional-plugin`__ lets you use conditions instead of simple "no + cover" pragmas to control what lines are considered under different + conditions. + + __ https://github.com/wemake-services/coverage-conditional-plugin + + +Language plugins +---------------- + +Coverage.py plugins to enable coverage measurement of other languages. + +* `django-coverage`__ measures the coverage of Django templates. + + __ https://pypi.org/project/django-coverage/ + +* `Cython`__ provides a plugin for measuring Cythonized code. + + __ https://cython.readthedocs.io/en/latest/src/tutorial/profiling_tutorial.html#enabling-coverage-analysis + +* `coverage-jinja-plugin`__ is an incomplete Jinja2 plugin. + + __ https://github.com/MrSenko/coverage-jinja-plugin + +* `coverage-sh`__ measures code coverage of shell (sh or bash) scripts executed + from Python with subprocess. + + __ https://github.com/lackhove/coverage-sh + +* `hy-coverage`__ supports the Hy language. + + __ https://github.com/timmartin/hy-coverage + +* `coverage-mako-plugin`__ measures coverage in Mako templates. + Doesn't work yet, probably needs some changes in Mako itself. + + __ https://bitbucket-archive.softwareheritage.org/projects/ne/ned/coverage-mako-plugin.html + + +Reporting helpers +----------------- + +Helpers for seeing the results. + +* `python-coverage-comment-action`__ can publish a delta coverage report as a + pull request comment, create a coverage badge, or a dashboard to display in + your readme. + + __ https://github.com/py-cov-action/python-coverage-comment-action + +* `diff-cover`__ reports on the coverage of lines changed in a pull request. + + __ https://pypi.org/project/diff-cover/ + +* `cuvner`__ offers alternate visualizations of coverage data, including ones + for use in terminals. + + __ https://meejah.ca/projects/cuvner + +* `emacs-python-coverage`__ is an experimental Emacs package to report code + coverage output produced by Python's coverage package directly inside Emacs + buffers. + + __ https://github.com/wbolster/emacs-python-coverage + +* `python-genbadge`__ provides a set of command line utilities to generate + badges for tools that do not provide one, including coverage badges. + + __ https://smarie.github.io/python-genbadge/ + + +Other articles +-------------- + +Writings about ways to enhance your use of coverage.py. + +* `How to Ditch Codecov for Python Projects`__: using GitHub Actions to manage + coverage across versions and report on results. + + __ https://hynek.me/articles/ditch-codecov-python/ + +* `Making a coverage badge`__: using GitHub Actions to produce a colored badge. + + __ https://nedbatchelder.com/blog/202209/making_a_coverage_badge.html + +* `Coverage goals`__: a sidecar tool for reporting on per-file coverage goals. + + __ https://nedbatchelder.com/blog/202111/coverage_goals.html diff --git a/doc/plugins.rst b/doc/plugins.rst index 0bf3af935..7be4e4b6b 100644 --- a/doc/plugins.rst +++ b/doc/plugins.rst @@ -25,6 +25,8 @@ implementing coverage measurement for non-Python files. Information about using plug-ins is on this page. To write a plug-in, see :ref:`api_plugin`. +See :ref:`other` for available plug-ins. + .. versionadded:: 4.0 @@ -133,27 +135,3 @@ a coverage.py plug-in called ``something.plugin``. like "Plugin file tracers (something.plugin) aren't supported with PyTracer," then you don't have the :ref:`C extension ` installed. The C extension is needed for certain plug-ins. - - -Available plug-ins ------------------- - -Some coverage.py plug-ins you might find useful: - -* `Django template coverage.py plug-in`__: for measuring coverage in Django - templates. - - .. __: https://pypi.org/project/django_coverage_plugin/ - -* `Conditional coverage plug-in`__: for measuring coverage based - on any rules you define! - Can exclude different lines of code that are only executed - on different platforms, python versions, - and with different dependencies installed. - - .. __: https://github.com/wemake-services/coverage-conditional-plugin - -* `Mako template coverage plug-in`__: for measuring coverage in Mako templates. - Doesn't work yet, probably needs some changes in Mako itself. - - .. __: https://bitbucket-archive.softwareheritage.org/projects/ne/ned/coverage-mako-plugin.html diff --git a/doc/sample_html/d_7b071bdc2a35fa80___init___py.html b/doc/sample_html/d_7b071bdc2a35fa80___init___py.html index f6a0e5eef..6457bf694 100644 --- a/doc/sample_html/d_7b071bdc2a35fa80___init___py.html +++ b/doc/sample_html/d_7b071bdc2a35fa80___init___py.html @@ -66,8 +66,8 @@

^ index     » next       - coverage.py v7.4.1, - created at 2024-01-26 09:16 -0500 + coverage.py v7.4.2, + created at 2024-02-20 12:43 -0500