Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update anyio to 4.7.0 #8091

Open
wants to merge 1 commit into
base: rewrite
Choose a base branch
from
Open

Conversation

pyup-bot
Copy link
Collaborator

@pyup-bot pyup-bot commented Dec 5, 2024

This PR updates anyio from 4.2.0 to 4.7.0.

Changelog

4.6.2

- Fixed regression caused by (`807 <https://github.com/agronholm/anyio/pull/807>`_)
that prevented the use of parametrized async fixtures

4.6.1

This release contains all the changes from both v4.5.1 and v4.6.0, plus:

- Fixed TaskGroup and CancelScope producing cyclic references in tracebacks
when raising exceptions (`806 <https://github.com/agronholm/anyio/pull/806>`_)
(PR by graingert)

4.6.0

This release is the successor to v4.5.0 with Python 3.8 support dropped, and does not
contain the changes from v4.5.1.

- Dropped support for Python 3.8
(as `698 <https://github.com/agronholm/anyio/issues/698>`_ cannot be resolved
without cancel message support)
- Fixed 100% CPU use on asyncio while waiting for an exiting task group to finish while
said task group is within a cancelled cancel scope
(`695 <https://github.com/agronholm/anyio/issues/695>`_)
- Fixed cancel scopes on asyncio not propagating ``CancelledError`` on exit when the
enclosing cancel scope has been effectively cancelled
(`698 <https://github.com/agronholm/anyio/issues/698>`_)
- Fixed asyncio task groups not yielding control to the event loop at exit if there were
no child tasks to wait on
- Fixed inconsistent task uncancellation with asyncio cancel scopes belonging to a
task group when said task group has child tasks running

4.5.1

As Python 3.8 support was dropped in v4.6.0, this interim release was created to bring a
regression fix to Python 3.8, and adds a few other fixes also present in v4.6.1.

- Fixed acquring a lock twice in the same task on asyncio hanging instead of raising a
``RuntimeError`` (`798 <https://github.com/agronholm/anyio/issues/798>`_)
- Fixed an async fixture's ``self`` being different than the test's ``self`` in
class-based tests (`633 <https://github.com/agronholm/anyio/issues/633>`_)
(PR by agronholm and graingert)
- Fixed ``TypeError`` with ``TLSStream`` on Windows when a certificate verification
error occurs when using a `truststore <https://github.com/sethmlarson/truststore>`_
SSL certificate (`795 <https://github.com/agronholm/anyio/issues/795>`_)
- Corrected documentation on ``anyio.Path`` regarding the limitations imposed by the
current Python version on several of its methods, and made the ``is_junction`` method
unavailable on Python versions earlier than 3.12
(`794 <https://github.com/agronholm/anyio/issues/794>`_)

4.5.0

- Improved the performance of ``anyio.Lock`` and ``anyio.Semaphore`` on asyncio (even up
to 50 %)
- Added the ``fast_acquire`` parameter to ``anyio.Lock`` and ``anyio.Semaphore`` to
further boost performance at the expense of safety (``acquire()`` will not yield
control back if there is no contention)
- Added support for the ``from_uri()``, ``full_match()``, ``parser`` methods/properties
in ``anyio.Path``, newly added in Python 3.13
(`737 <https://github.com/agronholm/anyio/issues/737>`_)
- Added support for more keyword arguments for ``run_process()`` and ``open_process()``:
``startupinfo``, ``creationflags``, ``pass_fds``, ``user``, ``group``,
``extra_groups`` and ``umask``
(`742 <https://github.com/agronholm/anyio/issues/742>`_)
- Improved the type annotations and support for ``PathLike`` in ``run_process()`` and
``open_process()`` to allow for path-like arguments, just like ``subprocess.Popen``
- Changed the ``ResourceWarning`` from an unclosed memory object stream to include its
address for easier identification
- Changed ``start_blocking_portal()`` to always use daemonic threads, to accommodate the
"loitering event loop" use case
- Bumped the minimum version of Trio to v0.26.1
- Fixed ``__repr__()`` of ``MemoryObjectItemReceiver``, when ``item`` is not defined
(`767 <https://github.com/agronholm/anyio/pull/767>`_; PR by Danipulok)
- Fixed ``to_process.run_sync()`` failing to initialize if ``__main__.__file__`` pointed
to a file in a nonexistent directory
(`696 <https://github.com/agronholm/anyio/issues/696>`_)
- Fixed ``AssertionError: feed_data after feed_eof`` on asyncio when a subprocess is
closed early, before its output has been read
(`490 <https://github.com/agronholm/anyio/issues/490>`_)
- Fixed ``TaskInfo.has_pending_cancellation()`` on asyncio not respecting shielded
scopes (`771 <https://github.com/agronholm/anyio/issues/771>`_; PR by gschaffner)
- Fixed ``SocketStream.receive()`` returning ``bytearray`` instead of ``bytes`` when
using asyncio with ``ProactorEventLoop`` (Windows)
(`776 <https://github.com/agronholm/anyio/issues/776>`_)
- Fixed quitting the debugger in a pytest test session while in an active task group
failing the test instead of exiting the test session (because the exit exception
arrives in an exception group)
- Fixed support for Linux abstract namespaces in UNIX sockets that was broken in v4.2
(`781 <https://github.com/agronholm/anyio/issues/781>`_; PR by tapetersen)
- Fixed ``KeyboardInterrupt`` (ctrl+c) hanging the asyncio pytest runner

4.4.0

- Added the ``BlockingPortalProvider`` class to aid with constructing synchronous
counterparts to asynchronous interfaces that would otherwise require multiple blocking
portals
- Added ``__slots__`` to ``AsyncResource`` so that child classes can use ``__slots__``
(`733 <https://github.com/agronholm/anyio/pull/733>`_; PR by Justin Su)
- Added the ``TaskInfo.has_pending_cancellation()`` method
- Fixed erroneous ``RuntimeError: called 'started' twice on the same task status``
when cancelling a task in a TaskGroup created with the ``start()`` method before
the first checkpoint is reached after calling ``task_status.started()``
(`706 <https://github.com/agronholm/anyio/issues/706>`_; PR by Dominik Schwabe)
- Fixed two bugs with ``TaskGroup.start()`` on asyncio:

* Fixed erroneous ``RuntimeError: called 'started' twice on the same task status``
 when cancelling a task in a TaskGroup created with the ``start()`` method before
 the first checkpoint is reached after calling ``task_status.started()``
 (`706 <https://github.com/agronholm/anyio/issues/706>`_; PR by Dominik Schwabe)
* Fixed the entire task group being cancelled if a ``TaskGroup.start()`` call gets
 cancelled (`685 <https://github.com/agronholm/anyio/issues/685>`_,
 `710 <https://github.com/agronholm/anyio/issues/710>`_)
- Fixed a race condition that caused crashes when multiple event loops of the same
backend were running in separate threads and simultaneously attempted to use AnyIO for
their first time (`425 <https://github.com/agronholm/anyio/issues/425>`_; PR by David
Jiricek and Ganden Schaffner)
- Fixed cancellation delivery on asyncio incrementing the wrong cancel scope's
cancellation counter when cascading a cancel operation to a child scope, thus failing
to uncancel the host task (`716 <https://github.com/agronholm/anyio/issues/716>`_)
- Fixed erroneous ``TypedAttributeLookupError`` if a typed attribute getter raises
``KeyError``
- Fixed the asyncio backend not respecting the ``PYTHONASYNCIODEBUG`` environment
variable when setting the ``debug`` flag in ``anyio.run()``
- Fixed ``SocketStream.receive()`` not detecting EOF on asyncio if there is also data in
the read buffer (`701 <https://github.com/agronholm/anyio/issues/701>`_)
- Fixed ``MemoryObjectStream`` dropping an item if the item is delivered to a recipient
that is waiting to receive an item but has a cancellation pending
(`728 <https://github.com/agronholm/anyio/issues/728>`_)
- Emit a ``ResourceWarning`` for ``MemoryObjectReceiveStream`` and
``MemoryObjectSendStream`` that were garbage collected without being closed (PR by
Andrey Kazantcev)
- Fixed ``MemoryObjectSendStream.send()`` not raising ``BrokenResourceError`` when the
last corresponding ``MemoryObjectReceiveStream`` is closed while waiting to send a
falsey item (`731 <https://github.com/agronholm/anyio/issues/731>`_; PR by Ganden
Schaffner)

4.3.0

- Added support for the Python 3.12 ``walk_up`` keyword argument in
``anyio.Path.relative_to()`` (PR by Colin Taylor)
- Fixed passing ``total_tokens`` to ``anyio.CapacityLimiter()`` as a keyword argument
not working on the ``trio`` backend
(`515 <https://github.com/agronholm/anyio/issues/515>`_)
- Fixed ``Process.aclose()`` not performing the minimum level of necessary cleanup when
cancelled. Previously:

- Cancellation of ``Process.aclose()`` could leak an orphan process
- Cancellation of ``run_process()`` could very briefly leak an orphan process.
- Cancellation of ``Process.aclose()`` or ``run_process()`` on Trio could leave
 standard streams unclosed

(PR by Ganden Schaffner)
- Fixed ``Process.stdin.aclose()``, ``Process.stdout.aclose()``, and
``Process.stderr.aclose()`` not including a checkpoint on asyncio (PR by Ganden
Schaffner)
- Fixed documentation on how to provide your own typed attributes
Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant