Fix: in some cases, even with [run] relative_files=True, a data file could be created with absolute path names. When combined with other relative data files, it was random whether the absolute file names would be made relative or not. If they weren't, then a file would be listed twice in reports, as detailed in issue 1752. This is now fixed: absolute file names are always made relative when combining. Thanks to Bruno Rodrigues dos Santos for support.
Fix: the last case of a match/case statement had an incorrect message if the branch was missed. It said the pattern never matched, when actually the branch is missed if the last case always matched.
Fix: clicking a line number in the HTML report now positions more accurately.
Fix: the report:format setting was defined as a boolean, but should be a string. Thanks, Tanaydin Sirin. It is also now documented on the configuration page <config_report_format>.
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.
In Python 3.12 and above, you can try an experimental core based on the new sys.monitoring <python:sys.monitoring> module by defining a COVERAGE_CORE=sysmon environment variable. This should be faster for line coverage, but not for branch coverage, and plugins and dynamic contexts are not yet supported with it. I am very interested to hear how it works (or doesn't!) for you.
Fix: the change for multi-line signature exclusions in 7.3.3 broke other forms of nested clauses being excluded properly. This is now fixed, closing issue 1713.
Fix: in the HTML report, selecting code for copying won't select the line numbers also. Thanks, Robert Harris.
Fix: XML reports could fail with a TypeError if files had numeric components that were duplicates except for leading zeroes, like file1.py and file001.py. Fixes issue 1709.
Fix: in some cases, even with [run] relative_files=True, a data file
could be created with absolute path names. When combined with other relative
data files, it was random whether the absolute file names would be made
relative or not. If they weren't, then a file would be listed twice in
reports, as detailed in issue 1752_. This is now fixed: absolute file
names are always made relative when combining. Thanks to Bruno Rodrigues dos
Santos for support.
Fix: the last case of a match/case statement had an incorrect message if the
branch was missed. It said the pattern never matched, when actually the
branch is missed if the last case always matched.
Fix: clicking a line number in the HTML report now positions more accurately.
Fix: the report:format setting was defined as a boolean, but should be a
string. Thanks, Tanaydin Sirin <pull 1754_>_. It is also now documented
on the :ref:configuration page <config_report_format>.
Fix: setting COVERAGE_CORE=sysmon no longer errors on 3.11 and lower,
thanks Hugo van Kemenade <pull 1747_>_. It now issues a warning that
sys.monitoring is not available and falls back to the default core instead.
This release is not a usual bug fix release -- it contains features and improvements, being a follow up
to 8.1.0, which has been yanked from PyPI.
:::
Features
#11475: Added the new consider_namespace_packages{.interpreted-text role="confval"} configuration option, defaulting to False.
If set to True, pytest will attempt to identify modules that are part of namespace packages when importing modules.
#11653: Added the new verbosity_test_cases{.interpreted-text role="confval"} configuration option for fine-grained control of test execution verbosity.
See Fine-grained verbosity <pytest.fine_grained_verbosity>{.interpreted-text role="ref"} for more details.
Improvements
#10865: pytest.warns{.interpreted-text role="func"} now validates that warnings.warn{.interpreted-text role="func"} was called with a [str]{.title-ref} or a [Warning]{.title-ref}.
Currently in Python it is possible to use other types, however this causes an exception when warnings.filterwarnings{.interpreted-text role="func"} is used to filter those warnings (see [CPython #103577](python/cpython#103577) for a discussion).
While this can be considered a bug in CPython, we decided to put guards in pytest as the error message produced without this check in place is confusing.
#11311: When using --override-ini for paths in invocations without a configuration file defined, the current working directory is used
as the relative directory.
Previoulsy this would raise an AssertionError{.interpreted-text role="class"}.
#11475: --import-mode=importlib <import-mode-importlib>{.interpreted-text role="ref"} now tries to import modules using the standard import mechanism (but still without changing :pysys.path{.interpreted-text role="data"}), falling back to importing modules directly only if that fails.
This means that installed packages will be imported under their canonical name if possible first, for example app.core.models, instead of having the module name always be derived from their path (for example .env310.lib.site_packages.app.core.models).
#11801: Added the iter_parents() <_pytest.nodes.Node.iter_parents>{.interpreted-text role="func"} helper method on nodes.
It is similar to listchain <_pytest.nodes.Node.listchain>{.interpreted-text role="func"}, but goes from bottom to top, and returns an iterator, not a list.
#11850: Added support for sys.last_exc{.interpreted-text role="data"} for post-mortem debugging on Python>=3.12.
#11962: In case no other suitable candidates for configuration file are found, a pyproject.toml (even without a [tool.pytest.ini_options] table) will be considered as the configuration file and define the rootdir.
#11978: Add --log-file-mode option to the logging plugin, enabling appending to log-files. This option accepts either "w" or "a" and defaults to "w".
Previously, the mode was hard-coded to be "w" which truncates the file before logging.
Removed support for xdist rsync (now deprecated).
Contributed by Matthias Reichenbach in [#623](https://github.com/pytest-dev/pytest-cov/issues/623) <https://github.com/pytest-dev/pytest-cov/pull/623>_.
Switched docs theme to Furo.
Various legacy Python cleanup and CI improvements.
Contributed by Christian Clauss and Hugo van Kemenade in
[#630](https://github.com/pytest-dev/pytest-cov/issues/630) <https://github.com/pytest-dev/pytest-cov/pull/630>,
[#631](https://github.com/pytest-dev/pytest-cov/issues/631) <https://github.com/pytest-dev/pytest-cov/pull/631>,
[#632](https://github.com/pytest-dev/pytest-cov/issues/632) <https://github.com/pytest-dev/pytest-cov/pull/632>_ and
[#633](https://github.com/pytest-dev/pytest-cov/issues/633) <https://github.com/pytest-dev/pytest-cov/pull/633>_.
Added a pyproject.toml example in the docs.
Contributed by Dawn James in [#626](https://github.com/pytest-dev/pytest-cov/issues/626) <https://github.com/pytest-dev/pytest-cov/pull/626>_.
Modernized project's pre-commit hooks to use ruff. Initial POC contributed by
Christian Clauss in [#584](https://github.com/pytest-dev/pytest-cov/issues/584) <https://github.com/pytest-dev/pytest-cov/pull/584>_.
We’ve just uploaded mypy 1.9 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:
python3 -m pip install -U mypy
You can read the full documentation for this release on Read the Docs.
Breaking Changes
Because the version of typeshed we use in mypy 1.9 doesn't support 3.7, neither does mypy 1.9. (Jared Hance, PR 16883)
We are planning to enable
local partial types (enabled via the
--local-partial-types flag) later this year by default. This change
was announced years ago, but now it's finally happening. This is a
major backward-incompatible change, so we'll probably include it as
part of the upcoming mypy 2.0 release. This makes daemon and
non-daemon mypy runs have the same behavior by default.
Local partial types can also be enabled in the mypy config file:
local_partial_types = True
We are looking at providing a tool to make it easier to migrate
projects to use --local-partial-types, but it's not yet clear whether
this is practical. The migration usually involves adding some
explicit type annotations to module-level and class-level variables.
Basic Support for Type Parameter Defaults (PEP 696)
This release contains new experimental support for type parameter
defaults (PEP 696). Please try it
out! This feature was contributed by Marc Mueller.
Since this feature will be officially introduced in the next Python
feature release (3.13), you will need to import TypeVar, ParamSpec
or TypeVarTuple from typing_extensions to use defaults for now.
This example adapted from the PEP defines a default for BotT:
from typing import Generic
from typing_extensions import TypeVar
[orm] [usecase] Added support for the PEP 695TypeAliasType construct as well as the
python 3.12 native type keyword to work with ORM Annotated Declarative
form when using these constructs to link to a PEP 593Annotated
container, allowing the resolution of the Annotated to proceed when
these constructs are used in a _orm.Mapped typing container.
[orm] [bug] Fixed Declarative issue where typing a relationship using
_orm.Relationship rather than _orm.Mapped would
inadvertently pull in the "dynamic" relationship loader strategy for that
attribute.
[orm] [bug] Fixed issue in ORM annotated declarative where using
_orm.mapped_column() with an _orm.mapped_column.index
or _orm.mapped_column.unique setting of False would be
overridden by an incoming Annotated element that featured that
parameter set to True, even though the immediate
_orm.mapped_column() element is more specific and should take
precedence. The logic to reconcile the booleans has been enhanced to
accommodate a local value of False as still taking precedence over an
incoming True value from the annotated element.
[orm] [bug] [regression] Fixed regression from version 2.0.28 caused by the fix for #11085
where the newer method of adjusting post-cache bound parameter values would
interefere with the implementation for the _orm.subqueryload() loader
option, which has some more legacy patterns in use internally, when
the additional loader criteria feature were used with this loader option.
[engine] [bug] Fixed issue in engine_insertmanyvalues feature where using a primary
key column with an "inline execute" default generator such as an explicit
Sequence with an explcit schema name, while at the same time
using the
_engine.Connection.execution_options.schema_translate_map
- Add provision arguments to ToxParser to fix crash when provisioning new tox environment without list-dependencies by :user:`seyidaniels` (:issue:`3190`)
Improved Documentation - 4.14.2
Removed unused line from the 'fresh_subprocess' documentation. (:issue:3241)
v4.14.1 (2024-03-06)
Bugfixes - 4.14.1
- Fix crash with fresh subprocess, if the build backend is setuptools automatically enable fresh subprocesses for
build backend calls - by :user:`gaborbernat`. (:issue:`3235`)
v4.14.0 (2024-03-05)
Features - 4.14.0
Support enabling fresh subprocess for packaging build backends via :ref:fresh_subprocess - by :user:gaborbernat. (:issue:3227)
Allow plugins attaching additional information to --version via tox_append_version_info method in the plugin
module - by :user:gaborbernat. (:issue:3234)
v4.13.0 (2024-02-16)
Features - 4.13.0
- Extract virtual environment packaging code to its own base class not tied to ``virtualenv`` - by :user:`gaborbernat`. (:issue:`3221`)
Improved Documentation - 4.13.0
Documented usage of pytest with tox run-parallel - by :user:faph. (:issue:3187)
Configuration: state in config directive sections their ini file sections - by :user:0cjs. (:issue:3194)
Development: summarize important points experienced developers need to know - by :user:0cjs. (:issue:3197)
v4.12.1 (2024-01-16)
Bugfixes - 4.12.1
- Fixed bug where running with --installpkg and multiple envs could not clean up between tests (:issue:`3165`)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Bumps the python-requirements group in /requirements with 9 updates:
3.0.1
4.0.0
7.3.1
7.4.4
7.4.4
8.1.1
4.1.0
5.0.0
1.8.0
1.9.0
7.3.0
7.4.1
3.6.0
3.7.0
2.0.25
2.0.29
4.12.0
4.14.2
Updates
sphinx-issues
from 3.0.1 to 4.0.0Commits
50128ce
Bump version and update changelog0239bda
Default to linking to GH sponsors URL for the :user: role (#131)9d176de
Dev Chores (#130)08c376f
Run pre-commit autoupdateUpdates
coverage[toml]
from 7.3.1 to 7.4.4Release notes
Sourced from coverage[toml]'s releases.
... (truncated)
Changelog
Sourced from coverage[toml]'s changelog.
... (truncated)
Commits
bc5e2d7
docs: sample HTML for 7.4.49b0008b
docs: prep for 7.4.4a536161
docs: thanks, Bruno Rodrigues dos Santose06e4f9
chore: make doc_upgradef30818e
chore: make upgrade1b19799
fix: ensure absolute paths are relative when combined #17521ef020d
build: more cheats for convenient URLs3d57a07
docs: document the report:format setting8e30221
fix: correct the type of report:format in config.py (#1754)6289be8
refactor: use dataclasses, no namedtupleUpdates
pytest
from 7.4.4 to 8.1.1Release notes
Sourced from pytest's releases.
... (truncated)
Commits
81653ee
Adjust changelog manually for 8.1.1e60b4b9
Prepare release version 8.1.115fbe57
[8.1.x] Revert legacy path removals (#12093)86c3aab
[8.1.x] Do not import duplicated modules with --importmode=importlib (#12077)5b82b0c
[8.1.x] Yank version 8.1.0 (#12076)0a53681
Merge pull request #12054 from pytest-dev/release-8.1.0b9a167f
Prepare release version 8.1.000043f7
Merge pull request #12038 from bluetech/fixtures-rm-arg2indexf4e1025
Merge pull request #12048 from bluetech/fixture-teardown-excgroup43492f5
Merge pull request #12051 from jakkdl/test_debugging_pythonbreakpointUpdates
pytest-cov
from 4.1.0 to 5.0.0Changelog
Sourced from pytest-cov's changelog.
Commits
5295ce0
Bump version: 4.1.0 → 5.0.01181b06
Update changelog.9757222
Fix a minor grammar error (#636)9f5cd81
Cleanup releasing instructions. Closes #616.93b5047
Add test for pyproject.toml loading without explicit --cov-config. Ref #508.ff50860
docs: add config instructions for pyproject.toml.4a5a4b5
Keep GitHub Actions up to date with GitHub's Dependabot1d7f559
Fix or remove URLs that are causing docs tests to fail6a5af8e
Update changelog.d9fe8df
Switch to furo. Closes #618.Updates
mypy
from 1.8.0 to 1.9.0Changelog
Sourced from mypy's changelog.
... (truncated)
Commits
5ff46f8
Remove +dev.155909a
[Release 1.9] Unsupport targetting 3.7. (#16883) (#16900)6615cab
[Release 1.9] Stubtest: ignore a new protocol dunder (#16895) (#16899)b956e6a
stubtest: Private parameters can be omitted (#16507)ede0b20
Bump ruff to 0.2.0 (#16870)7bdd61f
stubgen: Fix crash on star unpack of TypeVarTuple (#16869)8c2ef9d
Update hashes in sync-typeshed.py following recent typeshed sync0dd4b6f
Revert use ofParamSpec
forfunctools.wraps
dd12a2d
Revert typeshed ctypes changed132999
Revert sum literal integer change (#13961)Updates
pip-tools
from 7.3.0 to 7.4.1Release notes
Sourced from pip-tools's releases.
Changelog
Sourced from pip-tools's changelog.
Commits
60ebdf5
Merge pull request #2067 from atugushev/release-7.4.1c671ea0
Strip emoji from changelog linef825385
Release 7.4.11197151
Merge pull request #2038 from honnix/patch-11f00154
Merge pull request #2061 from chrysle/pip-compile-docs-changedird99493c
Skip constraint path check35b06db
Change directory inpip-compile-docs
tox sessiona8beb7a
Merge pull request #1981 from dragly/fix-all-extras7caff1a
Merge branch 'main' into fix-all-extrase0afb79
Merge pull request #2057 from jazzband/pre-commit-ci-update-configUpdates
pre-commit
from 3.6.0 to 3.7.0Release notes
Sourced from pre-commit's releases.
Changelog
Sourced from pre-commit's changelog.
Commits
7b4667e
v3.7.0d46c8fc
Merge pull request #3168 from pre-commit/fix-fail-fastfc62215
fix per-hook fail_fast to not fail on previous failures716da1e
Merge pull request #3155 from pre-commit/pre-commit-ci-update-config0939c11
[pre-commit.ci] pre-commit autoupdate3bdf9fb
Merge pull request #3150 from pre-commit/pre-commit-ci-update-config75b3e52
[pre-commit.ci] pre-commit autoupdate5e11c26
Merge pull request #3122 from glehmann/docker-ttye580096
give docker a tty output when expecting color7b868c3
Merge pull request #3132 from pre-commit/pre-commit-ci-update-configUpdates
sqlalchemy
from 2.0.25 to 2.0.29Release notes
Sourced from sqlalchemy's releases.
... (truncated)
Commits
Updates
tox
from 4.12.0 to 4.14.2Release notes
Sourced from tox's releases.
... (truncated)
Changelog
Sourced from tox's changelog.
Commits
ab9b504
release 4.14.22f6667f
Add Provision Arguments to ToxParser (#3246)380d2e2
[pre-commit.ci] pre-commit autoupdate (#3244)7514e01
Add missing space20732d6
[pre-commit.ci] pre-commit autoupdate (#3242)543b718
Bump pypa/gh-action-pypi-publish from 1.8.12 to 1.8.14 (#3239)1fb9356
Removed unneeded line (#3241)acbef2d
release 4.14.1969fbec
Fix fresh subprocesses and allow duplicate register config calls for the core...d37cb08
release 4.14.0Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show