Sync from SUSE:SLFO:Main python-anyio revision e268938253e1734717a310c4376b342a

This commit is contained in:
Adrian Schröter 2024-09-13 16:18:17 +02:00
parent cf019498cc
commit e04082b963
5 changed files with 180 additions and 52 deletions

BIN
anyio-3.7.1.tar.gz (Stored with Git LFS)

Binary file not shown.

BIN
anyio-4.4.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,3 +1,170 @@
-------------------------------------------------------------------
Wed Jun 12 09:21:08 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 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__
* 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()
* 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; PR by
Dominik Schwabe) Fixed the entire task group being cancelled
if a TaskGroup.start() call gets cancelled (#685, #710)
* 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()
* Fixed the entire task group being cancelled if a
TaskGroup.start() call gets cancelled
* 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
* 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
* 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
* 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
* 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
-------------------------------------------------------------------
Mon Mar 11 23:36:15 UTC 2024 - Steve Kowalik <steven.kowalik@suse.com>
- Update to 4.3.0:
* Added support for the Python 3.12 ``walk_up`` keyword argument in
``anyio.Path.relative_to()``
* Fixed passing ``total_tokens`` to ``anyio.CapacityLimiter()`` as a
keyword argument not working on the ``trio`` backend
* Fixed ``Process.aclose()`` not performing the minimum level of
necessary cleanup when cancelled
* Fixed ``Process.stdin.aclose()``, ``Process.stdout.aclose()``, and
``Process.stderr.aclose()``
- Add exceptiongroup to {Build,}Requires.
-------------------------------------------------------------------
Tue Jan 2 20:50:56 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 4.2.0:
* Add support for byte-based paths in connect_unix,
create_unix_listeners, create_unix_datagram_socket, and
create_connected_unix_datagram_socket. (PR by Lura Skye)
* Enabled the Event and CapacityLimiter classes to be
instantiated outside an event loop thread
* Broadly improved/fixed the type annotations. Among other
things, many functions and methods that take variadic
positional arguments now make use of PEP 646 TypeVarTuple to
allow the positional arguments to be validated by static type
checkers. These changes affected numerous methods and
functions, including: * anyio.run() * TaskGroup.start_soon()
* anyio.from_thread.run() * anyio.from_thread.run_sync() *
anyio.to_thread.run_sync() * anyio.to_process.run_sync() *
BlockingPortal.call() * BlockingPortal.start_task_soon() *
BlockingPortal.start_task() (also resolves #560)
* Fixed various type annotations of anyio.Path to match
Typeshed: * anyio.Path.__lt__() * anyio.Path.__le__() *
anyio.Path.__gt__() * anyio.Path.__ge__() *
anyio.Path.__truediv__() * anyio.Path.__rtruediv__() *
anyio.Path.hardlink_to() * anyio.Path.samefile() *
anyio.Path.symlink_to() * anyio.Path.with_segments() (PR by
Ganden Schaffner)
* Fixed adjusting the total number of tokens in a
CapacityLimiter on asyncio failing to wake up tasks waiting
to acquire the limiter in certain edge cases (fixed with help
from Egor Blagov)
* Fixed loop_factory and use_uvloop options not being used on
the asyncio backend
* Fixed cancellation propagating on asyncio from a task group
to child tasks if the task hosting the task group is in a
shielded cancel scope
-------------------------------------------------------------------
Fri Dec 1 16:52:20 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 4.1.0:
* Adapted to API changes made in Trio v0.23
* Removed a checkpoint when exiting a task group
* Renamed the ``cancellable`` argument in
``anyio.to_thread.run_sync()`` to
* ``abandon_on_cancel`` (and deprecated the old parameter name)
* Added support for voluntary thread cancellation via
* ``anyio.from_thread.check_cancelled()``
* Bumped minimum version of trio to v0.23
* Exposed the ``ResourceGuard`` class in the public API
* Fixed ``RuntimeError: Runner is closed`` when running higher-
scoped async generator fixtures in some cases
* Fixed discrepancy between ``asyncio`` and ``trio`` where
reraising a cancellation exception in an ``except*`` block
would incorrectly bubble out of its cancel scope
* Any exceptions raising out of a task groups are now nested
inside an ``ExceptionGroup`` (or ``BaseExceptionGroup`` if one
or more ``BaseException`` were included)
* Fixed task group not raising a cancellation exception on
asyncio at exit if no child tasks were spawned and an outer
cancellation scope had been cancelled before
* Ensured that exiting a ``TaskGroup`` always hits a yield
point, regardless of whether there are running child tasks to
be waited on
* On asyncio, cancel scopes will defer cancelling tasks that
are scheduled to resume with a finished future
* On asyncio and Python 3.9/3.10, cancel scopes now only
suppress cancellation exceptions if the cancel message matches
the scope
* Task groups on all backends now raise a single cancellation
exception when an outer cancel scope is cancelled, and no
exceptions other than cancellation exceptions are raised in
the group
* **BACKWARDS INCOMPATIBLE** Changes the pytest plugin to run
all tests and fixtures in the same task, allowing fixtures to
set context variables for tests and other fixtures
``anyio.Path.relative_to()`` and
* ``anyio.Path.is_relative_to()`` to only accept one argument,
as passing multiple arguments is deprecated as of Python 3.12
* **BACKWARDS INCOMPATIBLE** Dropped support for spawning tasks
from old-style coroutine functions (``@asyncio.coroutine``)
* **BACKWARDS INCOMPATIBLE** The ``policy`` option on the
``asyncio`` backend was changed to ``loop_factory`` to
accommodate ``asyncio.Runner``
* Dropped support for Python 3.7
* Added support for Python 3.12
* Fixed ``from_thread.run`` failing when used to call sniffio-
dependent functions on asyncio from a thread running trio or curio
* Fixed deadlock when using
``from_thread.start_blocking_portal(backend="asyncio")``
* in a thread running trio or curio (PR by Ganden Schaffner)
* Improved type annotations:
* The ``item_type`` argument of ``create_memory_object_stream``
was deprecated.
* To indicate the item type handled by the stream, use
* ``create_memory_object_stream[T_Item]()`` instead. Type
checking should no longer fail when annotating memory object
- drop tests-test_fileio.py-don-t-follow-symlinks-in-dev.patch
(upstream)
-------------------------------------------------------------------
Thu Nov 16 15:31:07 UTC 2023 - Dirk Müller <dmueller@suse.com>

View File

@ -1,7 +1,7 @@
#
# spec file for package python-anyio
#
# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -18,44 +18,38 @@
%{?sle15_python_module_pythons}
Name: python-anyio
Version: 3.7.1
Version: 4.4.0
Release: 0
Summary: High level compatibility layer for asynchronous event loop implementations
License: MIT
URL: https://github.com/agronholm/anyio
Source: https://files.pythonhosted.org/packages/source/a/anyio/anyio-%{version}.tar.gz
# PATCH-FIX-UPSTREAM see gh#agronholm/anyio#626
Patch2: tests-test_fileio.py-don-t-follow-symlinks-in-dev.patch
BuildRequires: %{python_module contextlib2 if %python-base < 3.7}
BuildRequires: %{python_module dataclasses if %python-base < 3.7}
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module exceptiongroup}
BuildRequires: %{python_module idna >= 2.8}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module psutil >= 5.9}
BuildRequires: %{python_module setuptools_scm}
BuildRequires: %{python_module sniffio >= 1.1}
BuildRequires: %{python_module toml}
BuildRequires: %{python_module typing_extensions if %python-base < 3.8}
BuildRequires: %{python_module typing_extensions if %python-base < 3.11}
BuildRequires: %{python_module wheel}
BuildRequires: python-rpm-macros >= 20210127.3a18043
# SECTION test requirements
BuildRequires: %{python_module hypothesis >= 4.0}
BuildRequires: %{python_module mock >= 4.0 if %python-base < 3.8}
BuildRequires: %{python_module pytest >= 7.0}
BuildRequires: %{python_module pytest-mock >= 3.6.1}
BuildRequires: %{python_module trio >= 0.16}
BuildRequires: %{python_module trio >= 0.23}
BuildRequires: %{python_module trustme}
# /SECTION
BuildRequires: fdupes
Requires: python-idna >= 2.8
Requires: python-sniffio >= 1.1
%if 0%{?python_version_nodots} < 38
%if 0%{?python_version_nodots} < 311
Requires: python-exceptiongroup
Requires: python-typing_extensions
%endif
%if 0%{?python_version_nodots} < 37
Requires: python-contextvars
Requires: python-dataclasses
%endif
Suggests: python-trio >= 0.16
Suggests: python-trio >= 0.23
BuildArch: noarch
%python_subpackages
@ -99,6 +93,6 @@ donttest+=" or (test_properties and asyncio)"
%doc README.rst
%license LICENSE
%{python_sitelib}/anyio
%{python_sitelib}/anyio-%{version}*-info
%{python_sitelib}/anyio-%{version}.dist-info
%changelog

View File

@ -1,33 +0,0 @@
From: Jiri Slaby <jirislaby@gmail.com>
Date: Thu, 2 Nov 2023 11:37:44 +0100
Subject: tests: test_fileio.py: don't follow symlinks in /dev
Patch-mainline: submitted https://github.com/agronholm/anyio/pull/626
References: fix for kernel 6.6
There might be a broken one like /dev/log and this causes the tests to
fail.
This is highly is unpredictable, because os.scandir() sometimes returns
a block device, sometimes the broken link is hit.
So pass follow_symlinks=False to entry.stat().
---
tests/test_fileio.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/test_fileio.py b/tests/test_fileio.py
index 9e6b2a8325..c4801187db 100644
--- a/tests/test_fileio.py
+++ b/tests/test_fileio.py
@@ -218,7 +218,7 @@ class TestPath:
assert not await Path("/btelkbee").is_block_device()
with os.scandir("/dev") as iterator:
for entry in iterator:
- if stat.S_ISBLK(entry.stat().st_mode):
+ if stat.S_ISBLK(entry.stat(follow_symlinks=False).st_mode):
assert await Path(entry.path).is_block_device()
break
else:
--
2.42.0