7ed960ca0c
- Update to 4.12.0: * Added support for asyncio's task call graphs on Python 3.14 and later when using AnyIO's task groups * Added an asynchronous implementation of the functools module * Added support for uvloop=True on Windows via the winloop implementation * Added support for use as a context manager to anyio.lowlevel.RunVar * Added __all__ declarations to public submodules (anyio.lowlevel etc.) * Added the ability to set the token count of a CapacityLimiter to zero * Added parameters case_sensitive and recurse_symlinks along with support for path-like objects to anyio.Path.glob() and anyio.Path.rglob() * Dropped sniffio as a direct dependency and added the get_available_backends() function * Fixed Process.stdin.send() not raising ClosedResourceError and BrokenResourceError on asyncio * Fixed Process.stdin.send() not checkpointing before writing data on asyncio * Fixed a race condition where cancelling a Future from BlockingPortal.start_task_soon() would sometimes not cancel the async function * Fixed the presence of the pytest plugin causing breakage with older versions of pytest (<= 6.1.2) * Fixed a rarely occurring RuntimeError: Set changed size during iteration while shutting down the process pool when using the asyncio backend
Steve Kowalik2025-12-08 08:00:17 +00:00
5b223503a9
Accepting request 1320262 from devel:languages:python
Ana Guerrero2025-12-05 15:50:43 +00:00
ce1cb33a48
- Skip a test that will break with pytest 9.
Steve Kowalik2025-11-27 03:35:47 +00:00
eefaa542a0
Accepting request 1306903 from devel:languages:python
Ana Guerrero2025-09-25 16:43:50 +00:00
eb8f0b2bc6
Accepting request 1306875 from home:nkrapp:branches:devel:languages:python
Markéta Machová2025-09-24 11:07:44 +00:00
83d967dbe6
- Increase timeout in in test_keyboardinterrupt_during_test, it helps with flaky tests in i586 arches.
Daniel Garcia2025-08-07 09:33:46 +00:00
b2521b3d57
Accepting request 1294656 from devel:languages:python
Ana Guerrero2025-07-21 17:59:16 +00:00
c1a83aed93
- Inject multibuild to break a build loop.
Steve Kowalik2025-07-21 05:04:22 +00:00
0d8b784b22
Accepting request 1294357 from home:fstegmeier:branches:devel:languages:python
Markéta Machová2025-07-19 07:33:52 +00:00
7160b8c314
Accepting request 1244802 from devel:languages:python
Ana Guerrero2025-02-11 20:21:06 +00:00
6b19aeffcb
typing_extensions is actually needed everywhere
Markéta Machová2025-02-10 15:38:44 +00:00
75f7b06c34
Accepting request 1244801 from home:mcalabkova:branches:devel:languages:python
Markéta Machová2025-02-10 15:38:44 +00:00
ffbd64870e
- Update to 4.8.0: * Added experimental support for running functions in subinterpreters on Python 3.13 and later * Added support for the copy(), copy_into(), move() and move_into() methods in anyio.Path, available in Python 3.14 * Changed TaskGroup on asyncio to always spawn tasks non-eagerly, even if using a task factory created via asyncio.create_eager_task_factory(), to preserve expected Trio-like task scheduling semantics (PR by @agronholm and @graingert) * Configure SO_RCVBUF, SO_SNDBUF and TCP_NODELAY on the selector thread waker socket pair (this should improve the performance of wait_readable() and wait_writable() when using the ProactorEventLoop) (#836; PR by @graingert) * Fixed AssertionError when using nest-asyncio (#840) * Fixed return type annotation of various context managers' __exit__ method (#847; PR by @Enegg)
Dirk Mueller2025-02-10 13:47:37 +00:00
80e766c622
Accepting request 1244708 from home:nkrapp:branches:devel:languages:python
Dirk Mueller2025-02-10 13:47:37 +00:00
68f5945ee8
Accepting request 1217080 from devel:languages:python
Ana Guerrero2024-10-23 19:08:21 +00:00
fd5549b534
Accepting request 1217080 from devel:languages:python
Ana Guerrero2024-10-23 19:08:21 +00:00
f8673c55a3
- update to 4.6.2: * Fixed regression caused by (\#807) that prevented the use of parametrized async fixtures - update to 4.6.1: * Fixed TaskGroup and CancelScope producing cyclic references in tracebacks when raising exceptions (\#806) (PR by @graingert)
Dirk Mueller2024-10-22 16:01:01 +00:00
380dc09b43
- update to 4.6.2: * Fixed regression caused by (\#807) that prevented the use of parametrized async fixtures - update to 4.6.1: * Fixed TaskGroup and CancelScope producing cyclic references in tracebacks when raising exceptions (\#806) (PR by @graingert)
Dirk Mueller2024-10-22 16:01:01 +00:00
b19978e717
Accepting request 1205309 from devel:languages:python
Ana Guerrero2024-10-03 16:00:37 +00:00
c58c998d67
Accepting request 1205309 from devel:languages:python
Ana Guerrero2024-10-03 16:00:37 +00:00
1756cae617
- update to 4.6.0: * Dropped support for Python 3.8 (as #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) * Fixed cancel scopes on asyncio not propagating CancelledError on exit when the enclosing cancel scope has been effectively cancelled (#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 - update to 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) * Added support for more keyword arguments for run_process() and open_process(): startupinfo, creationflags, pass_fds, user, group, extra_groups and umask (#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
Matej Cepl2024-10-02 18:23:44 +00:00
4c26d46096
Accepting request 1205307 from home:alarrosa:branches:devel:languages:python
Matej Cepl2024-10-02 18:23:44 +00:00
81095d72e7
- 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
Dirk Mueller2024-06-12 09:21:15 +00:00
e9703cdbfd
- 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
Dirk Mueller2024-06-12 09:21:15 +00:00
184b2a231c
Accepting request 1157062 from devel:languages:python
Ana Guerrero2024-03-14 16:42:27 +00:00
e1dbc6799c
Accepting request 1157062 from devel:languages:python
Ana Guerrero2024-03-14 16:42:27 +00:00
ee39414b64
Correct BuildRequires for exceptiongroup, it is always required.
Steve Kowalik2024-03-11 23:38:02 +00:00
e18d79671a
Correct BuildRequires for exceptiongroup, it is always required.
Steve Kowalik2024-03-11 23:38:02 +00:00
87b4f920e6
- 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.
Steve Kowalik2024-03-11 06:15:59 +00:00
59f9753039
- 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.
Steve Kowalik2024-03-11 06:15:59 +00:00
0d3c7168b6
Accepting request 1136274 from devel:languages:python
Ana Guerrero2024-01-21 22:07:33 +00:00
576f0af5f6
Accepting request 1136274 from devel:languages:python
Ana Guerrero2024-01-21 22:07:33 +00:00
5bf63236e0
- 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
Dirk Mueller2024-01-02 20:52:48 +00:00
b749be9281
- 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
Dirk Mueller2024-01-02 20:52:48 +00:00
e684201f2d
- 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
Dirk Mueller2023-12-01 16:55:19 +00:00
48a3cac6a6
- 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
Dirk Mueller2023-12-01 16:55:19 +00:00
217940d961
Accepting request 1126958 from devel:languages:python
Ana Guerrero2023-11-23 20:38:43 +00:00
e63375dad7
Accepting request 1126958 from devel:languages:python
Ana Guerrero2023-11-23 20:38:43 +00:00
fc8767e10e
- update to 3.7.1: * Fixed sending large buffers via UNIX stream sockets on asyncio * Fixed several minor documentation issues (broken links to classes, missing classes or attributes) * Dropped support for Python 3.6 * Improved type annotations: * Several functions and methods that were previously annotated as accepting `Coroutine[Any, Any, Any] as the return type of the callable have been amended to accept Awaitable[Any] instead, to allow a slightly broader set of coroutine-like inputs, like async_generator_asend objects returned from the asend() method of async generators, and to match the trio annotations: * anyio.run() * anyio.from_thread.run() * TaskGroup.start_soon() * TaskGroup.start() * BlockingPortal.call() * BlockingPortal.start_task_soon() * BlockingPortal.start_task() * Changed TLSAttribute.shared_ciphers to match the documented semantics of SSLSocket.shared_ciphers of always returning None for client-side streams * Fixed CapacityLimiter on the asyncio backend to order waiting tasks in the FIFO order (instead of LIFO) * Fixed CancelScope.cancel() not working on asyncio if called before entering the scope * Fixed open_signal_receiver() inconsistently yielding integers instead of signal.Signals` instances on the
Dirk Mueller2023-11-16 15:34:42 +00:00
bdc24c47ee
- update to 3.7.1: * Fixed sending large buffers via UNIX stream sockets on asyncio * Fixed several minor documentation issues (broken links to classes, missing classes or attributes) * Dropped support for Python 3.6 * Improved type annotations: * Several functions and methods that were previously annotated as accepting `Coroutine[Any, Any, Any] as the return type of the callable have been amended to accept Awaitable[Any] instead, to allow a slightly broader set of coroutine-like inputs, like async_generator_asend objects returned from the asend() method of async generators, and to match the trio annotations: * anyio.run() * anyio.from_thread.run() * TaskGroup.start_soon() * TaskGroup.start() * BlockingPortal.call() * BlockingPortal.start_task_soon() * BlockingPortal.start_task() * Changed TLSAttribute.shared_ciphers to match the documented semantics of SSLSocket.shared_ciphers of always returning None for client-side streams * Fixed CapacityLimiter on the asyncio backend to order waiting tasks in the FIFO order (instead of LIFO) * Fixed CancelScope.cancel() not working on asyncio if called before entering the scope * Fixed open_signal_receiver() inconsistently yielding integers instead of signal.Signals` instances on the
Dirk Mueller2023-11-16 15:34:42 +00:00
969486b212
Accepting request 1122669 from devel:languages:python
Ana Guerrero2023-11-06 20:13:40 +00:00
c56dde5a90
Accepting request 1122669 from devel:languages:python
Ana Guerrero2023-11-06 20:13:40 +00:00
3bb72dd601
Accepting request 1122463 from home:jirislaby:branches:devel:languages:python
Markéta Machová2023-11-02 12:31:00 +00:00
34c6982dad
Accepting request 1122463 from home:jirislaby:branches:devel:languages:python
Markéta Machová2023-11-02 12:31:00 +00:00
46e9675d48
Accepting request 1109337 from devel:languages:python
Ana Guerrero2023-09-07 19:12:47 +00:00
2e805dfacb
Accepting request 1109337 from devel:languages:python
Ana Guerrero2023-09-07 19:12:47 +00:00
fa1f76c10b
- update to 3.6.2: - Pinned Trio to < 0.22 to avoid incompatibility with AnyIO's `ExceptionGroup class causing AttributeError: 'NonBaseMultiError' object has no attribute '_exceptions' (AnyIO 4 is unaffected) - Fixed exception handler in the asyncio test runner not properly handling a context that does not contain the exception key - Fixed TypeError in get_current_task() on asyncio when using a custom Task factory - Updated type annotations on run_process() and open_process(): * command now accepts accepts bytes and sequences of bytes * stdin, stdout and stderr now accept file-like objects - Changed the pytest plugin to run both the setup and teardown phases of asynchronous generator fixtures within a single task to enable use cases such as cancel scopes and task groups where a context manager straddles the yield`
Dirk Mueller2022-11-21 21:18:11 +00:00
e9d7995939
- update to 3.6.2: - Pinned Trio to < 0.22 to avoid incompatibility with AnyIO's `ExceptionGroup class causing AttributeError: 'NonBaseMultiError' object has no attribute '_exceptions' (AnyIO 4 is unaffected) - Fixed exception handler in the asyncio test runner not properly handling a context that does not contain the exception key - Fixed TypeError in get_current_task() on asyncio when using a custom Task factory - Updated type annotations on run_process() and open_process(): * command now accepts accepts bytes and sequences of bytes * stdin, stdout and stderr now accept file-like objects - Changed the pytest plugin to run both the setup and teardown phases of asynchronous generator fixtures within a single task to enable use cases such as cancel scopes and task groups where a context manager straddles the yield`
Dirk Mueller2022-11-21 21:18:11 +00:00
cdf47aacfa
- update to 3.5.0: - Added `start_new_session keyword argument to run_process() and open_process()` - Fixed deadlock in synchronization primitives on asyncio which can happen if a task acquiring a primitive is hit with a native (not AnyIO) cancellation with just the right timing, leaving the next acquiring task waiting forever - Added workaround for bpo-46313_ to enable compatibility with OpenSSL 3.0
Dirk Mueller2022-01-15 16:36:52 +00:00
d058d82d06
- update to 3.5.0: - Added `start_new_session keyword argument to run_process() and open_process()` - Fixed deadlock in synchronization primitives on asyncio which can happen if a task acquiring a primitive is hit with a native (not AnyIO) cancellation with just the right timing, leaving the next acquiring task waiting forever - Added workaround for bpo-46313_ to enable compatibility with OpenSSL 3.0
Dirk Mueller2022-01-15 16:36:52 +00:00