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>.
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
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.
The strict_exception_groups parameter now defaults to True in trio.run and trio.lowlevel.start_guest_run. trio.open_nursery still defaults to the same value as was specified in trio.run/trio.lowlevel.start_guest_run, but if you didn't specify it there then all subsequent calls to trio.open_nursery will change.
This is unfortunately very tricky to change with a deprecation period, as raising a DeprecationWarning whenever strict_exception_groups is not specified would raise a lot of unnecessary warnings.
Notable side effects of changing code to run with strict_exception_groups==True
If an iterator raises StopAsyncIteration or StopIteration inside a nursery, then python will not recognize wrapped instances of those for stopping iteration.
trio.run_process is now documented that it can raise an ExceptionGroup. It previously could do this in very rare circumstances, but with strict_exception_groups set to True it will now do so whenever exceptions occur in deliver_cancel or with problems communicating with the subprocess.
Errors in opening the process is now done outside the internal nursery, so if code previously ran with strict_exception_groups=True there are cases now where an ExceptionGroup is no longer added.
trio.TrioInternalError.__cause__ might be wrapped in one or more ExceptionGroups <ExceptionGroup> (python-trio/trio#2786)
Features
Add trio.testing.wait_all_threads_completed, which blocks until no threads are running tasks. This is intended to be used in the same way as trio.testing.wait_all_tasks_blocked. (python-trio/trio#2937)
Path is now a subclass of pathlib.PurePath, allowing it to interoperate with other standard
pathlib types.
Instantiating Path now returns a concrete platform-specific subclass, one of PosixPath or
WindowsPath, matching the behavior of pathlib.Path. (python-trio/trio#2959)
Bugfixes
The pthread functions are now correctly found on systems using vanilla versions of musl libc. (python-trio/trio#2939)
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-packages group with 9 updates:
7.4.3
7.4.4
7.0.1
7.1.0
1.8.0
1.9.0
0.1.15
0.3.5
6.0.12.12
6.0.12.20240311
8.0.2
8.1.1
0.24.0
0.25.0
9.5.12
9.5.16
1.1.1
1.2.1
Updates
coverage
from 7.4.3 to 7.4.4Changelog
Sourced from coverage's changelog.
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
importlib-metadata
from 7.0.1 to 7.1.0Changelog
Sourced from importlib-metadata's changelog.
Commits
f5d6b5f
Finalize2ef3b5f
Merge commit '1711b2c198'1711b2c
Need to include names from test.support for py312 compat.47b14ac
Make MetadataPathFinder.find_distributions a classmethod for consistency with...adc4b12
Ensure tests do not leak references in sys.modules.07d894d
Copy backport of isolated_modules from importlib_resources.e30a16d
Consolidated test support logic in jaraco.test.cpython.41ca039
Moved compatibility tests to the compat package, as they're not included in C...5950f43
Remove legacy logic for Python 3.7.ffa719b
Moved compatibility module to compat package.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
ruff
from 0.1.15 to 0.3.5Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
200ebee
Bump version to v0.3.5 (#10717)23e8279
chore(deps): update npm development dependencies (#10716)221b323
chore(deps): update strum to 0.26.0 (#10715)a0e1544
chore(deps): update rust crate pep440_rs to 0.5.0 (#10703)2740fab
Renovate: group allstrum
dependencies together (#10714)7042b9b
fix(deps): update rust crate similar to v2.5.0 (#10711)4047d45
chore(deps): update rust crate insta to v1.38.0 (#10701)20d69ea
chore(deps): update npm development dependencies (#10697)d021cac
chore(deps): update rust crate tracing-tree to 0.3.0 (#10709)46369d4
chore(deps): update rust crate uuid to v1.8.0 (#10710)Updates
types-pyyaml
from 6.0.12.12 to 6.0.12.20240311Commits
Updates
pytest
from 8.0.2 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
trio
from 0.24.0 to 0.25.0Release notes
Sourced from trio's releases.
Commits
0b8d3e2
Bump version to 0.25.0e3fd384
[pre-commit.ci] pre-commit autoupdate ruff-pre-commit: v0.3.0 → v0.3.2f890f8f
Path
refactor (#2959)379d99b
Add pre-commit autoupdate to autodeps (#2970)b541b8b
bump pyright, introducing warnings for tons of missing docstrings (#2910)9dcf733
fix: updated the google docstring url (#2967)48f8293
Bump dependencies from commit 13ee1b (#2966)13ee1b0
Remove incorrectstr
possibility from HostnameResolver.getaddrinfo (#2964)accaae4
use the regular readme for the long description (#2866)78c55aa
[pre-commit.ci] pre-commit autoupdate (#2962)Updates
mkdocs-material
from 9.5.12 to 9.5.16Release notes
Sourced from mkdocs-material's releases.
Changelog
Sourced from mkdocs-material's changelog.
... (truncated)
Commits
8956524
Updated Insiders changelog0db4e66
Updated changelog29cf44b
Improved resilience of privacy plugin6c9ba87
Prepare 9.5.16 releasef2bfab9
Updated dependencies9e40207
Updated dependenciesa2cb35d
Improved error handling on social plugin (#6818)abfac1a
Switched to Babel'sformat_datetime
to allow for time in formatted dates (#...01b2dd1
Updated Russian translationsad72336
Fixed social plugin Google Fonts integrationUpdates
build
from 1.1.1 to 1.2.1Release notes
Sourced from build's releases.
Changelog
Sourced from build's changelog.
Commits
1e67c06
chore: bump version number to 1.2.1e5072e3
fix: support min width not detectable (#761)d5fb6fb
chore: prepare for 1.2.0 (#758)1ae6eb1
pre-commit: bump repositories (#757)a1f005d
pre-commit: bump repositories (#756)5076a56
uv: support double verbosity flag5662669
chore: bump mypy24c513d
chore: reformat using Black 2024 style08cdb76
ruff: bump version and update config97ea57b
perf: avoid compiling unused bytecode (#752)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