Changelog
### 8.0.1
```
=========================
Bug Fixes
---------
- `11875 <https://github.com/pytest-dev/pytest/issues/11875>`_: Correctly handle errors from :func:`getpass.getuser` in Python 3.13.
- `11879 <https://github.com/pytest-dev/pytest/issues/11879>`_: Fix an edge case where ``ExceptionInfo._stringify_exception`` could crash :func:`pytest.raises`.
- `11906 <https://github.com/pytest-dev/pytest/issues/11906>`_: Fix regression with :func:`pytest.warns` using custom warning subclasses which have more than one parameter in their `__init__`.
- `11907 <https://github.com/pytest-dev/pytest/issues/11907>`_: Fix a regression in pytest 8.0.0 whereby calling :func:`pytest.skip` and similar control-flow exceptions within a :func:`pytest.warns()` block would get suppressed instead of propagating.
- `11929 <https://github.com/pytest-dev/pytest/issues/11929>`_: Fix a regression in pytest 8.0.0 whereby autouse fixtures defined in a module get ignored by the doctests in the module.
- `11937 <https://github.com/pytest-dev/pytest/issues/11937>`_: Fix a regression in pytest 8.0.0 whereby items would be collected in reverse order in some circumstances.
```
### 8.0.0
```
=========================
Bug Fixes
---------
- `11842 <https://github.com/pytest-dev/pytest/issues/11842>`_: Properly escape the ``reason`` of a :ref:`skip <pytest.mark.skip ref>` mark when writing JUnit XML files.
- `11861 <https://github.com/pytest-dev/pytest/issues/11861>`_: Avoid microsecond exceeds ``1_000_000`` when using ``log-date-format`` with ``%f`` specifier, which might cause the test suite to crash.
```
### 8.0.0rc2
```
============================
Improvements
------------
- `11233 <https://github.com/pytest-dev/pytest/issues/11233>`_: Improvements to ``-r`` for xfailures and xpasses:
* Report tracebacks for xfailures when ``-rx`` is set.
* Report captured output for xpasses when ``-rX`` is set.
* For xpasses, add ``-`` in summary between test name and reason, to match how xfail is displayed.
- `11825 <https://github.com/pytest-dev/pytest/issues/11825>`_: The :hook:`pytest_plugin_registered` hook has a new ``plugin_name`` parameter containing the name by which ``plugin`` is registered.
Bug Fixes
---------
- `11706 <https://github.com/pytest-dev/pytest/issues/11706>`_: Fix reporting of teardown errors in higher-scoped fixtures when using `--maxfail` or `--stepwise`.
- `11758 <https://github.com/pytest-dev/pytest/issues/11758>`_: Fixed ``IndexError: string index out of range`` crash in ``if highlighted[-1] == "\n" and source[-1] != "\n"``.
This bug was introduced in pytest 8.0.0rc1.
- `9765 <https://github.com/pytest-dev/pytest/issues/9765>`_, `#11816 <https://github.com/pytest-dev/pytest/issues/11816>`_: Fixed a frustrating bug that afflicted some users with the only error being ``assert mod not in mods``. The issue was caused by the fact that ``str(Path(mod))`` and ``mod.__file__`` don't necessarily produce the same string, and was being erroneously used interchangably in some places in the code.
This fix also broke the internal API of ``PytestPluginManager.consider_conftest`` by introducing a new parameter -- we mention this in case it is being used by external code, even if marked as *private*.
```
### 8.0.0rc1
```
============================
Breaking Changes
----------------
Old Deprecations Are Now Errors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `7363 <https://github.com/pytest-dev/pytest/issues/7363>`_: **PytestRemovedIn8Warning deprecation warnings are now errors by default.**
Following our plan to remove deprecated features with as little disruption as
possible, all warnings of type ``PytestRemovedIn8Warning`` now generate errors
instead of warning messages by default.
**The affected features will be effectively removed in pytest 8.1**, so please consult the
:ref:`deprecations` section in the docs for directions on how to update existing code.
In the pytest ``8.0.X`` series, it is possible to change the errors back into warnings as a
stopgap measure by adding this to your ``pytest.ini`` file:
.. code-block:: ini
[pytest]
filterwarnings =
ignore::pytest.PytestRemovedIn8Warning
But this will stop working when pytest ``8.1`` is released.
**If you have concerns** about the removal of a specific feature, please add a
comment to :issue:`7363`.
Version Compatibility
^^^^^^^^^^^^^^^^^^^^^
- `11151 <https://github.com/pytest-dev/pytest/issues/11151>`_: Dropped support for Python 3.7, which `reached end-of-life on 2023-06-27 <https://devguide.python.org/versions/>`__.
- ``pluggy>=1.3.0`` is now required.
Collection Changes
^^^^^^^^^^^^^^^^^^
In this version we've made several breaking changes to pytest's collection phase,
particularly around how filesystem directories and Python packages are collected,
fixing deficiencies and allowing for cleanups and improvements to pytest's internals.
A deprecation period for these changes was not possible.
- `7777 <https://github.com/pytest-dev/pytest/issues/7777>`_: Files and directories are now collected in alphabetical order jointly, unless changed by a plugin.
Previously, files were collected before directories.
See below for an example.
- `8976 <https://github.com/pytest-dev/pytest/issues/8976>`_: Running `pytest pkg/__init__.py` now collects the `pkg/__init__.py` file (module) only.
Previously, it collected the entire `pkg` package, including other test files in the directory, but excluding tests in the `__init__.py` file itself
(unless :confval:`python_files` was changed to allow `__init__.py` file).
To collect the entire package, specify just the directory: `pytest pkg`.
- `11137 <https://github.com/pytest-dev/pytest/issues/11137>`_: :class:`pytest.Package` is no longer a :class:`pytest.Module` or :class:`pytest.File`.
The ``Package`` collector node designates a Python package, that is, a directory with an `__init__.py` file.
Previously ``Package`` was a subtype of ``pytest.Module`` (which represents a single Python module),
the module being the `__init__.py` file.
This has been deemed a design mistake (see :issue:`11137` and :issue:`7777` for details).
The ``path`` property of ``Package`` nodes now points to the package directory instead of the ``__init__.py`` file.
Note that a ``Module`` node for ``__init__.py`` (which is not a ``Package``) may still exist,
if it is picked up during collection (e.g. if you configured :confval:`python_files` to include ``__init__.py`` files).
- `7777 <https://github.com/pytest-dev/pytest/issues/7777>`_: Added a new :class:`pytest.Directory` base collection node, which all collector nodes for filesystem directories are expected to subclass.
This is analogous to the existing :class:`pytest.File` for file nodes.
Changed :class:`pytest.Package` to be a subclass of :class:`pytest.Directory`.
A ``Package`` represents a filesystem directory which is a Python package,
i.e. contains an ``__init__.py`` file.
:class:`pytest.Package` now only collects files in its own directory; previously it collected recursively.
Sub-directories are collected as their own collector nodes, which then collect themselves, thus creating a collection tree which mirrors the filesystem hierarchy.
Added a new :class:`pytest.Dir` concrete collection node, a subclass of :class:`pytest.Directory`.
This node represents a filesystem directory, which is not a :class:`pytest.Package`,
that is, does not contain an ``__init__.py`` file.
Similarly to ``Package``, it only collects the files in its own directory.
:class:`pytest.Session` now only collects the initial arguments, without recursing into directories.
This work is now done by the :func:`recursive expansion process <pytest.Collector.collect>` of directory collector nodes.
:attr:`session.name <pytest.Session.name>` is now ``""``; previously it was the rootdir directory name.
This matches :attr:`session.nodeid <_pytest.nodes.Node.nodeid>` which has always been `""`.
The collection tree now contains directories/packages up to the :ref:`rootdir <rootdir>`,
for initial arguments that are found within the rootdir.
For files outside the rootdir, only the immediate directory/package is collected --
note however that collecting from outside the rootdir is discouraged.
As an example, given the following filesystem tree::
myroot/
pytest.ini
top/
├── aaa
│ └── test_aaa.py
├── test_a.py
├── test_b
│ ├── __init__.py
│ └── test_b.py
├── test_c.py
└── zzz
├── __init__.py
└── test_zzz.py
the collection tree, as shown by `pytest --collect-only top/` but with the otherwise-hidden :class:`~pytest.Session` node added for clarity,
is now the following::
<Session>
<Dir myroot>
<Dir top>
<Dir aaa>
<Module test_aaa.py>
<Function test_it>
<Module test_a.py>
<Function test_it>
<Package test_b>
<Module test_b.py>
<Function test_it>
<Module test_c.py>
<Function test_it>
<Package zzz>
<Module test_zzz.py>
<Function test_it>
Previously, it was::
<Session>
<Module top/test_a.py>
<Function test_it>
<Module top/test_c.py>
<Function test_it>
<Module top/aaa/test_aaa.py>
<Function test_it>
<Package test_b>
<Module test_b.py>
<Function test_it>
<Package zzz>
<Module test_zzz.py>
<Function test_it>
Code/plugins which rely on a specific shape of the collection tree might need to update.
- `11676 <https://github.com/pytest-dev/pytest/issues/11676>`_: The classes :class:`~_pytest.nodes.Node`, :class:`~pytest.Collector`, :class:`~pytest.Item`, :class:`~pytest.File`, :class:`~_pytest.nodes.FSCollector` are now marked abstract (see :mod:`abc`).
We do not expect this change to affect users and plugin authors, it will only cause errors when the code is already wrong or problematic.
Other breaking changes
^^^^^^^^^^^^^^^^^^^^^^
These are breaking changes where deprecation was not possible.
- `11282 <https://github.com/pytest-dev/pytest/issues/11282>`_: Sanitized the handling of the ``default`` parameter when defining configuration options.
Previously if ``default`` was not supplied for :meth:`parser.addini <pytest.Parser.addini>` and the configuration option value was not defined in a test session, then calls to :func:`config.getini <pytest.Config.getini>` returned an *empty list* or an *empty string* depending on whether ``type`` was supplied or not respectively, which is clearly incorrect. Also, ``None`` was not honored even if ``default=None`` was used explicitly while defining the option.
Now the behavior of :meth:`parser.addini <pytest.Parser.addini>` is as follows:
* If ``default`` is NOT passed but ``type`` is provided, then a type-specific default will be returned. For example ``type=bool`` will return ``False``, ``type=str`` will return ``""``, etc.
* If ``default=None`` is passed and the option is not defined in a test session, then ``None`` will be returned, regardless of the ``type``.
* If neither ``default`` nor ``type`` are provided, assume ``type=str`` and return ``""`` as default (this is as per previous behavior).
The team decided to not introduce a deprecation period for this change, as doing so would be complicated both in terms of communicating this to the community as well as implementing it, and also because the team believes this change should not break existing plugins except in rare cases.
- `11667 <https://github.com/pytest-dev/pytest/issues/11667>`_: pytest's ``setup.py`` file is removed.
If you relied on this file, e.g. to install pytest using ``setup.py install``,
please see `Why you shouldn't invoke setup.py directly <https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html#summary>`_ for alternatives.
- `9288 <https://github.com/pytest-dev/pytest/issues/9288>`_: :func:`~pytest.warns` now re-emits unmatched warnings when the context
closes -- previously it would consume all warnings, hiding those that were not
matched by the function.
While this is a new feature, we announce it as a breaking change
because many test suites are configured to error-out on warnings, and will
therefore fail on the newly-re-emitted warnings.
- The internal ``FixtureManager.getfixtureclosure`` method has changed. Plugins which use this method or
which subclass ``FixtureManager`` and overwrite that method will need to adapt to the change.
Deprecations
------------
- `10465 <https://github.com/pytest-dev/pytest/issues/10465>`_: Test functions returning a value other than ``None`` will now issue a :class:`pytest.PytestWarning` instead of ``pytest.PytestRemovedIn8Warning``, meaning this will stay a warning instead of becoming an error in the future.
- `3664 <https://github.com/pytest-dev/pytest/issues/3664>`_: Applying a mark to a fixture function now issues a warning: marks in fixtures never had any effect, but it is a common user error to apply a mark to a fixture (for example ``usefixtures``) and expect it to work.
This will become an error in pytest 9.0.
Features and Improvements
-------------------------
Improved Diffs
^^^^^^^^^^^^^^
These changes improve the diffs that pytest prints when an assertion fails.
Note that syntax highlighting requires the ``pygments`` package.
- `11520 <https://github.com/pytest-dev/pytest/issues/11520>`_: The very verbose (``-vv``) diff output is now colored as a diff instead of a big chunk of red.
Python code in error reports is now syntax-highlighted as Python.
The sections in the error reports are now better separated.
- `1531 <https://github.com/pytest-dev/pytest/issues/1531>`_: The very verbose diff (``-vv``) for every standard library container type is improved. The indentation is now consistent and the markers are on their own separate lines, which should reduce the diffs shown to users.
Previously, the standard Python pretty printer was used to generate the output, which puts opening and closing
markers on the same line as the first/last entry, in addition to not having consistent indentation.
- `10617 <https://github.com/pytest-dev/pytest/issues/10617>`_: Added more comprehensive set assertion rewrites for comparisons other than equality ``==``, with
the following operations now providing better failure messages: ``!=``, ``<=``, ``>=``, ``<``, and ``>``.
Separate Control For Assertion Verbosity
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `11387 <https://github.com/pytest-dev/pytest/issues/11387>`_: Added the new :confval:`verbosity_assertions` configuration option for fine-grained control of failed assertions verbosity.
If you've ever wished that pytest always show you full diffs, but without making everything else verbose, this is for you.
See :ref:`Fine-grained verbosity <pytest.fine_grained_verbosity>` for more details.
For plugin authors, :attr:`config.get_verbosity <pytest.Config.get_verbosity>` can be used to retrieve the verbosity level for a specific verbosity type.
Additional Support For Exception Groups and ``__notes__``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
These changes improve pytest's support for exception groups.
- `10441 <https://github.com/pytest-dev/pytest/issues/10441>`_: Added :func:`ExceptionInfo.group_contains() <pytest.ExceptionInfo.group_contains>`, an assertion helper that tests if an :class:`ExceptionGroup` contains a matching exception.
See :ref:`assert-matching-exception-groups` for an example.
- `11227 <https://github.com/pytest-dev/pytest/issues/11227>`_: Allow :func:`pytest.raises` ``match`` argument to match against `PEP-678 <https://peps.python.org/pep-0678/>` ``__notes__``.
Custom Directory collectors
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `7777 <https://github.com/pytest-dev/pytest/issues/7777>`_: Added a new hook :hook:`pytest_collect_directory`,
which is called by filesystem-traversing collector nodes,
such as :class:`pytest.Session`, :class:`pytest.Dir` and :class:`pytest.Package`,
to create a collector node for a sub-directory.
It is expected to return a subclass of :class:`pytest.Directory`.
This hook allows plugins to :ref:`customize the collection of directories <custom directory collectors>`.
"New-style" Hook Wrappers
^^^^^^^^^^^^^^^^^^^^^^^^^
- `11122 <https://github.com/pytest-dev/pytest/issues/11122>`_: pytest now uses "new-style" hook wrappers internally, available since pluggy 1.2.0.
See `pluggy's 1.2.0 changelog <https://pluggy.readthedocs.io/en/latest/changelog.html#pluggy-1-2-0-2023-06-21>`_ and the :ref:`updated docs <hookwrapper>` for details.
Plugins which want to use new-style wrappers can do so if they require ``pytest>=8``.
Other Improvements
^^^^^^^^^^^^^^^^^^
- `11216 <https://github.com/pytest-dev/pytest/issues/11216>`_: If a test is skipped from inside an :ref:`xunit setup fixture <classic xunit>`, the test summary now shows the test location instead of the fixture location.
- `11314 <https://github.com/pytest-dev/pytest/issues/11314>`_: Logging to a file using the ``--log-file`` option will use ``--log-level``, ``--log-format`` and ``--log-date-format`` as fallback
if ``--log-file-level``, ``--log-file-format`` and ``--log-file-date-format`` are not provided respectively.
- `11610 <https://github.com/pytest-dev/pytest/issues/11610>`_: Added the :func:`LogCaptureFixture.filtering() <pytest.LogCaptureFixture.filtering>` context manager which
adds a given :class:`logging.Filter` object to the :fixture:`caplog` fixture.
- `11447 <https://github.com/pytest-dev/pytest/issues/11447>`_: :func:`pytest.deprecated_call` now also considers warnings of type :class:`FutureWarning`.
- `11600 <https://github.com/pytest-dev/pytest/issues/11600>`_: Improved the documentation and type signature for :func:`pytest.mark.xfail <pytest.mark.xfail>`'s ``condition`` param to use ``False`` as the default value.
- `7469 <https://github.com/pytest-dev/pytest/issues/7469>`_: :class:`~pytest.FixtureDef` is now exported as ``pytest.FixtureDef`` for typing purposes.
- `11353 <https://github.com/pytest-dev/pytest/issues/11353>`_: Added typing to :class:`~pytest.PytestPluginManager`.
Bug Fixes
---------
- `10701 <https://github.com/pytest-dev/pytest/issues/10701>`_: :meth:`pytest.WarningsRecorder.pop` will return the most-closely-matched warning in the list,
rather than the first warning which is an instance of the requested type.
- `11255 <https://github.com/pytest-dev/pytest/issues/11255>`_: Fixed crash on `parametrize(..., scope="package")` without a package present.
- `11277 <https://github.com/pytest-dev/pytest/issues/11277>`_: Fixed a bug that when there are multiple fixtures for an indirect parameter,
the scope of the highest-scope fixture is picked for the parameter set, instead of that of the one with the narrowest scope.
- `11456 <https://github.com/pytest-dev/pytest/issues/11456>`_: Parametrized tests now *really do* ensure that the ids given to each input are unique - for
example, ``a, a, a0`` now results in ``a1, a2, a0`` instead of the previous (buggy) ``a0, a1, a0``.
This necessarily means changing nodeids where these were previously colliding, and for
readability adds an underscore when non-unique ids end in a number.
- `11563 <https://github.com/pytest-dev/pytest/issues/11563>`_: Fixed a crash when using an empty string for the same parametrized value more than once.
- `11712 <https://github.com/pytest-dev/pytest/issues/11712>`_: Fixed handling ``NO_COLOR`` and ``FORCE_COLOR`` to ignore an empty value.
- `9036 <https://github.com/pytest-dev/pytest/issues/9036>`_: ``pytest.warns`` and similar functions now capture warnings when an exception is raised inside a ``with`` block.
Improved Documentation
----------------------
- `11011 <https://github.com/pytest-dev/pytest/issues/11011>`_: Added a warning about modifying the root logger during tests when using ``caplog``.
- `11065 <https://github.com/pytest-dev/pytest/issues/11065>`_: Use ``pytestconfig`` instead of ``request.config`` in cache example to be consistent with the API documentation.
Trivial/Internal Changes
------------------------
- `11208 <https://github.com/pytest-dev/pytest/issues/11208>`_: The (internal) ``FixtureDef.cached_result`` type has changed.
Now the third item ``cached_result[2]``, when set, is an exception instance instead of an exception triplet.
- `11218 <https://github.com/pytest-dev/pytest/issues/11218>`_: (This entry is meant to assist plugins which access private pytest internals to instantiate ``FixtureRequest`` objects.)
:class:`~pytest.FixtureRequest` is now an abstract class which can't be instantiated directly.
A new concrete ``TopRequest`` subclass of ``FixtureRequest`` has been added for the ``request`` fixture in test functions,
as counterpart to the existing ``SubRequest`` subclass for the ``request`` fixture in fixture functions.
- `11315 <https://github.com/pytest-dev/pytest/issues/11315>`_: The :fixture:`pytester` fixture now uses the :fixture:`monkeypatch` fixture to manage the current working directory.
If you use ``pytester`` in combination with :func:`monkeypatch.undo() <pytest.MonkeyPatch.undo>`, the CWD might get restored.
Use :func:`monkeypatch.context() <pytest.MonkeyPatch.context>` instead.
- `11333 <https://github.com/pytest-dev/pytest/issues/11333>`_: Corrected the spelling of ``Config.ArgsSource.INVOCATION_DIR``.
The previous spelling ``INCOVATION_DIR`` remains as an alias.
- `11638 <https://github.com/pytest-dev/pytest/issues/11638>`_: Fixed the selftests to pass correctly if ``FORCE_COLOR``, ``NO_COLOR`` or ``PY_COLORS`` is set in the calling environment.
```
### 7.4.4
```
=========================
Bug Fixes
---------
- `11140 <https://github.com/pytest-dev/pytest/issues/11140>`_: Fix non-string constants at the top of file being detected as docstrings on Python>=3.8.
- `11572 <https://github.com/pytest-dev/pytest/issues/11572>`_: Handle an edge case where :data:`sys.stderr` and :data:`sys.__stderr__` might already be closed when :ref:`faulthandler` is tearing down.
- `11710 <https://github.com/pytest-dev/pytest/issues/11710>`_: Fixed tracebacks from collection errors not getting pruned.
- `7966 <https://github.com/pytest-dev/pytest/issues/7966>`_: Removed unhelpful error message from assertion rewrite mechanism when exceptions are raised in ``__iter__`` methods. Now they are treated un-iterable instead.
Improved Documentation
----------------------
- `11091 <https://github.com/pytest-dev/pytest/issues/11091>`_: Updated documentation to refer to hyphenated options: replaced ``--junitxml`` with ``--junit-xml`` and ``--collectonly`` with ``--collect-only``.
```
### 7.4.3
```
=========================
Bug Fixes
---------
- `10447 <https://github.com/pytest-dev/pytest/issues/10447>`_: Markers are now considered in the reverse mro order to ensure base class markers are considered first -- this resolves a regression.
- `11239 <https://github.com/pytest-dev/pytest/issues/11239>`_: Fixed ``:=`` in asserts impacting unrelated test cases.
- `11439 <https://github.com/pytest-dev/pytest/issues/11439>`_: Handled an edge case where :data:`sys.stderr` might already be closed when :ref:`faulthandler` is tearing down.
```
### 7.4.2
```
=========================
Bug Fixes
---------
- `11237 <https://github.com/pytest-dev/pytest/issues/11237>`_: Fix doctest collection of `functools.cached_property` objects.
- `11306 <https://github.com/pytest-dev/pytest/issues/11306>`_: Fixed bug using ``--importmode=importlib`` which would cause package ``__init__.py`` files to be imported more than once in some cases.
- `11367 <https://github.com/pytest-dev/pytest/issues/11367>`_: Fixed bug where `user_properties` where not being saved in the JUnit XML file if a fixture failed during teardown.
- `11394 <https://github.com/pytest-dev/pytest/issues/11394>`_: Fixed crash when parsing long command line arguments that might be interpreted as files.
Improved Documentation
----------------------
- `11391 <https://github.com/pytest-dev/pytest/issues/11391>`_: Improved disclaimer on pytest plugin reference page to better indicate this is an automated, non-curated listing.
```
### 7.4.1
```
=========================
Bug Fixes
---------
- `10337 <https://github.com/pytest-dev/pytest/issues/10337>`_: Fixed bug where fake intermediate modules generated by ``--import-mode=importlib`` would not include the
child modules as attributes of the parent modules.
- `10702 <https://github.com/pytest-dev/pytest/issues/10702>`_: Fixed error assertion handling in :func:`pytest.approx` when ``None`` is an expected or received value when comparing dictionaries.
- `10811 <https://github.com/pytest-dev/pytest/issues/10811>`_: Fixed issue when using ``--import-mode=importlib`` together with ``--doctest-modules`` that caused modules
to be imported more than once, causing problems with modules that have import side effects.
```
### 7.4.0
```
=========================
Features
--------
- `10901 <https://github.com/pytest-dev/pytest/issues/10901>`_: Added :func:`ExceptionInfo.from_exception() <pytest.ExceptionInfo.from_exception>`, a simpler way to create an :class:`~pytest.ExceptionInfo` from an exception.
This can replace :func:`ExceptionInfo.from_exc_info() <pytest.ExceptionInfo.from_exc_info()>` for most uses.
Improvements
------------
- `10872 <https://github.com/pytest-dev/pytest/issues/10872>`_: Update test log report annotation to named tuple and fixed inconsistency in docs for :hook:`pytest_report_teststatus` hook.
- `10907 <https://github.com/pytest-dev/pytest/issues/10907>`_: When an exception traceback to be displayed is completely filtered out (by mechanisms such as ``__tracebackhide__``, internal frames, and similar), now only the exception string and the following message are shown:
"All traceback entries are hidden. Pass `--full-trace` to see hidden and internal frames.".
Previously, the last frame of the traceback was shown, even though it was hidden.
- `10940 <https://github.com/pytest-dev/pytest/issues/10940>`_: Improved verbose output (``-vv``) of ``skip`` and ``xfail`` reasons by performing text wrapping while leaving a clear margin for progress output.
Added ``TerminalReporter.wrap_write()`` as a helper for that.
- `10991 <https://github.com/pytest-dev/pytest/issues/10991>`_: Added handling of ``%f`` directive to print microseconds in log format options, such as ``log-date-format``.
- `11005 <https://github.com/pytest-dev/pytest/issues/11005>`_: Added the underlying exception to the cache provider's path creation and write warning messages.
- `11013 <https://github.com/pytest-dev/pytest/issues/11013>`_: Added warning when :confval:`testpaths` is set, but paths are not found by glob. In this case, pytest will fall back to searching from the current directory.
- `11043 <https://github.com/pytest-dev/pytest/issues/11043>`_: When `--confcutdir` is not specified, and there is no config file present, the conftest cutoff directory (`--confcutdir`) is now set to the :ref:`rootdir <rootdir>`.
Previously in such cases, `conftest.py` files would be probed all the way to the root directory of the filesystem.
If you are badly affected by this change, consider adding an empty config file to your desired cutoff directory, or explicitly set `--confcutdir`.
- `11081 <https://github.com/pytest-dev/pytest/issues/11081>`_: The :confval:`norecursedirs` check is now performed in a :hook:`pytest_ignore_collect` implementation, so plugins can affect it.
If after updating to this version you see that your `norecursedirs` setting is not being respected,
it means that a conftest or a plugin you use has a bad `pytest_ignore_collect` implementation.
Most likely, your hook returns `False` for paths it does not want to ignore,
which ends the processing and doesn't allow other plugins, including pytest itself, to ignore the path.
The fix is to return `None` instead of `False` for paths your hook doesn't want to ignore.
- `8711 <https://github.com/pytest-dev/pytest/issues/8711>`_: :func:`caplog.set_level() <pytest.LogCaptureFixture.set_level>` and :func:`caplog.at_level() <pytest.LogCaptureFixture.at_level>`
will temporarily enable the requested ``level`` if ``level`` was disabled globally via
``logging.disable(LEVEL)``.
Bug Fixes
---------
- `10831 <https://github.com/pytest-dev/pytest/issues/10831>`_: Terminal Reporting: Fixed bug when running in ``--tb=line`` mode where ``pytest.fail(pytrace=False)`` tests report ``None``.
- `11068 <https://github.com/pytest-dev/pytest/issues/11068>`_: Fixed the ``--last-failed`` whole-file skipping functionality ("skipped N files") for :ref:`non-python test files <non-python tests>`.
- `11104 <https://github.com/pytest-dev/pytest/issues/11104>`_: Fixed a regression in pytest 7.3.2 which caused to :confval:`testpaths` to be considered for loading initial conftests,
even when it was not utilized (e.g. when explicit paths were given on the command line).
Now the ``testpaths`` are only considered when they are in use.
- `1904 <https://github.com/pytest-dev/pytest/issues/1904>`_: Fixed traceback entries hidden with ``__tracebackhide__ = True`` still being shown for chained exceptions (parts after "... the above exception ..." message).
- `7781 <https://github.com/pytest-dev/pytest/issues/7781>`_: Fix writing non-encodable text to log file when using ``--debug``.
Improved Documentation
----------------------
- `9146 <https://github.com/pytest-dev/pytest/issues/9146>`_: Improved documentation for :func:`caplog.set_level() <pytest.LogCaptureFixture.set_level>`.
Trivial/Internal Changes
------------------------
- `11031 <https://github.com/pytest-dev/pytest/issues/11031>`_: Enhanced the CLI flag for ``-c`` to now include ``--config-file`` to make it clear that this flag applies to the usage of a custom config file.
```
### 7.3.2
```
=========================
Bug Fixes
---------
- `10169 <https://github.com/pytest-dev/pytest/issues/10169>`_: Fix bug where very long option names could cause pytest to break with ``OSError: [Errno 36] File name too long`` on some systems.
- `10894 <https://github.com/pytest-dev/pytest/issues/10894>`_: Support for Python 3.12 (beta at the time of writing).
- `10987 <https://github.com/pytest-dev/pytest/issues/10987>`_: :confval:`testpaths` is now honored to load root ``conftests``.
- `10999 <https://github.com/pytest-dev/pytest/issues/10999>`_: The `monkeypatch` `setitem`/`delitem` type annotations now allow `TypedDict` arguments.
- `11028 <https://github.com/pytest-dev/pytest/issues/11028>`_: Fixed bug in assertion rewriting where a variable assigned with the walrus operator could not be used later in a function call.
- `11054 <https://github.com/pytest-dev/pytest/issues/11054>`_: Fixed ``--last-failed``'s "(skipped N files)" functionality for files inside of packages (directories with `__init__.py` files).
```
### 7.3.1
```
=========================
Improvements
------------
- `10875 <https://github.com/pytest-dev/pytest/issues/10875>`_: Python 3.12 support: fixed ``RuntimeError: TestResult has no addDuration method`` when running ``unittest`` tests.
- `10890 <https://github.com/pytest-dev/pytest/issues/10890>`_: Python 3.12 support: fixed ``shutil.rmtree(onerror=...)`` deprecation warning when using :fixture:`tmp_path`.
Bug Fixes
---------
- `10896 <https://github.com/pytest-dev/pytest/issues/10896>`_: Fixed performance regression related to :fixture:`tmp_path` and the new :confval:`tmp_path_retention_policy` option.
- `10903 <https://github.com/pytest-dev/pytest/issues/10903>`_: Fix crash ``INTERNALERROR IndexError: list index out of range`` which happens when displaying an exception where all entries are hidden.
This reverts the change "Correctly handle ``__tracebackhide__`` for chained exceptions." introduced in version 7.3.0.
```
### 7.3.0
```
=========================
Features
--------
- `10525 <https://github.com/pytest-dev/pytest/issues/10525>`_: Test methods decorated with ``classmethod`` can now be discovered as tests, following the same rules as normal methods. This fills the gap that static methods were discoverable as tests but not class methods.
- `10755 <https://github.com/pytest-dev/pytest/issues/10755>`_: :confval:`console_output_style` now supports ``progress-even-when-capture-no`` to force the use of the progress output even when capture is disabled. This is useful in large test suites where capture may have significant performance impact.
- `7431 <https://github.com/pytest-dev/pytest/issues/7431>`_: ``--log-disable`` CLI option added to disable individual loggers.
- `8141 <https://github.com/pytest-dev/pytest/issues/8141>`_: Added :confval:`tmp_path_retention_count` and :confval:`tmp_path_retention_policy` configuration options to control how directories created by the :fixture:`tmp_path` fixture are kept.
Improvements
------------
- `10226 <https://github.com/pytest-dev/pytest/issues/10226>`_: If multiple errors are raised in teardown, we now re-raise an ``ExceptionGroup`` of them instead of discarding all but the last.
- `10658 <https://github.com/pytest-dev/pytest/issues/10658>`_: Allow ``-p`` arguments to include spaces (eg: ``-p no:logging`` instead of
``-pno:logging``). Mostly useful in the ``addopts`` section of the configuration
file.
- `10710 <https://github.com/pytest-dev/pytest/issues/10710>`_: Added ``start`` and ``stop`` timestamps to ``TestReport`` objects.
- `10727 <https://github.com/pytest-dev/pytest/issues/10727>`_: Split the report header for ``rootdir``, ``config file`` and ``testpaths`` so each has its own line.
- `10840 <https://github.com/pytest-dev/pytest/issues/10840>`_: pytest should no longer crash on AST with pathological position attributes, for example testing AST produced by `Hylang <https://github.com/hylang/hy>__`.
- `6267 <https://github.com/pytest-dev/pytest/issues/6267>`_: The full output of a test is no longer truncated if the truncation message would be longer than
the hidden text. The line number shown has also been fixed.
Bug Fixes
---------
- `10743 <https://github.com/pytest-dev/pytest/issues/10743>`_: The assertion rewriting mechanism now works correctly when assertion expressions contain the walrus operator.
- `10765 <https://github.com/pytest-dev/pytest/issues/10765>`_: Fixed :fixture:`tmp_path` fixture always raising :class:`OSError` on ``emscripten`` platform due to missing :func:`os.getuid`.
- `1904 <https://github.com/pytest-dev/pytest/issues/1904>`_: Correctly handle ``__tracebackhide__`` for chained exceptions.
NOTE: This change was reverted in version 7.3.1.
Improved Documentation
----------------------
- `10782 <https://github.com/pytest-dev/pytest/issues/10782>`_: Fixed the minimal example in :ref:`goodpractices`: ``pip install -e .`` requires a ``version`` entry in ``pyproject.toml`` to run successfully.
Trivial/Internal Changes
------------------------
- `10669 <https://github.com/pytest-dev/pytest/issues/10669>`_: pytest no longer directly depends on the `attrs <https://www.attrs.org/en/stable/>`__ package. While
we at pytest all love the package dearly and would like to thank the ``attrs`` team for many years of cooperation and support,
it makes sense for ``pytest`` to have as little external dependencies as possible, as this helps downstream projects.
With that in mind, we have replaced the pytest's limited internal usage to use the standard library's ``dataclasses`` instead.
Nice diffs for ``attrs`` classes are still supported though.
```
### 7.2.2
```
=========================
Bug Fixes
---------
- `10533 <https://github.com/pytest-dev/pytest/issues/10533>`_: Fixed :func:`pytest.approx` handling of dictionaries containing one or more values of `0.0`.
- `10592 <https://github.com/pytest-dev/pytest/issues/10592>`_: Fixed crash if `--cache-show` and `--help` are passed at the same time.
- `10597 <https://github.com/pytest-dev/pytest/issues/10597>`_: Fixed bug where a fixture method named ``teardown`` would be called as part of ``nose`` teardown stage.
- `10626 <https://github.com/pytest-dev/pytest/issues/10626>`_: Fixed crash if ``--fixtures`` and ``--help`` are passed at the same time.
- `10660 <https://github.com/pytest-dev/pytest/issues/10660>`_: Fixed :py:func:`pytest.raises` to return a 'ContextManager' so that type-checkers could narrow
:code:`pytest.raises(...) if ... else nullcontext()` down to 'ContextManager' rather than 'object'.
Improved Documentation
----------------------
- `10690 <https://github.com/pytest-dev/pytest/issues/10690>`_: Added `CI` and `BUILD_NUMBER` environment variables to the documentation.
- `10721 <https://github.com/pytest-dev/pytest/issues/10721>`_: Fixed entry-points declaration in the documentation example using Hatch.
- `10753 <https://github.com/pytest-dev/pytest/issues/10753>`_: Changed wording of the module level skip to be very explicit
about not collecting tests and not executing the rest of the module.
```
### 7.2.1
```
=========================
Bug Fixes
---------
- `10452 <https://github.com/pytest-dev/pytest/issues/10452>`_: Fix 'importlib.abc.TraversableResources' deprecation warning in Python 3.12.
- `10457 <https://github.com/pytest-dev/pytest/issues/10457>`_: If a test is skipped from inside a fixture, the test summary now shows the test location instead of the fixture location.
- `10506 <https://github.com/pytest-dev/pytest/issues/10506>`_: Fix bug where sometimes pytest would use the file system root directory as :ref:`rootdir <rootdir>` on Windows.
- `10607 <https://github.com/pytest-dev/pytest/issues/10607>`_: Fix a race condition when creating junitxml reports, which could occur when multiple instances of pytest execute in parallel.
- `10641 <https://github.com/pytest-dev/pytest/issues/10641>`_: Fix a race condition when creating or updating the stepwise plugin's cache, which could occur when multiple xdist worker nodes try to simultaneously update the stepwise plugin's cache.
```
### 7.2.0
```
=========================
Deprecations
------------
- `10012 <https://github.com/pytest-dev/pytest/issues/10012>`_: Update :class:`pytest.PytestUnhandledCoroutineWarning` to a deprecation; it will raise an error in pytest 8.
- `10396 <https://github.com/pytest-dev/pytest/issues/10396>`_: pytest no longer depends on the ``py`` library. ``pytest`` provides a vendored copy of ``py.error`` and ``py.path`` modules but will use the ``py`` library if it is installed. If you need other ``py.*`` modules, continue to install the deprecated ``py`` library separately, otherwise it can usually be removed as a dependency.
- `4562 <https://github.com/pytest-dev/pytest/issues/4562>`_: Deprecate configuring hook specs/impls using attributes/marks.
Instead use :py:func:`pytest.hookimpl` and :py:func:`pytest.hookspec`.
For more details, see the :ref:`docs <legacy-path-hooks-deprecated>`.
- `9886 <https://github.com/pytest-dev/pytest/issues/9886>`_: The functionality for running tests written for ``nose`` has been officially deprecated.
This includes:
* Plain ``setup`` and ``teardown`` functions and methods: this might catch users by surprise, as ``setup()`` and ``teardown()`` are not pytest idioms, but part of the ``nose`` support.
* Setup/teardown using the `with_setup <with-setup-nose>`_ decorator.
For more details, consult the :ref:`deprecation docs <nose-deprecation>`.
.. _`with-setup-nose`: https://nose.readthedocs.io/en/latest/testing_tools.html?highlight=with_setup#nose.tools.with_setup
- `7337 <https://github.com/pytest-dev/pytest/issues/7337>`_: A deprecation warning is now emitted if a test function returns something other than `None`. This prevents a common mistake among beginners that expect that returning a `bool` (for example `return foo(a, b) == result`) would cause a test to pass or fail, instead of using `assert`. The plan is to make returning non-`None` from tests an error in the future.
Features
--------
- `9897 <https://github.com/pytest-dev/pytest/issues/9897>`_: Added shell-style wildcard support to ``testpaths``.
Improvements
------------
- `10218 <https://github.com/pytest-dev/pytest/issues/10218>`_: ``pytest.mark.parametrize()`` (and similar functions) now accepts any ``Sequence[str]`` for the argument names,
instead of just ``list[str]`` and ``tuple[str, ...]``.
(Note that ``str``, which is itself a ``Sequence[str]``, is still treated as a
comma-delimited name list, as before).
- `10381 <https://github.com/pytest-dev/pytest/issues/10381>`_: The ``--no-showlocals`` flag has been added. This can be passed directly to tests to override ``--showlocals`` declared through ``addopts``.
- `3426 <https://github.com/pytest-dev/pytest/issues/3426>`_: Assertion failures with strings in NFC and NFD forms that normalize to the same string now have a dedicated error message detailing the issue, and their utf-8 representation is expressed instead.
- `8508 <https://github.com/pytest-dev/pytest/issues/8508>`_: Introduce multiline display for warning matching via :py:func:`pytest.warns` and
enhance match comparison for :py:func:`pytest.ExceptionInfo.match` as returned by :py:func:`pytest.raises`.
- `8646 <https://github.com/pytest-dev/pytest/issues/8646>`_: Improve :py:func:`pytest.raises`. Previously passing an empty tuple would give a confusing
error. We now raise immediately with a more helpful message.
- `9741 <https://github.com/pytest-dev/pytest/issues/9741>`_: On Python 3.11, use the standard library's :mod:`tomllib` to parse TOML.
`tomli` is no longer a dependency on Python 3.11.
- `9742 <https://github.com/pytest-dev/pytest/issues/9742>`_: Display assertion message without escaped newline characters with ``-vv``.
- `9823 <https://github.com/pytest-dev/pytest/issues/9823>`_: Improved error message that is shown when no collector is found for a given file.
- `9873 <https://github.com/pytest-dev/pytest/issues/9873>`_: Some coloring has been added to the short test summary.
- `9883 <https://github.com/pytest-dev/pytest/issues/9883>`_: Normalize the help description of all command-line options.
- `9920 <https://github.com/pytest-dev/pytest/issues/9920>`_: Display full crash messages in ``short test summary info``, when running in a CI environment.
- `9987 <https://github.com/pytest-dev/pytest/issues/9987>`_: Added support for hidden configuration file by allowing ``.pytest.ini`` as an alternative to ``pytest.ini``.
Bug Fixes
---------
- `10150 <https://github.com/pytest-dev/pytest/issues/10150>`_: :data:`sys.stdin` now contains all expected methods of a file-like object when capture is enabled.
- `10382 <https://github.com/pytest-dev/pytest/issues/10382>`_: Do not break into pdb when ``raise unittest.SkipTest()`` appears top-level in a file.
- `7792 <https://github.com/pytest-dev/pytest/issues/7792>`_: Marks are now inherited according to the full MRO in test classes. Previously, if a test class inherited from two or more classes, only marks from the first super-class would apply.
When inheriting marks from super-classes, marks from the sub-classes are now ordered before marks from the super-classes, in MRO order. Previously it was the reverse.
When inheriting marks from super-classes, the `pytestmark` attribute of the sub-class now only contains the marks directly applied to it. Previously, it also contained marks from its super-classes. Please note that this attribute should not normally be accessed directly; use :func:`Node.iter_markers <_pytest.nodes.Node.iter_markers>` instead.
- `9159 <https://github.com/pytest-dev/pytest/issues/9159>`_: Showing inner exceptions by forcing native display in ``ExceptionGroups`` even when using display options other than ``--tb=native``. A temporary step before full implementation of pytest-native display for inner exceptions in ``ExceptionGroups``.
- `9877 <https://github.com/pytest-dev/pytest/issues/9877>`_: Ensure ``caplog.get_records(when)`` returns current/correct data after invoking ``caplog.clear()``.
Improved Documentation
----------------------
- `10344 <https://github.com/pytest-dev/pytest/issues/10344>`_: Update information on writing plugins to use ``pyproject.toml`` instead of ``setup.py``.
- `9248 <https://github.com/pytest-dev/pytest/issues/9248>`_: The documentation is now built using Sphinx 5.x (up from 3.x previously).
- `9291 <https://github.com/pytest-dev/pytest/issues/9291>`_: Update documentation on how :func:`pytest.warns` affects :class:`DeprecationWarning`.
Trivial/Internal Changes
------------------------
- `10313 <https://github.com/pytest-dev/pytest/issues/10313>`_: Made ``_pytest.doctest.DoctestItem`` export ``pytest.DoctestItem`` for
type check and runtime purposes. Made `_pytest.doctest` use internal APIs
to avoid circular imports.
- `9906 <https://github.com/pytest-dev/pytest/issues/9906>`_: Made ``_pytest.compat`` re-export ``importlib_metadata`` in the eyes of type checkers.
- `9910 <https://github.com/pytest-dev/pytest/issues/9910>`_: Fix default encoding warning (``EncodingWarning``) in ``cacheprovider``
- `9984 <https://github.com/pytest-dev/pytest/issues/9984>`_: Improve the error message when we attempt to access a fixture that has been
torn down.
Add an additional sentence to the docstring explaining when it's not a good
idea to call ``getfixturevalue``.
```
### 7.1.3
```
=========================
Bug Fixes
---------
- `10060 <https://github.com/pytest-dev/pytest/issues/10060>`_: When running with ``--pdb``, ``TestCase.tearDown`` is no longer called for tests when the *class* has been skipped via ``unittest.skip`` or ``pytest.mark.skip``.
- `10190 <https://github.com/pytest-dev/pytest/issues/10190>`_: Invalid XML characters in setup or teardown error messages are now properly escaped for JUnit XML reports.
- `10230 <https://github.com/pytest-dev/pytest/issues/10230>`_: Ignore ``.py`` files created by ``pyproject.toml``-based editable builds introduced in `pip 21.3 <https://pip.pypa.io/en/stable/news/#v21-3>`__.
- `3396 <https://github.com/pytest-dev/pytest/issues/3396>`_: Doctests now respect the ``--import-mode`` flag.
- `9514 <https://github.com/pytest-dev/pytest/issues/9514>`_: Type-annotate ``FixtureRequest.param`` as ``Any`` as a stop gap measure until :issue:`8073` is fixed.
- `9791 <https://github.com/pytest-dev/pytest/issues/9791>`_: Fixed a path handling code in ``rewrite.py`` that seems to work fine, but was incorrect and fails in some systems.
- `9917 <https://github.com/pytest-dev/pytest/issues/9917>`_: Fixed string representation for :func:`pytest.approx` when used to compare tuples.
Improved Documentation
----------------------
- `9937 <https://github.com/pytest-dev/pytest/issues/9937>`_: Explicit note that :fixture:`tmpdir` fixture is discouraged in favour of :fixture:`tmp_path`.
Trivial/Internal Changes
------------------------
- `10114 <https://github.com/pytest-dev/pytest/issues/10114>`_: Replace `atomicwrites <https://github.com/untitaker/python-atomicwrites>`__ dependency on windows with `os.replace`.
```
Links
- PyPI: https://pypi.org/project/pytest
- Changelog: https://data.safetycli.com/changelogs/pytest/
- Homepage: https://docs.pytest.org/en/latest/
Changelog
### 87.5
```
What's Changed
* Fix windows install command by jamesgk in https://github.com/kyamagu/skia-python/pull/180
* Build wheels for Python 3.11 (fixes 182) by lucach in https://github.com/kyamagu/skia-python/pull/183
New Contributors
* jamesgk made their first contribution in https://github.com/kyamagu/skia-python/pull/180
* lucach made their first contribution in https://github.com/kyamagu/skia-python/pull/183
**Full Changelog**: https://github.com/kyamagu/skia-python/compare/v87.4...v87.5
```
Links
- PyPI: https://pypi.org/project/skia-python
- Changelog: https://data.safetycli.com/changelogs/skia-python/
- Repo: https://github.com/kyamagu/skia-python
Changelog
### 1.26.4
```
discovered after the 1.26.3 release. The Python versions supported by
this release are 3.9-3.12. This is the last planned release in the
1.26.x series.
Contributors
A total of 13 people contributed to this release. People with a \"+\" by
their names contributed a patch for the first time.
- Charles Harris
- Elliott Sales de Andrade
- Lucas Colley +
- Mark Ryan +
- Matti Picus
- Nathan Goldbaum
- Ola x Nilsson +
- Pieter Eendebak
- Ralf Gommers
- Sayed Adel
- Sebastian Berg
- Stefan van der Walt
- Stefano Rivera
Pull requests merged
A total of 19 pull requests were merged for this release.
- [25323](https://github.com/numpy/numpy/pull/25323): BUG: Restore missing asstr import
- [25523](https://github.com/numpy/numpy/pull/25523): MAINT: prepare 1.26.x for further development
- [25539](https://github.com/numpy/numpy/pull/25539): BUG: `numpy.array_api`: fix `linalg.cholesky` upper decomp\...
- [25584](https://github.com/numpy/numpy/pull/25584): CI: Bump azure pipeline timeout to 120 minutes
- [25585](https://github.com/numpy/numpy/pull/25585): MAINT, BLD: Fix unused inline functions warnings on clang
- [25599](https://github.com/numpy/numpy/pull/25599): BLD: include fix for MinGW platform detection
- [25618](https://github.com/numpy/numpy/pull/25618): TST: Fix test_numeric on riscv64
- [25619](https://github.com/numpy/numpy/pull/25619): BLD: fix building for windows ARM64
- [25620](https://github.com/numpy/numpy/pull/25620): MAINT: add `newaxis` to `__all__` in `numpy.array_api`
- [25630](https://github.com/numpy/numpy/pull/25630): BUG: Use large file fallocate on 32 bit linux platforms
- [25643](https://github.com/numpy/numpy/pull/25643): TST: Fix test_warning_calls on Python 3.12
- [25645](https://github.com/numpy/numpy/pull/25645): TST: Bump pytz to 2023.3.post1
- [25658](https://github.com/numpy/numpy/pull/25658): BUG: Fix AVX512 build flags on Intel Classic Compiler
- [25670](https://github.com/numpy/numpy/pull/25670): BLD: fix potential issue with escape sequences in `__config__.py`
- [25718](https://github.com/numpy/numpy/pull/25718): CI: pin cygwin python to 3.9.16-1 and fix typing tests \[skip\...
- [25720](https://github.com/numpy/numpy/pull/25720): MAINT: Bump cibuildwheel to v2.16.4
- [25748](https://github.com/numpy/numpy/pull/25748): BLD: unvendor meson-python on 1.26.x and upgrade to meson-python\...
- [25755](https://github.com/numpy/numpy/pull/25755): MAINT: Include header defining backtrace
- [25756](https://github.com/numpy/numpy/pull/25756): BUG: Fix np.quantile(\[Fraction(2,1)\], 0.5) (#24711)
Checksums
MD5
90f33cdd8934cd07192d6ede114d8d4d numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl
63ac60767f6724490e587f6010bd6839 numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl
ad4e82b225aaaf5898ea9798b50978d8 numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d428e3da2df4fa359313348302cf003a numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
89937c3bb596193f8ca9eae2ff84181e numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl
de4f9da0a4e6dfd4cec39c7ad5139803 numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl
2c1f73fd9b3acf4b9b0c23e985cdd38f numpy-1.26.4-cp310-cp310-win32.whl
920ad1f50e478b1a877fe7b7a46cc520 numpy-1.26.4-cp310-cp310-win_amd64.whl
719d1ff12db38903dcfd6749078fb11d numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl
eb601e80194d2e1c00d8daedd8dc68c4 numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl
71a7ab11996fa370dc28e28731bd5c32 numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
eb0cdd03e1ee2eb45c57c7340c98cf48 numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
9d4ae1b0b27a625400f81ed1846a5667 numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl
1b6771350d2f496157430437a895ba4b numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl
1e4a18612ee4d0e54e0833574ebc6d25 numpy-1.26.4-cp311-cp311-win32.whl
5fd325dd8704023c1110835d7a1b095a numpy-1.26.4-cp311-cp311-win_amd64.whl
d95ce582923d24dbddbc108aa5fd2128 numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl
6f16f3d70e0d95ce2b032167c546cc95 numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl
5369536d4c45fbe384147ff23185b48a numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
1ceb224096686831ad731e472b65e96a numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
cd8d3c00bbc89f9bc07e2df762f9e2ae numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl
5bd81ce840bb2e42befe01efb0402b79 numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl
2cc3b0757228078395da3efa3dc99f23 numpy-1.26.4-cp312-cp312-win32.whl
305155bd5ae879344c58968879584ed1 numpy-1.26.4-cp312-cp312-win_amd64.whl
ec2310f67215743e9c5d16b6c9fb87b6 numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl
406aea6081c1affbebdb6ad56b5deaf4 numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl
fee12f0a3cbac7bbf1a1c2d82d3b02a9 numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
baf4b7143c7b9ce170e62b33380fb573 numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
376ff29f90b7840ae19ecd59ad1ddf53 numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl
86785b3a7cd156c08c2ebc26f7816fb3 numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl
ab8a9ab69f16b7005f238cda76bc0bac numpy-1.26.4-cp39-cp39-win32.whl
fafa4453e820c7ff40907e5dc79d8199 numpy-1.26.4-cp39-cp39-win_amd64.whl
7f13e2f07bd3e4a439ade0e4d27905c6 numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
928954b41c1cd0e856f1a31d41722661 numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
57bbd5c0b3848d804c416cbcab4a0ae8 numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl
19550cbe7bedd96a928da9d4ad69509d numpy-1.26.4.tar.gz
SHA256
9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0 numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl
2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl
d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4 numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl
a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2 numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl
bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07 numpy-1.26.4-cp310-cp310-win32.whl
b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5 numpy-1.26.4-cp310-cp310-win_amd64.whl
4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71 numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl
edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl
7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5 numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl
60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl
1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20 numpy-1.26.4-cp311-cp311-win32.whl
cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2 numpy-1.26.4-cp311-cp311-win_amd64.whl
b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218 numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl
03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl
9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl
1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0 numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl
50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110 numpy-1.26.4-cp312-cp312-win32.whl
08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 numpy-1.26.4-cp312-cp312-win_amd64.whl
7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl
52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl
d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764 numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3 numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl
47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl
a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6 numpy-1.26.4-cp39-cp39-win32.whl
3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea numpy-1.26.4-cp39-cp39-win_amd64.whl
afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30 numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0 numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl
2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010 numpy-1.26.4.tar.gz
```
### 1.26.3
```
discovered after the 1.26.2 release. The most notable changes are the
f2py bug fixes. The Python versions supported by this release are
3.9-3.12.
Compatibility
`f2py` will no longer accept ambiguous `-m` and `.pyf` CLI combinations.
When more than one `.pyf` file is passed, an error is raised. When both
`-m` and a `.pyf` is passed, a warning is emitted and the `-m` provided
name is ignored.
Improvements
`f2py` now handles `common` blocks which have `kind` specifications from
modules. This further expands the usability of intrinsics like
`iso_fortran_env` and `iso_c_binding`.
Contributors
A total of 18 people contributed to this release. People with a \"+\" by
their names contributed a patch for the first time.
- \DWesl
- \Illviljan
- Alexander Grund
- Andrea Bianchi +
- Charles Harris
- Daniel Vanzo
- Johann Rohwer +
- Matti Picus
- Nathan Goldbaum
- Peter Hawkins
- Raghuveer Devulapalli
- Ralf Gommers
- Rohit Goswami
- Sayed Adel
- Sebastian Berg
- Stefano Rivera +
- Thomas A Caswell
- matoro
Pull requests merged
A total of 42 pull requests were merged for this release.
- [25130](https://github.com/numpy/numpy/pull/25130): MAINT: prepare 1.26.x for further development
- [25188](https://github.com/numpy/numpy/pull/25188): TYP: add None to `__getitem__` in `numpy.array_api`
- [25189](https://github.com/numpy/numpy/pull/25189): BLD,BUG: quadmath required where available \[f2py\]
- [25190](https://github.com/numpy/numpy/pull/25190): BUG: alpha doesn\'t use REAL(10)
- [25191](https://github.com/numpy/numpy/pull/25191): BUG: Fix FP overflow error in division when the divisor is scalar
- [25192](https://github.com/numpy/numpy/pull/25192): MAINT: Pin scipy-openblas version.
- [25201](https://github.com/numpy/numpy/pull/25201): BUG: Fix f2py to enable use of string optional inout argument
- [25202](https://github.com/numpy/numpy/pull/25202): BUG: Fix -fsanitize=alignment issue in numpy/\_core/src/multiarray/arraytypes.c.src
- [25203](https://github.com/numpy/numpy/pull/25203): TST: Explicitly pass NumPy path to cython during tests (also\...
- [25204](https://github.com/numpy/numpy/pull/25204): BUG: fix issues with `newaxis` and `linalg.solve` in `numpy.array_api`
- [25205](https://github.com/numpy/numpy/pull/25205): BUG: Disallow shadowed modulenames
- [25217](https://github.com/numpy/numpy/pull/25217): BUG: Handle common blocks with kind specifications from modules
- [25218](https://github.com/numpy/numpy/pull/25218): BUG: Fix moving compiled executable to root with f2py -c on Windows
- [25219](https://github.com/numpy/numpy/pull/25219): BUG: Fix single to half-precision conversion on PPC64/VSX3
- [25227](https://github.com/numpy/numpy/pull/25227): TST: f2py: fix issue in test skip condition
- [25240](https://github.com/numpy/numpy/pull/25240): Revert \"MAINT: Pin scipy-openblas version.\"
- [25249](https://github.com/numpy/numpy/pull/25249): MAINT: do not use `long` type
- [25377](https://github.com/numpy/numpy/pull/25377): TST: PyPy needs another gc.collect on latest versions
- [25378](https://github.com/numpy/numpy/pull/25378): CI: Install Lapack runtime on Cygwin.
- [25379](https://github.com/numpy/numpy/pull/25379): MAINT: Bump conda-incubator/setup-miniconda from 2.2.0 to 3.0.1
- [25380](https://github.com/numpy/numpy/pull/25380): BLD: update vendored Meson for AIX shared library fix
- [25419](https://github.com/numpy/numpy/pull/25419): MAINT: Init `base` in cpu_avx512_kn
- [25420](https://github.com/numpy/numpy/pull/25420): BUG: Fix failing test_features on SapphireRapids
- [25422](https://github.com/numpy/numpy/pull/25422): BUG: Fix non-contiguous memory load when ARM/Neon is enabled
- [25428](https://github.com/numpy/numpy/pull/25428): MAINT,BUG: Never import distutils above 3.12 \[f2py\]
- [25452](https://github.com/numpy/numpy/pull/25452): MAINT: make the import-time check for old Accelerate more specific
- [25458](https://github.com/numpy/numpy/pull/25458): BUG: fix macOS version checks for Accelerate support
- [25465](https://github.co
Update pytest from 7.1.2 to 8.0.1.
Changelog
### 8.0.1 ``` ========================= Bug Fixes --------- - `11875 <https://github.com/pytest-dev/pytest/issues/11875>`_: Correctly handle errors from :func:`getpass.getuser` in Python 3.13. - `11879 <https://github.com/pytest-dev/pytest/issues/11879>`_: Fix an edge case where ``ExceptionInfo._stringify_exception`` could crash :func:`pytest.raises`. - `11906 <https://github.com/pytest-dev/pytest/issues/11906>`_: Fix regression with :func:`pytest.warns` using custom warning subclasses which have more than one parameter in their `__init__`. - `11907 <https://github.com/pytest-dev/pytest/issues/11907>`_: Fix a regression in pytest 8.0.0 whereby calling :func:`pytest.skip` and similar control-flow exceptions within a :func:`pytest.warns()` block would get suppressed instead of propagating. - `11929 <https://github.com/pytest-dev/pytest/issues/11929>`_: Fix a regression in pytest 8.0.0 whereby autouse fixtures defined in a module get ignored by the doctests in the module. - `11937 <https://github.com/pytest-dev/pytest/issues/11937>`_: Fix a regression in pytest 8.0.0 whereby items would be collected in reverse order in some circumstances. ``` ### 8.0.0 ``` ========================= Bug Fixes --------- - `11842 <https://github.com/pytest-dev/pytest/issues/11842>`_: Properly escape the ``reason`` of a :ref:`skip <pytest.mark.skip ref>` mark when writing JUnit XML files. - `11861 <https://github.com/pytest-dev/pytest/issues/11861>`_: Avoid microsecond exceeds ``1_000_000`` when using ``log-date-format`` with ``%f`` specifier, which might cause the test suite to crash. ``` ### 8.0.0rc2 ``` ============================ Improvements ------------ - `11233 <https://github.com/pytest-dev/pytest/issues/11233>`_: Improvements to ``-r`` for xfailures and xpasses: * Report tracebacks for xfailures when ``-rx`` is set. * Report captured output for xpasses when ``-rX`` is set. * For xpasses, add ``-`` in summary between test name and reason, to match how xfail is displayed. - `11825 <https://github.com/pytest-dev/pytest/issues/11825>`_: The :hook:`pytest_plugin_registered` hook has a new ``plugin_name`` parameter containing the name by which ``plugin`` is registered. Bug Fixes --------- - `11706 <https://github.com/pytest-dev/pytest/issues/11706>`_: Fix reporting of teardown errors in higher-scoped fixtures when using `--maxfail` or `--stepwise`. - `11758 <https://github.com/pytest-dev/pytest/issues/11758>`_: Fixed ``IndexError: string index out of range`` crash in ``if highlighted[-1] == "\n" and source[-1] != "\n"``. This bug was introduced in pytest 8.0.0rc1. - `9765 <https://github.com/pytest-dev/pytest/issues/9765>`_, `#11816 <https://github.com/pytest-dev/pytest/issues/11816>`_: Fixed a frustrating bug that afflicted some users with the only error being ``assert mod not in mods``. The issue was caused by the fact that ``str(Path(mod))`` and ``mod.__file__`` don't necessarily produce the same string, and was being erroneously used interchangably in some places in the code. This fix also broke the internal API of ``PytestPluginManager.consider_conftest`` by introducing a new parameter -- we mention this in case it is being used by external code, even if marked as *private*. ``` ### 8.0.0rc1 ``` ============================ Breaking Changes ---------------- Old Deprecations Are Now Errors ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - `7363 <https://github.com/pytest-dev/pytest/issues/7363>`_: **PytestRemovedIn8Warning deprecation warnings are now errors by default.** Following our plan to remove deprecated features with as little disruption as possible, all warnings of type ``PytestRemovedIn8Warning`` now generate errors instead of warning messages by default. **The affected features will be effectively removed in pytest 8.1**, so please consult the :ref:`deprecations` section in the docs for directions on how to update existing code. In the pytest ``8.0.X`` series, it is possible to change the errors back into warnings as a stopgap measure by adding this to your ``pytest.ini`` file: .. code-block:: ini [pytest] filterwarnings = ignore::pytest.PytestRemovedIn8Warning But this will stop working when pytest ``8.1`` is released. **If you have concerns** about the removal of a specific feature, please add a comment to :issue:`7363`. Version Compatibility ^^^^^^^^^^^^^^^^^^^^^ - `11151 <https://github.com/pytest-dev/pytest/issues/11151>`_: Dropped support for Python 3.7, which `reached end-of-life on 2023-06-27 <https://devguide.python.org/versions/>`__. - ``pluggy>=1.3.0`` is now required. Collection Changes ^^^^^^^^^^^^^^^^^^ In this version we've made several breaking changes to pytest's collection phase, particularly around how filesystem directories and Python packages are collected, fixing deficiencies and allowing for cleanups and improvements to pytest's internals. A deprecation period for these changes was not possible. - `7777 <https://github.com/pytest-dev/pytest/issues/7777>`_: Files and directories are now collected in alphabetical order jointly, unless changed by a plugin. Previously, files were collected before directories. See below for an example. - `8976 <https://github.com/pytest-dev/pytest/issues/8976>`_: Running `pytest pkg/__init__.py` now collects the `pkg/__init__.py` file (module) only. Previously, it collected the entire `pkg` package, including other test files in the directory, but excluding tests in the `__init__.py` file itself (unless :confval:`python_files` was changed to allow `__init__.py` file). To collect the entire package, specify just the directory: `pytest pkg`. - `11137 <https://github.com/pytest-dev/pytest/issues/11137>`_: :class:`pytest.Package` is no longer a :class:`pytest.Module` or :class:`pytest.File`. The ``Package`` collector node designates a Python package, that is, a directory with an `__init__.py` file. Previously ``Package`` was a subtype of ``pytest.Module`` (which represents a single Python module), the module being the `__init__.py` file. This has been deemed a design mistake (see :issue:`11137` and :issue:`7777` for details). The ``path`` property of ``Package`` nodes now points to the package directory instead of the ``__init__.py`` file. Note that a ``Module`` node for ``__init__.py`` (which is not a ``Package``) may still exist, if it is picked up during collection (e.g. if you configured :confval:`python_files` to include ``__init__.py`` files). - `7777 <https://github.com/pytest-dev/pytest/issues/7777>`_: Added a new :class:`pytest.Directory` base collection node, which all collector nodes for filesystem directories are expected to subclass. This is analogous to the existing :class:`pytest.File` for file nodes. Changed :class:`pytest.Package` to be a subclass of :class:`pytest.Directory`. A ``Package`` represents a filesystem directory which is a Python package, i.e. contains an ``__init__.py`` file. :class:`pytest.Package` now only collects files in its own directory; previously it collected recursively. Sub-directories are collected as their own collector nodes, which then collect themselves, thus creating a collection tree which mirrors the filesystem hierarchy. Added a new :class:`pytest.Dir` concrete collection node, a subclass of :class:`pytest.Directory`. This node represents a filesystem directory, which is not a :class:`pytest.Package`, that is, does not contain an ``__init__.py`` file. Similarly to ``Package``, it only collects the files in its own directory. :class:`pytest.Session` now only collects the initial arguments, without recursing into directories. This work is now done by the :func:`recursive expansion process <pytest.Collector.collect>` of directory collector nodes. :attr:`session.name <pytest.Session.name>` is now ``""``; previously it was the rootdir directory name. This matches :attr:`session.nodeid <_pytest.nodes.Node.nodeid>` which has always been `""`. The collection tree now contains directories/packages up to the :ref:`rootdir <rootdir>`, for initial arguments that are found within the rootdir. For files outside the rootdir, only the immediate directory/package is collected -- note however that collecting from outside the rootdir is discouraged. As an example, given the following filesystem tree:: myroot/ pytest.ini top/ ├── aaa │ └── test_aaa.py ├── test_a.py ├── test_b │ ├── __init__.py │ └── test_b.py ├── test_c.py └── zzz ├── __init__.py └── test_zzz.py the collection tree, as shown by `pytest --collect-only top/` but with the otherwise-hidden :class:`~pytest.Session` node added for clarity, is now the following:: <Session> <Dir myroot> <Dir top> <Dir aaa> <Module test_aaa.py> <Function test_it> <Module test_a.py> <Function test_it> <Package test_b> <Module test_b.py> <Function test_it> <Module test_c.py> <Function test_it> <Package zzz> <Module test_zzz.py> <Function test_it> Previously, it was:: <Session> <Module top/test_a.py> <Function test_it> <Module top/test_c.py> <Function test_it> <Module top/aaa/test_aaa.py> <Function test_it> <Package test_b> <Module test_b.py> <Function test_it> <Package zzz> <Module test_zzz.py> <Function test_it> Code/plugins which rely on a specific shape of the collection tree might need to update. - `11676 <https://github.com/pytest-dev/pytest/issues/11676>`_: The classes :class:`~_pytest.nodes.Node`, :class:`~pytest.Collector`, :class:`~pytest.Item`, :class:`~pytest.File`, :class:`~_pytest.nodes.FSCollector` are now marked abstract (see :mod:`abc`). We do not expect this change to affect users and plugin authors, it will only cause errors when the code is already wrong or problematic. Other breaking changes ^^^^^^^^^^^^^^^^^^^^^^ These are breaking changes where deprecation was not possible. - `11282 <https://github.com/pytest-dev/pytest/issues/11282>`_: Sanitized the handling of the ``default`` parameter when defining configuration options. Previously if ``default`` was not supplied for :meth:`parser.addini <pytest.Parser.addini>` and the configuration option value was not defined in a test session, then calls to :func:`config.getini <pytest.Config.getini>` returned an *empty list* or an *empty string* depending on whether ``type`` was supplied or not respectively, which is clearly incorrect. Also, ``None`` was not honored even if ``default=None`` was used explicitly while defining the option. Now the behavior of :meth:`parser.addini <pytest.Parser.addini>` is as follows: * If ``default`` is NOT passed but ``type`` is provided, then a type-specific default will be returned. For example ``type=bool`` will return ``False``, ``type=str`` will return ``""``, etc. * If ``default=None`` is passed and the option is not defined in a test session, then ``None`` will be returned, regardless of the ``type``. * If neither ``default`` nor ``type`` are provided, assume ``type=str`` and return ``""`` as default (this is as per previous behavior). The team decided to not introduce a deprecation period for this change, as doing so would be complicated both in terms of communicating this to the community as well as implementing it, and also because the team believes this change should not break existing plugins except in rare cases. - `11667 <https://github.com/pytest-dev/pytest/issues/11667>`_: pytest's ``setup.py`` file is removed. If you relied on this file, e.g. to install pytest using ``setup.py install``, please see `Why you shouldn't invoke setup.py directly <https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html#summary>`_ for alternatives. - `9288 <https://github.com/pytest-dev/pytest/issues/9288>`_: :func:`~pytest.warns` now re-emits unmatched warnings when the context closes -- previously it would consume all warnings, hiding those that were not matched by the function. While this is a new feature, we announce it as a breaking change because many test suites are configured to error-out on warnings, and will therefore fail on the newly-re-emitted warnings. - The internal ``FixtureManager.getfixtureclosure`` method has changed. Plugins which use this method or which subclass ``FixtureManager`` and overwrite that method will need to adapt to the change. Deprecations ------------ - `10465 <https://github.com/pytest-dev/pytest/issues/10465>`_: Test functions returning a value other than ``None`` will now issue a :class:`pytest.PytestWarning` instead of ``pytest.PytestRemovedIn8Warning``, meaning this will stay a warning instead of becoming an error in the future. - `3664 <https://github.com/pytest-dev/pytest/issues/3664>`_: Applying a mark to a fixture function now issues a warning: marks in fixtures never had any effect, but it is a common user error to apply a mark to a fixture (for example ``usefixtures``) and expect it to work. This will become an error in pytest 9.0. Features and Improvements ------------------------- Improved Diffs ^^^^^^^^^^^^^^ These changes improve the diffs that pytest prints when an assertion fails. Note that syntax highlighting requires the ``pygments`` package. - `11520 <https://github.com/pytest-dev/pytest/issues/11520>`_: The very verbose (``-vv``) diff output is now colored as a diff instead of a big chunk of red. Python code in error reports is now syntax-highlighted as Python. The sections in the error reports are now better separated. - `1531 <https://github.com/pytest-dev/pytest/issues/1531>`_: The very verbose diff (``-vv``) for every standard library container type is improved. The indentation is now consistent and the markers are on their own separate lines, which should reduce the diffs shown to users. Previously, the standard Python pretty printer was used to generate the output, which puts opening and closing markers on the same line as the first/last entry, in addition to not having consistent indentation. - `10617 <https://github.com/pytest-dev/pytest/issues/10617>`_: Added more comprehensive set assertion rewrites for comparisons other than equality ``==``, with the following operations now providing better failure messages: ``!=``, ``<=``, ``>=``, ``<``, and ``>``. Separate Control For Assertion Verbosity ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - `11387 <https://github.com/pytest-dev/pytest/issues/11387>`_: Added the new :confval:`verbosity_assertions` configuration option for fine-grained control of failed assertions verbosity. If you've ever wished that pytest always show you full diffs, but without making everything else verbose, this is for you. See :ref:`Fine-grained verbosity <pytest.fine_grained_verbosity>` for more details. For plugin authors, :attr:`config.get_verbosity <pytest.Config.get_verbosity>` can be used to retrieve the verbosity level for a specific verbosity type. Additional Support For Exception Groups and ``__notes__`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ These changes improve pytest's support for exception groups. - `10441 <https://github.com/pytest-dev/pytest/issues/10441>`_: Added :func:`ExceptionInfo.group_contains() <pytest.ExceptionInfo.group_contains>`, an assertion helper that tests if an :class:`ExceptionGroup` contains a matching exception. See :ref:`assert-matching-exception-groups` for an example. - `11227 <https://github.com/pytest-dev/pytest/issues/11227>`_: Allow :func:`pytest.raises` ``match`` argument to match against `PEP-678 <https://peps.python.org/pep-0678/>` ``__notes__``. Custom Directory collectors ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - `7777 <https://github.com/pytest-dev/pytest/issues/7777>`_: Added a new hook :hook:`pytest_collect_directory`, which is called by filesystem-traversing collector nodes, such as :class:`pytest.Session`, :class:`pytest.Dir` and :class:`pytest.Package`, to create a collector node for a sub-directory. It is expected to return a subclass of :class:`pytest.Directory`. This hook allows plugins to :ref:`customize the collection of directories <custom directory collectors>`. "New-style" Hook Wrappers ^^^^^^^^^^^^^^^^^^^^^^^^^ - `11122 <https://github.com/pytest-dev/pytest/issues/11122>`_: pytest now uses "new-style" hook wrappers internally, available since pluggy 1.2.0. See `pluggy's 1.2.0 changelog <https://pluggy.readthedocs.io/en/latest/changelog.html#pluggy-1-2-0-2023-06-21>`_ and the :ref:`updated docs <hookwrapper>` for details. Plugins which want to use new-style wrappers can do so if they require ``pytest>=8``. Other Improvements ^^^^^^^^^^^^^^^^^^ - `11216 <https://github.com/pytest-dev/pytest/issues/11216>`_: If a test is skipped from inside an :ref:`xunit setup fixture <classic xunit>`, the test summary now shows the test location instead of the fixture location. - `11314 <https://github.com/pytest-dev/pytest/issues/11314>`_: Logging to a file using the ``--log-file`` option will use ``--log-level``, ``--log-format`` and ``--log-date-format`` as fallback if ``--log-file-level``, ``--log-file-format`` and ``--log-file-date-format`` are not provided respectively. - `11610 <https://github.com/pytest-dev/pytest/issues/11610>`_: Added the :func:`LogCaptureFixture.filtering() <pytest.LogCaptureFixture.filtering>` context manager which adds a given :class:`logging.Filter` object to the :fixture:`caplog` fixture. - `11447 <https://github.com/pytest-dev/pytest/issues/11447>`_: :func:`pytest.deprecated_call` now also considers warnings of type :class:`FutureWarning`. - `11600 <https://github.com/pytest-dev/pytest/issues/11600>`_: Improved the documentation and type signature for :func:`pytest.mark.xfail <pytest.mark.xfail>`'s ``condition`` param to use ``False`` as the default value. - `7469 <https://github.com/pytest-dev/pytest/issues/7469>`_: :class:`~pytest.FixtureDef` is now exported as ``pytest.FixtureDef`` for typing purposes. - `11353 <https://github.com/pytest-dev/pytest/issues/11353>`_: Added typing to :class:`~pytest.PytestPluginManager`. Bug Fixes --------- - `10701 <https://github.com/pytest-dev/pytest/issues/10701>`_: :meth:`pytest.WarningsRecorder.pop` will return the most-closely-matched warning in the list, rather than the first warning which is an instance of the requested type. - `11255 <https://github.com/pytest-dev/pytest/issues/11255>`_: Fixed crash on `parametrize(..., scope="package")` without a package present. - `11277 <https://github.com/pytest-dev/pytest/issues/11277>`_: Fixed a bug that when there are multiple fixtures for an indirect parameter, the scope of the highest-scope fixture is picked for the parameter set, instead of that of the one with the narrowest scope. - `11456 <https://github.com/pytest-dev/pytest/issues/11456>`_: Parametrized tests now *really do* ensure that the ids given to each input are unique - for example, ``a, a, a0`` now results in ``a1, a2, a0`` instead of the previous (buggy) ``a0, a1, a0``. This necessarily means changing nodeids where these were previously colliding, and for readability adds an underscore when non-unique ids end in a number. - `11563 <https://github.com/pytest-dev/pytest/issues/11563>`_: Fixed a crash when using an empty string for the same parametrized value more than once. - `11712 <https://github.com/pytest-dev/pytest/issues/11712>`_: Fixed handling ``NO_COLOR`` and ``FORCE_COLOR`` to ignore an empty value. - `9036 <https://github.com/pytest-dev/pytest/issues/9036>`_: ``pytest.warns`` and similar functions now capture warnings when an exception is raised inside a ``with`` block. Improved Documentation ---------------------- - `11011 <https://github.com/pytest-dev/pytest/issues/11011>`_: Added a warning about modifying the root logger during tests when using ``caplog``. - `11065 <https://github.com/pytest-dev/pytest/issues/11065>`_: Use ``pytestconfig`` instead of ``request.config`` in cache example to be consistent with the API documentation. Trivial/Internal Changes ------------------------ - `11208 <https://github.com/pytest-dev/pytest/issues/11208>`_: The (internal) ``FixtureDef.cached_result`` type has changed. Now the third item ``cached_result[2]``, when set, is an exception instance instead of an exception triplet. - `11218 <https://github.com/pytest-dev/pytest/issues/11218>`_: (This entry is meant to assist plugins which access private pytest internals to instantiate ``FixtureRequest`` objects.) :class:`~pytest.FixtureRequest` is now an abstract class which can't be instantiated directly. A new concrete ``TopRequest`` subclass of ``FixtureRequest`` has been added for the ``request`` fixture in test functions, as counterpart to the existing ``SubRequest`` subclass for the ``request`` fixture in fixture functions. - `11315 <https://github.com/pytest-dev/pytest/issues/11315>`_: The :fixture:`pytester` fixture now uses the :fixture:`monkeypatch` fixture to manage the current working directory. If you use ``pytester`` in combination with :func:`monkeypatch.undo() <pytest.MonkeyPatch.undo>`, the CWD might get restored. Use :func:`monkeypatch.context() <pytest.MonkeyPatch.context>` instead. - `11333 <https://github.com/pytest-dev/pytest/issues/11333>`_: Corrected the spelling of ``Config.ArgsSource.INVOCATION_DIR``. The previous spelling ``INCOVATION_DIR`` remains as an alias. - `11638 <https://github.com/pytest-dev/pytest/issues/11638>`_: Fixed the selftests to pass correctly if ``FORCE_COLOR``, ``NO_COLOR`` or ``PY_COLORS`` is set in the calling environment. ``` ### 7.4.4 ``` ========================= Bug Fixes --------- - `11140 <https://github.com/pytest-dev/pytest/issues/11140>`_: Fix non-string constants at the top of file being detected as docstrings on Python>=3.8. - `11572 <https://github.com/pytest-dev/pytest/issues/11572>`_: Handle an edge case where :data:`sys.stderr` and :data:`sys.__stderr__` might already be closed when :ref:`faulthandler` is tearing down. - `11710 <https://github.com/pytest-dev/pytest/issues/11710>`_: Fixed tracebacks from collection errors not getting pruned. - `7966 <https://github.com/pytest-dev/pytest/issues/7966>`_: Removed unhelpful error message from assertion rewrite mechanism when exceptions are raised in ``__iter__`` methods. Now they are treated un-iterable instead. Improved Documentation ---------------------- - `11091 <https://github.com/pytest-dev/pytest/issues/11091>`_: Updated documentation to refer to hyphenated options: replaced ``--junitxml`` with ``--junit-xml`` and ``--collectonly`` with ``--collect-only``. ``` ### 7.4.3 ``` ========================= Bug Fixes --------- - `10447 <https://github.com/pytest-dev/pytest/issues/10447>`_: Markers are now considered in the reverse mro order to ensure base class markers are considered first -- this resolves a regression. - `11239 <https://github.com/pytest-dev/pytest/issues/11239>`_: Fixed ``:=`` in asserts impacting unrelated test cases. - `11439 <https://github.com/pytest-dev/pytest/issues/11439>`_: Handled an edge case where :data:`sys.stderr` might already be closed when :ref:`faulthandler` is tearing down. ``` ### 7.4.2 ``` ========================= Bug Fixes --------- - `11237 <https://github.com/pytest-dev/pytest/issues/11237>`_: Fix doctest collection of `functools.cached_property` objects. - `11306 <https://github.com/pytest-dev/pytest/issues/11306>`_: Fixed bug using ``--importmode=importlib`` which would cause package ``__init__.py`` files to be imported more than once in some cases. - `11367 <https://github.com/pytest-dev/pytest/issues/11367>`_: Fixed bug where `user_properties` where not being saved in the JUnit XML file if a fixture failed during teardown. - `11394 <https://github.com/pytest-dev/pytest/issues/11394>`_: Fixed crash when parsing long command line arguments that might be interpreted as files. Improved Documentation ---------------------- - `11391 <https://github.com/pytest-dev/pytest/issues/11391>`_: Improved disclaimer on pytest plugin reference page to better indicate this is an automated, non-curated listing. ``` ### 7.4.1 ``` ========================= Bug Fixes --------- - `10337 <https://github.com/pytest-dev/pytest/issues/10337>`_: Fixed bug where fake intermediate modules generated by ``--import-mode=importlib`` would not include the child modules as attributes of the parent modules. - `10702 <https://github.com/pytest-dev/pytest/issues/10702>`_: Fixed error assertion handling in :func:`pytest.approx` when ``None`` is an expected or received value when comparing dictionaries. - `10811 <https://github.com/pytest-dev/pytest/issues/10811>`_: Fixed issue when using ``--import-mode=importlib`` together with ``--doctest-modules`` that caused modules to be imported more than once, causing problems with modules that have import side effects. ``` ### 7.4.0 ``` ========================= Features -------- - `10901 <https://github.com/pytest-dev/pytest/issues/10901>`_: Added :func:`ExceptionInfo.from_exception() <pytest.ExceptionInfo.from_exception>`, a simpler way to create an :class:`~pytest.ExceptionInfo` from an exception. This can replace :func:`ExceptionInfo.from_exc_info() <pytest.ExceptionInfo.from_exc_info()>` for most uses. Improvements ------------ - `10872 <https://github.com/pytest-dev/pytest/issues/10872>`_: Update test log report annotation to named tuple and fixed inconsistency in docs for :hook:`pytest_report_teststatus` hook. - `10907 <https://github.com/pytest-dev/pytest/issues/10907>`_: When an exception traceback to be displayed is completely filtered out (by mechanisms such as ``__tracebackhide__``, internal frames, and similar), now only the exception string and the following message are shown: "All traceback entries are hidden. Pass `--full-trace` to see hidden and internal frames.". Previously, the last frame of the traceback was shown, even though it was hidden. - `10940 <https://github.com/pytest-dev/pytest/issues/10940>`_: Improved verbose output (``-vv``) of ``skip`` and ``xfail`` reasons by performing text wrapping while leaving a clear margin for progress output. Added ``TerminalReporter.wrap_write()`` as a helper for that. - `10991 <https://github.com/pytest-dev/pytest/issues/10991>`_: Added handling of ``%f`` directive to print microseconds in log format options, such as ``log-date-format``. - `11005 <https://github.com/pytest-dev/pytest/issues/11005>`_: Added the underlying exception to the cache provider's path creation and write warning messages. - `11013 <https://github.com/pytest-dev/pytest/issues/11013>`_: Added warning when :confval:`testpaths` is set, but paths are not found by glob. In this case, pytest will fall back to searching from the current directory. - `11043 <https://github.com/pytest-dev/pytest/issues/11043>`_: When `--confcutdir` is not specified, and there is no config file present, the conftest cutoff directory (`--confcutdir`) is now set to the :ref:`rootdir <rootdir>`. Previously in such cases, `conftest.py` files would be probed all the way to the root directory of the filesystem. If you are badly affected by this change, consider adding an empty config file to your desired cutoff directory, or explicitly set `--confcutdir`. - `11081 <https://github.com/pytest-dev/pytest/issues/11081>`_: The :confval:`norecursedirs` check is now performed in a :hook:`pytest_ignore_collect` implementation, so plugins can affect it. If after updating to this version you see that your `norecursedirs` setting is not being respected, it means that a conftest or a plugin you use has a bad `pytest_ignore_collect` implementation. Most likely, your hook returns `False` for paths it does not want to ignore, which ends the processing and doesn't allow other plugins, including pytest itself, to ignore the path. The fix is to return `None` instead of `False` for paths your hook doesn't want to ignore. - `8711 <https://github.com/pytest-dev/pytest/issues/8711>`_: :func:`caplog.set_level() <pytest.LogCaptureFixture.set_level>` and :func:`caplog.at_level() <pytest.LogCaptureFixture.at_level>` will temporarily enable the requested ``level`` if ``level`` was disabled globally via ``logging.disable(LEVEL)``. Bug Fixes --------- - `10831 <https://github.com/pytest-dev/pytest/issues/10831>`_: Terminal Reporting: Fixed bug when running in ``--tb=line`` mode where ``pytest.fail(pytrace=False)`` tests report ``None``. - `11068 <https://github.com/pytest-dev/pytest/issues/11068>`_: Fixed the ``--last-failed`` whole-file skipping functionality ("skipped N files") for :ref:`non-python test files <non-python tests>`. - `11104 <https://github.com/pytest-dev/pytest/issues/11104>`_: Fixed a regression in pytest 7.3.2 which caused to :confval:`testpaths` to be considered for loading initial conftests, even when it was not utilized (e.g. when explicit paths were given on the command line). Now the ``testpaths`` are only considered when they are in use. - `1904 <https://github.com/pytest-dev/pytest/issues/1904>`_: Fixed traceback entries hidden with ``__tracebackhide__ = True`` still being shown for chained exceptions (parts after "... the above exception ..." message). - `7781 <https://github.com/pytest-dev/pytest/issues/7781>`_: Fix writing non-encodable text to log file when using ``--debug``. Improved Documentation ---------------------- - `9146 <https://github.com/pytest-dev/pytest/issues/9146>`_: Improved documentation for :func:`caplog.set_level() <pytest.LogCaptureFixture.set_level>`. Trivial/Internal Changes ------------------------ - `11031 <https://github.com/pytest-dev/pytest/issues/11031>`_: Enhanced the CLI flag for ``-c`` to now include ``--config-file`` to make it clear that this flag applies to the usage of a custom config file. ``` ### 7.3.2 ``` ========================= Bug Fixes --------- - `10169 <https://github.com/pytest-dev/pytest/issues/10169>`_: Fix bug where very long option names could cause pytest to break with ``OSError: [Errno 36] File name too long`` on some systems. - `10894 <https://github.com/pytest-dev/pytest/issues/10894>`_: Support for Python 3.12 (beta at the time of writing). - `10987 <https://github.com/pytest-dev/pytest/issues/10987>`_: :confval:`testpaths` is now honored to load root ``conftests``. - `10999 <https://github.com/pytest-dev/pytest/issues/10999>`_: The `monkeypatch` `setitem`/`delitem` type annotations now allow `TypedDict` arguments. - `11028 <https://github.com/pytest-dev/pytest/issues/11028>`_: Fixed bug in assertion rewriting where a variable assigned with the walrus operator could not be used later in a function call. - `11054 <https://github.com/pytest-dev/pytest/issues/11054>`_: Fixed ``--last-failed``'s "(skipped N files)" functionality for files inside of packages (directories with `__init__.py` files). ``` ### 7.3.1 ``` ========================= Improvements ------------ - `10875 <https://github.com/pytest-dev/pytest/issues/10875>`_: Python 3.12 support: fixed ``RuntimeError: TestResult has no addDuration method`` when running ``unittest`` tests. - `10890 <https://github.com/pytest-dev/pytest/issues/10890>`_: Python 3.12 support: fixed ``shutil.rmtree(onerror=...)`` deprecation warning when using :fixture:`tmp_path`. Bug Fixes --------- - `10896 <https://github.com/pytest-dev/pytest/issues/10896>`_: Fixed performance regression related to :fixture:`tmp_path` and the new :confval:`tmp_path_retention_policy` option. - `10903 <https://github.com/pytest-dev/pytest/issues/10903>`_: Fix crash ``INTERNALERROR IndexError: list index out of range`` which happens when displaying an exception where all entries are hidden. This reverts the change "Correctly handle ``__tracebackhide__`` for chained exceptions." introduced in version 7.3.0. ``` ### 7.3.0 ``` ========================= Features -------- - `10525 <https://github.com/pytest-dev/pytest/issues/10525>`_: Test methods decorated with ``classmethod`` can now be discovered as tests, following the same rules as normal methods. This fills the gap that static methods were discoverable as tests but not class methods. - `10755 <https://github.com/pytest-dev/pytest/issues/10755>`_: :confval:`console_output_style` now supports ``progress-even-when-capture-no`` to force the use of the progress output even when capture is disabled. This is useful in large test suites where capture may have significant performance impact. - `7431 <https://github.com/pytest-dev/pytest/issues/7431>`_: ``--log-disable`` CLI option added to disable individual loggers. - `8141 <https://github.com/pytest-dev/pytest/issues/8141>`_: Added :confval:`tmp_path_retention_count` and :confval:`tmp_path_retention_policy` configuration options to control how directories created by the :fixture:`tmp_path` fixture are kept. Improvements ------------ - `10226 <https://github.com/pytest-dev/pytest/issues/10226>`_: If multiple errors are raised in teardown, we now re-raise an ``ExceptionGroup`` of them instead of discarding all but the last. - `10658 <https://github.com/pytest-dev/pytest/issues/10658>`_: Allow ``-p`` arguments to include spaces (eg: ``-p no:logging`` instead of ``-pno:logging``). Mostly useful in the ``addopts`` section of the configuration file. - `10710 <https://github.com/pytest-dev/pytest/issues/10710>`_: Added ``start`` and ``stop`` timestamps to ``TestReport`` objects. - `10727 <https://github.com/pytest-dev/pytest/issues/10727>`_: Split the report header for ``rootdir``, ``config file`` and ``testpaths`` so each has its own line. - `10840 <https://github.com/pytest-dev/pytest/issues/10840>`_: pytest should no longer crash on AST with pathological position attributes, for example testing AST produced by `Hylang <https://github.com/hylang/hy>__`. - `6267 <https://github.com/pytest-dev/pytest/issues/6267>`_: The full output of a test is no longer truncated if the truncation message would be longer than the hidden text. The line number shown has also been fixed. Bug Fixes --------- - `10743 <https://github.com/pytest-dev/pytest/issues/10743>`_: The assertion rewriting mechanism now works correctly when assertion expressions contain the walrus operator. - `10765 <https://github.com/pytest-dev/pytest/issues/10765>`_: Fixed :fixture:`tmp_path` fixture always raising :class:`OSError` on ``emscripten`` platform due to missing :func:`os.getuid`. - `1904 <https://github.com/pytest-dev/pytest/issues/1904>`_: Correctly handle ``__tracebackhide__`` for chained exceptions. NOTE: This change was reverted in version 7.3.1. Improved Documentation ---------------------- - `10782 <https://github.com/pytest-dev/pytest/issues/10782>`_: Fixed the minimal example in :ref:`goodpractices`: ``pip install -e .`` requires a ``version`` entry in ``pyproject.toml`` to run successfully. Trivial/Internal Changes ------------------------ - `10669 <https://github.com/pytest-dev/pytest/issues/10669>`_: pytest no longer directly depends on the `attrs <https://www.attrs.org/en/stable/>`__ package. While we at pytest all love the package dearly and would like to thank the ``attrs`` team for many years of cooperation and support, it makes sense for ``pytest`` to have as little external dependencies as possible, as this helps downstream projects. With that in mind, we have replaced the pytest's limited internal usage to use the standard library's ``dataclasses`` instead. Nice diffs for ``attrs`` classes are still supported though. ``` ### 7.2.2 ``` ========================= Bug Fixes --------- - `10533 <https://github.com/pytest-dev/pytest/issues/10533>`_: Fixed :func:`pytest.approx` handling of dictionaries containing one or more values of `0.0`. - `10592 <https://github.com/pytest-dev/pytest/issues/10592>`_: Fixed crash if `--cache-show` and `--help` are passed at the same time. - `10597 <https://github.com/pytest-dev/pytest/issues/10597>`_: Fixed bug where a fixture method named ``teardown`` would be called as part of ``nose`` teardown stage. - `10626 <https://github.com/pytest-dev/pytest/issues/10626>`_: Fixed crash if ``--fixtures`` and ``--help`` are passed at the same time. - `10660 <https://github.com/pytest-dev/pytest/issues/10660>`_: Fixed :py:func:`pytest.raises` to return a 'ContextManager' so that type-checkers could narrow :code:`pytest.raises(...) if ... else nullcontext()` down to 'ContextManager' rather than 'object'. Improved Documentation ---------------------- - `10690 <https://github.com/pytest-dev/pytest/issues/10690>`_: Added `CI` and `BUILD_NUMBER` environment variables to the documentation. - `10721 <https://github.com/pytest-dev/pytest/issues/10721>`_: Fixed entry-points declaration in the documentation example using Hatch. - `10753 <https://github.com/pytest-dev/pytest/issues/10753>`_: Changed wording of the module level skip to be very explicit about not collecting tests and not executing the rest of the module. ``` ### 7.2.1 ``` ========================= Bug Fixes --------- - `10452 <https://github.com/pytest-dev/pytest/issues/10452>`_: Fix 'importlib.abc.TraversableResources' deprecation warning in Python 3.12. - `10457 <https://github.com/pytest-dev/pytest/issues/10457>`_: If a test is skipped from inside a fixture, the test summary now shows the test location instead of the fixture location. - `10506 <https://github.com/pytest-dev/pytest/issues/10506>`_: Fix bug where sometimes pytest would use the file system root directory as :ref:`rootdir <rootdir>` on Windows. - `10607 <https://github.com/pytest-dev/pytest/issues/10607>`_: Fix a race condition when creating junitxml reports, which could occur when multiple instances of pytest execute in parallel. - `10641 <https://github.com/pytest-dev/pytest/issues/10641>`_: Fix a race condition when creating or updating the stepwise plugin's cache, which could occur when multiple xdist worker nodes try to simultaneously update the stepwise plugin's cache. ``` ### 7.2.0 ``` ========================= Deprecations ------------ - `10012 <https://github.com/pytest-dev/pytest/issues/10012>`_: Update :class:`pytest.PytestUnhandledCoroutineWarning` to a deprecation; it will raise an error in pytest 8. - `10396 <https://github.com/pytest-dev/pytest/issues/10396>`_: pytest no longer depends on the ``py`` library. ``pytest`` provides a vendored copy of ``py.error`` and ``py.path`` modules but will use the ``py`` library if it is installed. If you need other ``py.*`` modules, continue to install the deprecated ``py`` library separately, otherwise it can usually be removed as a dependency. - `4562 <https://github.com/pytest-dev/pytest/issues/4562>`_: Deprecate configuring hook specs/impls using attributes/marks. Instead use :py:func:`pytest.hookimpl` and :py:func:`pytest.hookspec`. For more details, see the :ref:`docs <legacy-path-hooks-deprecated>`. - `9886 <https://github.com/pytest-dev/pytest/issues/9886>`_: The functionality for running tests written for ``nose`` has been officially deprecated. This includes: * Plain ``setup`` and ``teardown`` functions and methods: this might catch users by surprise, as ``setup()`` and ``teardown()`` are not pytest idioms, but part of the ``nose`` support. * Setup/teardown using the `with_setup <with-setup-nose>`_ decorator. For more details, consult the :ref:`deprecation docs <nose-deprecation>`. .. _`with-setup-nose`: https://nose.readthedocs.io/en/latest/testing_tools.html?highlight=with_setup#nose.tools.with_setup - `7337 <https://github.com/pytest-dev/pytest/issues/7337>`_: A deprecation warning is now emitted if a test function returns something other than `None`. This prevents a common mistake among beginners that expect that returning a `bool` (for example `return foo(a, b) == result`) would cause a test to pass or fail, instead of using `assert`. The plan is to make returning non-`None` from tests an error in the future. Features -------- - `9897 <https://github.com/pytest-dev/pytest/issues/9897>`_: Added shell-style wildcard support to ``testpaths``. Improvements ------------ - `10218 <https://github.com/pytest-dev/pytest/issues/10218>`_: ``pytest.mark.parametrize()`` (and similar functions) now accepts any ``Sequence[str]`` for the argument names, instead of just ``list[str]`` and ``tuple[str, ...]``. (Note that ``str``, which is itself a ``Sequence[str]``, is still treated as a comma-delimited name list, as before). - `10381 <https://github.com/pytest-dev/pytest/issues/10381>`_: The ``--no-showlocals`` flag has been added. This can be passed directly to tests to override ``--showlocals`` declared through ``addopts``. - `3426 <https://github.com/pytest-dev/pytest/issues/3426>`_: Assertion failures with strings in NFC and NFD forms that normalize to the same string now have a dedicated error message detailing the issue, and their utf-8 representation is expressed instead. - `8508 <https://github.com/pytest-dev/pytest/issues/8508>`_: Introduce multiline display for warning matching via :py:func:`pytest.warns` and enhance match comparison for :py:func:`pytest.ExceptionInfo.match` as returned by :py:func:`pytest.raises`. - `8646 <https://github.com/pytest-dev/pytest/issues/8646>`_: Improve :py:func:`pytest.raises`. Previously passing an empty tuple would give a confusing error. We now raise immediately with a more helpful message. - `9741 <https://github.com/pytest-dev/pytest/issues/9741>`_: On Python 3.11, use the standard library's :mod:`tomllib` to parse TOML. `tomli` is no longer a dependency on Python 3.11. - `9742 <https://github.com/pytest-dev/pytest/issues/9742>`_: Display assertion message without escaped newline characters with ``-vv``. - `9823 <https://github.com/pytest-dev/pytest/issues/9823>`_: Improved error message that is shown when no collector is found for a given file. - `9873 <https://github.com/pytest-dev/pytest/issues/9873>`_: Some coloring has been added to the short test summary. - `9883 <https://github.com/pytest-dev/pytest/issues/9883>`_: Normalize the help description of all command-line options. - `9920 <https://github.com/pytest-dev/pytest/issues/9920>`_: Display full crash messages in ``short test summary info``, when running in a CI environment. - `9987 <https://github.com/pytest-dev/pytest/issues/9987>`_: Added support for hidden configuration file by allowing ``.pytest.ini`` as an alternative to ``pytest.ini``. Bug Fixes --------- - `10150 <https://github.com/pytest-dev/pytest/issues/10150>`_: :data:`sys.stdin` now contains all expected methods of a file-like object when capture is enabled. - `10382 <https://github.com/pytest-dev/pytest/issues/10382>`_: Do not break into pdb when ``raise unittest.SkipTest()`` appears top-level in a file. - `7792 <https://github.com/pytest-dev/pytest/issues/7792>`_: Marks are now inherited according to the full MRO in test classes. Previously, if a test class inherited from two or more classes, only marks from the first super-class would apply. When inheriting marks from super-classes, marks from the sub-classes are now ordered before marks from the super-classes, in MRO order. Previously it was the reverse. When inheriting marks from super-classes, the `pytestmark` attribute of the sub-class now only contains the marks directly applied to it. Previously, it also contained marks from its super-classes. Please note that this attribute should not normally be accessed directly; use :func:`Node.iter_markers <_pytest.nodes.Node.iter_markers>` instead. - `9159 <https://github.com/pytest-dev/pytest/issues/9159>`_: Showing inner exceptions by forcing native display in ``ExceptionGroups`` even when using display options other than ``--tb=native``. A temporary step before full implementation of pytest-native display for inner exceptions in ``ExceptionGroups``. - `9877 <https://github.com/pytest-dev/pytest/issues/9877>`_: Ensure ``caplog.get_records(when)`` returns current/correct data after invoking ``caplog.clear()``. Improved Documentation ---------------------- - `10344 <https://github.com/pytest-dev/pytest/issues/10344>`_: Update information on writing plugins to use ``pyproject.toml`` instead of ``setup.py``. - `9248 <https://github.com/pytest-dev/pytest/issues/9248>`_: The documentation is now built using Sphinx 5.x (up from 3.x previously). - `9291 <https://github.com/pytest-dev/pytest/issues/9291>`_: Update documentation on how :func:`pytest.warns` affects :class:`DeprecationWarning`. Trivial/Internal Changes ------------------------ - `10313 <https://github.com/pytest-dev/pytest/issues/10313>`_: Made ``_pytest.doctest.DoctestItem`` export ``pytest.DoctestItem`` for type check and runtime purposes. Made `_pytest.doctest` use internal APIs to avoid circular imports. - `9906 <https://github.com/pytest-dev/pytest/issues/9906>`_: Made ``_pytest.compat`` re-export ``importlib_metadata`` in the eyes of type checkers. - `9910 <https://github.com/pytest-dev/pytest/issues/9910>`_: Fix default encoding warning (``EncodingWarning``) in ``cacheprovider`` - `9984 <https://github.com/pytest-dev/pytest/issues/9984>`_: Improve the error message when we attempt to access a fixture that has been torn down. Add an additional sentence to the docstring explaining when it's not a good idea to call ``getfixturevalue``. ``` ### 7.1.3 ``` ========================= Bug Fixes --------- - `10060 <https://github.com/pytest-dev/pytest/issues/10060>`_: When running with ``--pdb``, ``TestCase.tearDown`` is no longer called for tests when the *class* has been skipped via ``unittest.skip`` or ``pytest.mark.skip``. - `10190 <https://github.com/pytest-dev/pytest/issues/10190>`_: Invalid XML characters in setup or teardown error messages are now properly escaped for JUnit XML reports. - `10230 <https://github.com/pytest-dev/pytest/issues/10230>`_: Ignore ``.py`` files created by ``pyproject.toml``-based editable builds introduced in `pip 21.3 <https://pip.pypa.io/en/stable/news/#v21-3>`__. - `3396 <https://github.com/pytest-dev/pytest/issues/3396>`_: Doctests now respect the ``--import-mode`` flag. - `9514 <https://github.com/pytest-dev/pytest/issues/9514>`_: Type-annotate ``FixtureRequest.param`` as ``Any`` as a stop gap measure until :issue:`8073` is fixed. - `9791 <https://github.com/pytest-dev/pytest/issues/9791>`_: Fixed a path handling code in ``rewrite.py`` that seems to work fine, but was incorrect and fails in some systems. - `9917 <https://github.com/pytest-dev/pytest/issues/9917>`_: Fixed string representation for :func:`pytest.approx` when used to compare tuples. Improved Documentation ---------------------- - `9937 <https://github.com/pytest-dev/pytest/issues/9937>`_: Explicit note that :fixture:`tmpdir` fixture is discouraged in favour of :fixture:`tmp_path`. Trivial/Internal Changes ------------------------ - `10114 <https://github.com/pytest-dev/pytest/issues/10114>`_: Replace `atomicwrites <https://github.com/untitaker/python-atomicwrites>`__ dependency on windows with `os.replace`. ```Links
- PyPI: https://pypi.org/project/pytest - Changelog: https://data.safetycli.com/changelogs/pytest/ - Homepage: https://docs.pytest.org/en/latest/Update skia-python from 87.4 to 87.5.
Changelog
### 87.5 ``` What's Changed * Fix windows install command by jamesgk in https://github.com/kyamagu/skia-python/pull/180 * Build wheels for Python 3.11 (fixes 182) by lucach in https://github.com/kyamagu/skia-python/pull/183 New Contributors * jamesgk made their first contribution in https://github.com/kyamagu/skia-python/pull/180 * lucach made their first contribution in https://github.com/kyamagu/skia-python/pull/183 **Full Changelog**: https://github.com/kyamagu/skia-python/compare/v87.4...v87.5 ```Links
- PyPI: https://pypi.org/project/skia-python - Changelog: https://data.safetycli.com/changelogs/skia-python/ - Repo: https://github.com/kyamagu/skia-pythonUpdate numpy from 1.23.2 to 1.26.4.
Changelog
### 1.26.4 ``` discovered after the 1.26.3 release. The Python versions supported by this release are 3.9-3.12. This is the last planned release in the 1.26.x series. Contributors A total of 13 people contributed to this release. People with a \"+\" by their names contributed a patch for the first time. - Charles Harris - Elliott Sales de Andrade - Lucas Colley + - Mark Ryan + - Matti Picus - Nathan Goldbaum - Ola x Nilsson + - Pieter Eendebak - Ralf Gommers - Sayed Adel - Sebastian Berg - Stefan van der Walt - Stefano Rivera Pull requests merged A total of 19 pull requests were merged for this release. - [25323](https://github.com/numpy/numpy/pull/25323): BUG: Restore missing asstr import - [25523](https://github.com/numpy/numpy/pull/25523): MAINT: prepare 1.26.x for further development - [25539](https://github.com/numpy/numpy/pull/25539): BUG: `numpy.array_api`: fix `linalg.cholesky` upper decomp\... - [25584](https://github.com/numpy/numpy/pull/25584): CI: Bump azure pipeline timeout to 120 minutes - [25585](https://github.com/numpy/numpy/pull/25585): MAINT, BLD: Fix unused inline functions warnings on clang - [25599](https://github.com/numpy/numpy/pull/25599): BLD: include fix for MinGW platform detection - [25618](https://github.com/numpy/numpy/pull/25618): TST: Fix test_numeric on riscv64 - [25619](https://github.com/numpy/numpy/pull/25619): BLD: fix building for windows ARM64 - [25620](https://github.com/numpy/numpy/pull/25620): MAINT: add `newaxis` to `__all__` in `numpy.array_api` - [25630](https://github.com/numpy/numpy/pull/25630): BUG: Use large file fallocate on 32 bit linux platforms - [25643](https://github.com/numpy/numpy/pull/25643): TST: Fix test_warning_calls on Python 3.12 - [25645](https://github.com/numpy/numpy/pull/25645): TST: Bump pytz to 2023.3.post1 - [25658](https://github.com/numpy/numpy/pull/25658): BUG: Fix AVX512 build flags on Intel Classic Compiler - [25670](https://github.com/numpy/numpy/pull/25670): BLD: fix potential issue with escape sequences in `__config__.py` - [25718](https://github.com/numpy/numpy/pull/25718): CI: pin cygwin python to 3.9.16-1 and fix typing tests \[skip\... - [25720](https://github.com/numpy/numpy/pull/25720): MAINT: Bump cibuildwheel to v2.16.4 - [25748](https://github.com/numpy/numpy/pull/25748): BLD: unvendor meson-python on 1.26.x and upgrade to meson-python\... - [25755](https://github.com/numpy/numpy/pull/25755): MAINT: Include header defining backtrace - [25756](https://github.com/numpy/numpy/pull/25756): BUG: Fix np.quantile(\[Fraction(2,1)\], 0.5) (#24711) Checksums MD5 90f33cdd8934cd07192d6ede114d8d4d numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl 63ac60767f6724490e587f6010bd6839 numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl ad4e82b225aaaf5898ea9798b50978d8 numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl d428e3da2df4fa359313348302cf003a numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 89937c3bb596193f8ca9eae2ff84181e numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl de4f9da0a4e6dfd4cec39c7ad5139803 numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl 2c1f73fd9b3acf4b9b0c23e985cdd38f numpy-1.26.4-cp310-cp310-win32.whl 920ad1f50e478b1a877fe7b7a46cc520 numpy-1.26.4-cp310-cp310-win_amd64.whl 719d1ff12db38903dcfd6749078fb11d numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl eb601e80194d2e1c00d8daedd8dc68c4 numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl 71a7ab11996fa370dc28e28731bd5c32 numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl eb0cdd03e1ee2eb45c57c7340c98cf48 numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 9d4ae1b0b27a625400f81ed1846a5667 numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl 1b6771350d2f496157430437a895ba4b numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl 1e4a18612ee4d0e54e0833574ebc6d25 numpy-1.26.4-cp311-cp311-win32.whl 5fd325dd8704023c1110835d7a1b095a numpy-1.26.4-cp311-cp311-win_amd64.whl d95ce582923d24dbddbc108aa5fd2128 numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl 6f16f3d70e0d95ce2b032167c546cc95 numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl 5369536d4c45fbe384147ff23185b48a numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 1ceb224096686831ad731e472b65e96a numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl cd8d3c00bbc89f9bc07e2df762f9e2ae numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl 5bd81ce840bb2e42befe01efb0402b79 numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl 2cc3b0757228078395da3efa3dc99f23 numpy-1.26.4-cp312-cp312-win32.whl 305155bd5ae879344c58968879584ed1 numpy-1.26.4-cp312-cp312-win_amd64.whl ec2310f67215743e9c5d16b6c9fb87b6 numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl 406aea6081c1affbebdb6ad56b5deaf4 numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl fee12f0a3cbac7bbf1a1c2d82d3b02a9 numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl baf4b7143c7b9ce170e62b33380fb573 numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 376ff29f90b7840ae19ecd59ad1ddf53 numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl 86785b3a7cd156c08c2ebc26f7816fb3 numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl ab8a9ab69f16b7005f238cda76bc0bac numpy-1.26.4-cp39-cp39-win32.whl fafa4453e820c7ff40907e5dc79d8199 numpy-1.26.4-cp39-cp39-win_amd64.whl 7f13e2f07bd3e4a439ade0e4d27905c6 numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl 928954b41c1cd0e856f1a31d41722661 numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 57bbd5c0b3848d804c416cbcab4a0ae8 numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl 19550cbe7bedd96a928da9d4ad69509d numpy-1.26.4.tar.gz SHA256 9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0 numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl 2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4 numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2 numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07 numpy-1.26.4-cp310-cp310-win32.whl b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5 numpy-1.26.4-cp310-cp310-win_amd64.whl 4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71 numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl 7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5 numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl 60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl 1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20 numpy-1.26.4-cp311-cp311-win32.whl cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2 numpy-1.26.4-cp311-cp311-win_amd64.whl b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218 numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl 03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl 9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl 1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0 numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl 50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110 numpy-1.26.4-cp312-cp312-win32.whl 08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 numpy-1.26.4-cp312-cp312-win_amd64.whl 7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl 52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764 numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3 numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl 47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6 numpy-1.26.4-cp39-cp39-win32.whl 3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea numpy-1.26.4-cp39-cp39-win_amd64.whl afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30 numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl 95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0 numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl 2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010 numpy-1.26.4.tar.gz ``` ### 1.26.3 ``` discovered after the 1.26.2 release. The most notable changes are the f2py bug fixes. The Python versions supported by this release are 3.9-3.12. Compatibility `f2py` will no longer accept ambiguous `-m` and `.pyf` CLI combinations. When more than one `.pyf` file is passed, an error is raised. When both `-m` and a `.pyf` is passed, a warning is emitted and the `-m` provided name is ignored. Improvements `f2py` now handles `common` blocks which have `kind` specifications from modules. This further expands the usability of intrinsics like `iso_fortran_env` and `iso_c_binding`. Contributors A total of 18 people contributed to this release. People with a \"+\" by their names contributed a patch for the first time. - \DWesl - \Illviljan - Alexander Grund - Andrea Bianchi + - Charles Harris - Daniel Vanzo - Johann Rohwer + - Matti Picus - Nathan Goldbaum - Peter Hawkins - Raghuveer Devulapalli - Ralf Gommers - Rohit Goswami - Sayed Adel - Sebastian Berg - Stefano Rivera + - Thomas A Caswell - matoro Pull requests merged A total of 42 pull requests were merged for this release. - [25130](https://github.com/numpy/numpy/pull/25130): MAINT: prepare 1.26.x for further development - [25188](https://github.com/numpy/numpy/pull/25188): TYP: add None to `__getitem__` in `numpy.array_api` - [25189](https://github.com/numpy/numpy/pull/25189): BLD,BUG: quadmath required where available \[f2py\] - [25190](https://github.com/numpy/numpy/pull/25190): BUG: alpha doesn\'t use REAL(10) - [25191](https://github.com/numpy/numpy/pull/25191): BUG: Fix FP overflow error in division when the divisor is scalar - [25192](https://github.com/numpy/numpy/pull/25192): MAINT: Pin scipy-openblas version. - [25201](https://github.com/numpy/numpy/pull/25201): BUG: Fix f2py to enable use of string optional inout argument - [25202](https://github.com/numpy/numpy/pull/25202): BUG: Fix -fsanitize=alignment issue in numpy/\_core/src/multiarray/arraytypes.c.src - [25203](https://github.com/numpy/numpy/pull/25203): TST: Explicitly pass NumPy path to cython during tests (also\... - [25204](https://github.com/numpy/numpy/pull/25204): BUG: fix issues with `newaxis` and `linalg.solve` in `numpy.array_api` - [25205](https://github.com/numpy/numpy/pull/25205): BUG: Disallow shadowed modulenames - [25217](https://github.com/numpy/numpy/pull/25217): BUG: Handle common blocks with kind specifications from modules - [25218](https://github.com/numpy/numpy/pull/25218): BUG: Fix moving compiled executable to root with f2py -c on Windows - [25219](https://github.com/numpy/numpy/pull/25219): BUG: Fix single to half-precision conversion on PPC64/VSX3 - [25227](https://github.com/numpy/numpy/pull/25227): TST: f2py: fix issue in test skip condition - [25240](https://github.com/numpy/numpy/pull/25240): Revert \"MAINT: Pin scipy-openblas version.\" - [25249](https://github.com/numpy/numpy/pull/25249): MAINT: do not use `long` type - [25377](https://github.com/numpy/numpy/pull/25377): TST: PyPy needs another gc.collect on latest versions - [25378](https://github.com/numpy/numpy/pull/25378): CI: Install Lapack runtime on Cygwin. - [25379](https://github.com/numpy/numpy/pull/25379): MAINT: Bump conda-incubator/setup-miniconda from 2.2.0 to 3.0.1 - [25380](https://github.com/numpy/numpy/pull/25380): BLD: update vendored Meson for AIX shared library fix - [25419](https://github.com/numpy/numpy/pull/25419): MAINT: Init `base` in cpu_avx512_kn - [25420](https://github.com/numpy/numpy/pull/25420): BUG: Fix failing test_features on SapphireRapids - [25422](https://github.com/numpy/numpy/pull/25422): BUG: Fix non-contiguous memory load when ARM/Neon is enabled - [25428](https://github.com/numpy/numpy/pull/25428): MAINT,BUG: Never import distutils above 3.12 \[f2py\] - [25452](https://github.com/numpy/numpy/pull/25452): MAINT: make the import-time check for old Accelerate more specific - [25458](https://github.com/numpy/numpy/pull/25458): BUG: fix macOS version checks for Accelerate support - [25465](https://github.co