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.4.0.tar.gz b/anyio-4.4.0.tar.gz new file mode 100644 index 0000000..3788ca8 --- /dev/null +++ b/anyio-4.4.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94 +size 163930 diff --git a/python-anyio.changes b/python-anyio.changes index cf24bb6..7f57f12 100644 --- a/python-anyio.changes +++ b/python-anyio.changes @@ -1,3 +1,170 @@ +------------------------------------------------------------------- +Wed Jun 12 09:21:08 UTC 2024 - Dirk Müller + +- 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 + +- 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 + +- 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 + +- 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..3dd42a9 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,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 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 -