17 Commits

Author SHA256 Message Date
a21f740b65 Accepting request 1299192 from devel:languages:python
Should fix the build in Staging:C

- Skip flaky test_keyboardinterrupt_during_test, the timeout increase
  doesn't always help.
- Fix build for Leap

- 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.

OBS-URL: https://build.opensuse.org/request/show/1299192
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-anyio?expand=0&rev=27
2025-08-13 14:23:33 +00:00
57f846e65f - Skip flaky test_keyboardinterrupt_during_test, the timeout increase
doesn't always help.
- Fix build for Leap

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=57
2025-08-13 06:27:22 +00:00
aabc50b179 Accepting request 1299049 from home:dimstar:Factory
Sadly. this still fails with glibc 2.42 on i586 :(

- 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

OBS-URL: https://build.opensuse.org/request/show/1299049
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=56
2025-08-12 13:29:36 +00:00
1fb8e41e15 Accepting request 1298106 from devel:languages:python
- Increase timeout in in test_keyboardinterrupt_during_test, it helps
  with flaky tests in i586 arches.

OBS-URL: https://build.opensuse.org/request/show/1298106
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-anyio?expand=0&rev=26
2025-08-08 13:09:55 +00:00
1b5c4a4565 - Increase timeout in in test_keyboardinterrupt_during_test, it helps
with flaky tests in i586 arches.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=54
2025-08-07 09:33:46 +00:00
052257cd28 Accepting request 1294656 from devel:languages:python
- Inject multibuild to break a build loop. 

- 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

OBS-URL: https://build.opensuse.org/request/show/1294656
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-anyio?expand=0&rev=25
2025-07-21 17:59:16 +00:00
ed724ac461 - Inject multibuild to break a build loop.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=52
2025-07-21 05:04:22 +00:00
302e3c293f Accepting request 1294357 from home:fstegmeier:branches:devel:languages:python
- 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)

OBS-URL: https://build.opensuse.org/request/show/1294357
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=51
2025-07-19 07:33:52 +00:00
67919f551d Accepting request 1244802 from devel:languages:python
- 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)

OBS-URL: https://build.opensuse.org/request/show/1244802
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-anyio?expand=0&rev=24
2025-02-11 20:21:06 +00:00
856dcb0c62 Accepting request 1244801 from home:mcalabkova:branches:devel:languages:python
typing_extensions is actually needed everywhere

OBS-URL: https://build.opensuse.org/request/show/1244801
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=49
2025-02-10 15:38:44 +00:00
9a12dfdfd0 Accepting request 1244708 from home:nkrapp:branches:devel:languages:python
- 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)

OBS-URL: https://build.opensuse.org/request/show/1244708
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=48
2025-02-10 13:47:37 +00:00
482ba65da9 Accepting request 1217080 from devel:languages:python
- 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)

OBS-URL: https://build.opensuse.org/request/show/1217080
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-anyio?expand=0&rev=23
2024-10-23 19:08:21 +00:00
4528cb6ee9 - 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)

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=46
2024-10-22 16:01:01 +00:00
46449c0f57 Accepting request 1205309 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1205309
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-anyio?expand=0&rev=22
2024-10-03 16:00:37 +00:00
e804669b94 Accepting request 1205307 from home:alarrosa:branches:devel:languages:python
- 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

OBS-URL: https://build.opensuse.org/request/show/1205307
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=44
2024-10-02 18:23:44 +00:00
c19058f4e9 Accepting request 1193842 from devel:languages:python
- 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

OBS-URL: https://build.opensuse.org/request/show/1193842
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-anyio?expand=0&rev=21
2024-08-15 07:57:34 +00:00
c0b1cee0f9 - 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

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=42
2024-06-12 09:21:15 +00:00
5 changed files with 311 additions and 16 deletions

3
_multibuild Normal file
View File

@@ -0,0 +1,3 @@
<multibuild>
<package>test</package>
</multibuild>

3
anyio-4.10.0.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3f3fae35c96039744587aa5b8371e7e8e603c0702999535961dd336026973ba6
size 213252

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6
size 159642

View File

@@ -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>

View File

@@ -1,7 +1,7 @@
#
# spec file for package python-anyio
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,40 +16,53 @@
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%define psuffix %{nil}
%bcond_with test
%endif
%{?sle15_python_module_pythons}
Name: python-anyio
Version: 4.3.0
Name: python-anyio%{psuffix}
Version: 4.10.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
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.11}
BuildRequires: %{python_module wheel}
BuildRequires: python-rpm-macros >= 20210127.3a18043
# SECTION test requirements
%if %{with test}
BuildRequires: %{python_module anyio = %{version}}
BuildRequires: %{python_module blockbuster}
BuildRequires: %{python_module exceptiongroup}
BuildRequires: %{python_module hypothesis >= 4.0}
BuildRequires: %{python_module psutil >= 5.9}
BuildRequires: %{python_module pytest >= 7.0}
BuildRequires: %{python_module pytest-mock >= 3.6.1}
BuildRequires: %{python_module trio >= 0.23}
BuildRequires: %{python_module toml}
BuildRequires: %{python_module trio}
BuildRequires: %{python_module trustme}
BuildRequires: %{python_module truststore}
BuildRequires: %{python_module uvloop}
%endif
# /SECTION
BuildRequires: fdupes
Requires: python-idna >= 2.8
Requires: python-sniffio >= 1.1
%if 0%{?python_version_nodots} < 313
Requires: python-typing_extensions >= 4.5
%endif
%if 0%{?python_version_nodots} < 311
Requires: python-exceptiongroup
Requires: python-typing_extensions
%endif
Suggests: python-trio >= 0.23
Suggests: python-trio >= 0.26.1
BuildArch: noarch
%python_subpackages
@@ -59,15 +72,25 @@ against it to run unmodified on asyncio, curio and trio.
%prep
%autosetup -p1 -n anyio-%{version}
# Fix license field in pyproject.toml for older setuptools
%if 0%{?suse_version} <= 1500
sed -i 's/license = "MIT"/license = { text = "MIT" }/' pyproject.toml
%endif
%build
%pyproject_wheel
%install
%if !%{with test}
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%if %{with test}
%check
# increase timeout in test_keyboardinterrupt_during_test
sed -i 's/timeout=3/timeout=8/' tests/test_pytest_plugin.py
sed -i '/filterwarnings/,/^]/ { /"error"/ d}' pyproject.toml
# bind and resolution failures inside OBS
donttest+=" or (TestTCPStream and (ipv4 or ipv6))"
@@ -87,12 +110,18 @@ donttest+=" or (test_exception_group and trio)"
# Fail with python 3.12
donttest+=" or (test_properties and trio)"
donttest+=" or (test_properties and asyncio)"
%pytest -m "not network" -k "not (${donttest:4})" -ra
# Flaky test in i586
donttest+=" or test_keyboardinterrupt_during_test"
%pytest -m "not network" -k "not (${donttest:4})" -ra
%endif
%if !%{with test}
%files %{python_files}
%doc README.rst
%license LICENSE
%{python_sitelib}/anyio
%{python_sitelib}/anyio-%{version}.dist-info
%endif
%changelog