15
0
forked from pool/python-anyio

9 Commits

Author SHA256 Message Date
eec57d7264 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
6b19aeffcb typing_extensions is actually needed everywhere
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
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)

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
68f5945ee8 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
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)

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

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

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 14 additions and 143 deletions

View File

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

View File

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

BIN
anyio-4.8.0.tar.gz LFS Normal file

Binary file not shown.

View File

@@ -1,101 +1,3 @@
-------------------------------------------------------------------
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>

View File

@@ -1,7 +1,7 @@
#
# spec file for package python-anyio
#
# Copyright (c) 2025 SUSE LLC and contributors
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,49 +16,37 @@
#
%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%{psuffix}
Version: 4.10.0
Name: python-anyio
Version: 4.8.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}
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 toml}
BuildRequires: %{python_module trio}
BuildRequires: %{python_module trio >= 0.26.1}
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
Requires: python-typing_extensions
%if 0%{?python_version_nodots} < 311
Requires: python-exceptiongroup
%endif
@@ -72,25 +60,15 @@ 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))"
@@ -110,18 +88,12 @@ donttest+=" or (test_exception_group and trio)"
# Fail with python 3.12
donttest+=" or (test_properties and trio)"
donttest+=" or (test_properties and asyncio)"
# 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