|
|
|
|
@@ -1,3 +1,266 @@
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
Wed Aug 13 05:32:04 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
|
|
|
|
|
|
|
|
|
|
- Skip flaky test_keyboardinterrupt_during_test, the timeout increase
|
|
|
|
|
doesn't always help.
|
|
|
|
|
- Fix build for Leap
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
Tue Aug 12 08:54:42 UTC 2025 - Dominique Leuenberger <dimstar@opensuse.org>
|
|
|
|
|
|
|
|
|
|
- Update to 4.10.0:
|
|
|
|
|
+ Added the feed_data() method to the BufferedByteReceiveStream
|
|
|
|
|
class, allowing users to inject data directly into the buffer
|
|
|
|
|
+ Added various class methods to wrap existing sockets as
|
|
|
|
|
listeners or socket streams
|
|
|
|
|
+ Added a hierarchy of connectable stream classes for
|
|
|
|
|
transparently connecting to various remote or local endpoints
|
|
|
|
|
for exchanging bytes or objects
|
|
|
|
|
+ Added context manager mix-in classes (anyio.ContextManagerMixin
|
|
|
|
|
and anyio.AsyncContextManagerMixin) to help write classes that
|
|
|
|
|
embed other context managers, particularly cancel scopes or
|
|
|
|
|
task groups
|
|
|
|
|
+ Added the ability to specify the thread name in start_blocking
|
|
|
|
|
_portal()
|
|
|
|
|
+ Added anyio.notify_closing to allow waking anyio.wait_readable
|
|
|
|
|
and anyio.wait_writable before closing a socket. Among other
|
|
|
|
|
things, this prevents an OSError on the ProactorEventLoop.
|
|
|
|
|
+ Incorporated several documentation improvements from the
|
|
|
|
|
EuroPython 2025 sprint
|
|
|
|
|
+ Added a documentation page explaining why one might want to use
|
|
|
|
|
AnyIO's APIs instead of asyncio's
|
|
|
|
|
+ Updated the to_interpreters module to use the public
|
|
|
|
|
concurrent.interpreters API on Python 3.14 or later
|
|
|
|
|
+ Fixed anyio.Path.copy() and anyio.Path.copy_into() failing on
|
|
|
|
|
Python 3.14.0a7
|
|
|
|
|
+ Fixed return annotation of __aexit__ on async context managers.
|
|
|
|
|
+ Fixed rollover boundary check in SpooledTemporaryFile so that
|
|
|
|
|
rollover only occurs when the buffer size exceeds max_size
|
|
|
|
|
+ Migrated testing and documentation dependencies from extras to
|
|
|
|
|
dependency groups
|
|
|
|
|
+ Fixed compatibility of anyio.to_interpreter with Python 3.14.0
|
|
|
|
|
+ Fixed SyntaxWarning on Python 3.14 about return in finally
|
|
|
|
|
+ Fixed RunVar name conflicts. RunVar instances with the same
|
|
|
|
|
name should not share storage
|
|
|
|
|
+ Renamed the BrokenWorkerIntepreter exception to
|
|
|
|
|
BrokenWorkerInterpreter. The old name is available as a
|
|
|
|
|
deprecated alias.
|
|
|
|
|
+ Fixed an edge case in CapacityLimiter on asyncio where a task,
|
|
|
|
|
waiting to acquire a limiter gets cancelled and is subsequently
|
|
|
|
|
granted a token from the limiter, but before the cancellation
|
|
|
|
|
is delivered, and then fails to notify the next waiting task
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
Thu Aug 7 09:33:03 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
|
|
|
|
|
|
|
|
|
|
- Increase timeout in in test_keyboardinterrupt_during_test, it helps
|
|
|
|
|
with flaky tests in i586 arches.
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
Mon Jul 21 05:03:47 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>
|
|
|
|
|
|
|
|
|
|
- Inject multibuild to break a build loop.
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
Fri Jul 18 08:45:09 UTC 2025 - Felix Stegmeier <felix.stegmeier@suse.com>
|
|
|
|
|
|
|
|
|
|
- Update to 4.9.0:
|
|
|
|
|
* Added async support for temporary file handling (#344; PR by @11kkw)
|
|
|
|
|
* Added 4 new fixtures for the AnyIO pytest plugin:
|
|
|
|
|
* free_tcp_port_factory: session scoped fixture returning a callable
|
|
|
|
|
that generates unused TCP port numbers
|
|
|
|
|
* free_udp_port_factory: session scoped fixture returning a callable
|
|
|
|
|
that generates unused UDP port numbers
|
|
|
|
|
* free_tcp_port: function scoped fixture that invokes the
|
|
|
|
|
free_tcp_port_factory fixture to generate a free TCP port number
|
|
|
|
|
* free_udp_port: function scoped fixture that invokes the
|
|
|
|
|
free_udp_port_factory fixture to generate a free UDP port number
|
|
|
|
|
* Added stdin argument to anyio.run_process() akin to what
|
|
|
|
|
anyio.open_process(), asyncio.create_subprocess(), trio.run_process(),
|
|
|
|
|
and subprocess.run() already accept (PR by @jmehnle)
|
|
|
|
|
* Added the info property to anyio.Path on Python 3.14
|
|
|
|
|
* Changed anyio.getaddrinfo() to ignore (invalid) IPv6 name resolution
|
|
|
|
|
results when IPv6 support is disabled in Python
|
|
|
|
|
* Changed EndOfStream raised from MemoryObjectReceiveStream.receive()
|
|
|
|
|
to leave out the AttributeError from the exception chain which was
|
|
|
|
|
merely an implementation detail and caused some confusion
|
|
|
|
|
* Fixed traceback formatting growing quadratically with level of
|
|
|
|
|
TaskGroup nesting on asyncio due to exception chaining when raising
|
|
|
|
|
ExceptionGroups in TaskGroup.__aexit__ (#863; PR by @tapetersen)
|
|
|
|
|
* Fixed anyio.Path.iterdir() making a blocking call in Python 3.13
|
|
|
|
|
(#873; PR by @cbornet and @agronholm)
|
|
|
|
|
* Fixed connect_tcp() producing cyclic references in tracebacks when
|
|
|
|
|
raising exceptions (#809; PR by @graingert)
|
|
|
|
|
* Fixed anyio.to_thread.run_sync() needlessly holding on to references
|
|
|
|
|
of the context, function, arguments and others until the next work
|
|
|
|
|
item on asyncio (PR by @Wankupi)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
Mon Feb 10 09:17:39 UTC 2025 - Nico Krapp <nico.krapp@suse.com>
|
|
|
|
|
|
|
|
|
|
- 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)
|
|
|
|
|
- from 4.7.0:
|
|
|
|
|
* Updated TaskGroup to work with asyncio's eager task factories (#764)
|
|
|
|
|
* Added the wait_readable() and wait_writable() functions which will
|
|
|
|
|
accept an object with a .fileno() method or an integer handle, and
|
|
|
|
|
deprecated their now obsolete versions (wait_socket_readable() and
|
|
|
|
|
wait_socket_writable()) (PR by @davidbrochart)
|
|
|
|
|
* Changed EventAdapter (an Event with no bound async backend) to allow
|
|
|
|
|
set() to work even before an async backend is bound to it (#819)
|
|
|
|
|
* Added support for wait_readable() and wait_writable() on
|
|
|
|
|
ProactorEventLoop (used on asyncio + Windows by default)
|
|
|
|
|
* Fixed a misleading ValueError in the context of DNS failures
|
|
|
|
|
(#815; PR by @graingert)
|
|
|
|
|
* Fixed the return type annotations of readinto() and readinto1()
|
|
|
|
|
methods in the anyio.AsyncFile class (#825)
|
|
|
|
|
* Fixed TaskInfo.has_pending_cancellation() on asyncio returning
|
|
|
|
|
false positives in cleanup code on Python >= 3.11
|
|
|
|
|
(#832; PR by @gschaffner)
|
|
|
|
|
* Fixed cancelled cancel scopes on asyncio calling
|
|
|
|
|
asyncio.Task.uncancel when propagating a CancelledError on exit
|
|
|
|
|
to a cancelled parent scope (#790; PR by @gschaffner)
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
Tue Oct 22 16:00:48 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
|
|
- 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)
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
Wed Oct 2 18:02:06 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
|
|
|
|
|
|
|
|
|
|
- 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
|
|
|
|
|
* 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; PR by @Danipulok)
|
|
|
|
|
* Fixed to_process.run_sync() failing to initialize if
|
|
|
|
|
__main__.__file__ pointed to a file in a nonexistent directory
|
|
|
|
|
(#696)
|
|
|
|
|
* Fixed AssertionError: feed_data after feed_eof on asyncio when
|
|
|
|
|
a subprocess is closed early, before its output has been read
|
|
|
|
|
(#490)
|
|
|
|
|
* Fixed TaskInfo.has_pending_cancellation() on asyncio not
|
|
|
|
|
respecting shielded scopes (#771; PR by @gschaffner)
|
|
|
|
|
* Fixed SocketStream.receive() returning bytearray instead of
|
|
|
|
|
bytes when using asyncio with ProactorEventLoop (Windows)
|
|
|
|
|
(#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; PR by @tapetersen)
|
|
|
|
|
* Fixed KeyboardInterrupt (ctrl+c) hanging the asyncio pytest
|
|
|
|
|
runner
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
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>
|
|
|
|
|
|
|
|
|
|
|