From e684201f2d5e07df8cec1523ecc03cb2905d723b56c80f50a7fcdb79b4b53ce8 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Fri, 1 Dec 2023 16:55:19 +0000 Subject: [PATCH 1/2] - 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=36 --- anyio-3.7.1.tar.gz | 3 - anyio-4.1.0.tar.gz | 3 + python-anyio.changes | 63 +++++++++++++++++++ python-anyio.spec | 8 +-- ...leio.py-don-t-follow-symlinks-in-dev.patch | 33 ---------- 5 files changed, 69 insertions(+), 41 deletions(-) delete mode 100644 anyio-3.7.1.tar.gz create mode 100644 anyio-4.1.0.tar.gz delete mode 100644 tests-test_fileio.py-don-t-follow-symlinks-in-dev.patch diff --git a/anyio-3.7.1.tar.gz b/anyio-3.7.1.tar.gz deleted file mode 100644 index 5c1ae7e..0000000 --- a/anyio-3.7.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780 -size 142927 diff --git a/anyio-4.1.0.tar.gz b/anyio-4.1.0.tar.gz new file mode 100644 index 0000000..48557ee --- /dev/null +++ b/anyio-4.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a0bec7085176715be77df87fc66d6c9d70626bd752fcc85f57cdbee5b3760da +size 155773 diff --git a/python-anyio.changes b/python-anyio.changes index cf24bb6..47da461 100644 --- a/python-anyio.changes +++ b/python-anyio.changes @@ -1,3 +1,66 @@ +------------------------------------------------------------------- +Fri Dec 1 16:52:20 UTC 2023 - Dirk Müller + +- 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 diff --git a/python-anyio.spec b/python-anyio.spec index e2887c6..ec3a207 100644 --- a/python-anyio.spec +++ b/python-anyio.spec @@ -18,14 +18,12 @@ %{?sle15_python_module_pythons} Name: python-anyio -Version: 3.7.1 +Version: 4.1.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 idna >= 2.8} @@ -42,7 +40,7 @@ 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 @@ -55,7 +53,7 @@ Requires: python-typing_extensions Requires: python-contextvars Requires: python-dataclasses %endif -Suggests: python-trio >= 0.16 +Suggests: python-trio >= 0.23 BuildArch: noarch %python_subpackages diff --git a/tests-test_fileio.py-don-t-follow-symlinks-in-dev.patch b/tests-test_fileio.py-don-t-follow-symlinks-in-dev.patch deleted file mode 100644 index 615f49b..0000000 --- a/tests-test_fileio.py-don-t-follow-symlinks-in-dev.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Jiri Slaby -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 - From 5bf63236e05402eff264075856b661bf7cc99f9fdb4e56936fa0b5393aa5ec01 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Tue, 2 Jan 2024 20:52:48 +0000 Subject: [PATCH 2/2] - 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=37 --- anyio-4.1.0.tar.gz | 3 --- anyio-4.2.0.tar.gz | 3 +++ python-anyio.changes | 36 ++++++++++++++++++++++++++++++++++++ python-anyio.spec | 10 ++++------ 4 files changed, 43 insertions(+), 9 deletions(-) delete mode 100644 anyio-4.1.0.tar.gz create mode 100644 anyio-4.2.0.tar.gz diff --git a/anyio-4.1.0.tar.gz b/anyio-4.1.0.tar.gz deleted file mode 100644 index 48557ee..0000000 --- a/anyio-4.1.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a0bec7085176715be77df87fc66d6c9d70626bd752fcc85f57cdbee5b3760da -size 155773 diff --git a/anyio-4.2.0.tar.gz b/anyio-4.2.0.tar.gz new file mode 100644 index 0000000..b4dd3f1 --- /dev/null +++ b/anyio-4.2.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +size 158770 diff --git a/python-anyio.changes b/python-anyio.changes index 47da461..ccc8df0 100644 --- a/python-anyio.changes +++ b/python-anyio.changes @@ -1,3 +1,39 @@ +------------------------------------------------------------------- +Tue Jan 2 20:50:56 UTC 2024 - Dirk Müller + +- 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 diff --git a/python-anyio.spec b/python-anyio.spec index ec3a207..2c802b1 100644 --- a/python-anyio.spec +++ b/python-anyio.spec @@ -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,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-anyio -Version: 4.1.0 +Version: 4.2.0 Release: 0 Summary: High level compatibility layer for asynchronous event loop implementations License: MIT @@ -32,7 +32,7 @@ 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 @@ -46,9 +46,7 @@ BuildRequires: %{python_module trustme} BuildRequires: fdupes Requires: python-idna >= 2.8 Requires: python-sniffio >= 1.1 -%if 0%{?python_version_nodots} < 38 -Requires: python-typing_extensions -%endif +Requires: (python-typing_extensions if python-base < 3.11) %if 0%{?python_version_nodots} < 37 Requires: python-contextvars Requires: python-dataclasses