15
0
forked from pool/python-anyio
Files
python-anyio/python-anyio.spec

128 lines
4.1 KiB
RPMSpec
Raw Permalink Normal View History

#
# spec file for package python-anyio
#
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
# 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
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%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}
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
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 pip}
- Update to 2.2.0: * Added the ``maybe_async()`` and ``maybe_async_cm()`` functions to facilitate forward compatibility with AnyIO 3 * Fixed socket stream bug on asyncio where receiving a half-close from the peer would shut down the entire connection * Fixed native task names not being set on asyncio on Python 3.8+ * Fixed ``TLSStream.send_eof()`` raising ``ValueError`` instead of the expected ``NotImplementedError`` * Fixed ``open_signal_receiver()`` on asyncio and curio hanging if the cancel scope was cancelled before the function could run * Fixed Trio test runner causing unwarranted test errors on ``BaseException``s * Fixed formatted output of ``ExceptionGroup`` containing too many newlines * Added the ``spawn_task()`` and ``wrap_async_context_manager()`` methods to ``BlockingPortal`` * Added the ``handshake_timeout`` and ``error_handler`` parameters to ``TLSListener`` * Fixed ``Event`` objects on the trio backend not inheriting from ``anyio.abc.Event`` * Fixed ``run_sync_in_worker_thread()`` raising ``UnboundLocalError`` on asyncio when cancelled * Fixed ``send()`` on socket streams not raising any exception on asyncio, and an unwrapped * ``BrokenPipeError`` on trio and curio when the peer has disconnected * Fixed ``MemoryObjectSendStream.send()`` raising ``BrokenResourceError`` when the last receiver is closed right after receiving the item * Fixed ``ValueError: Invalid file descriptor: -1`` when closing a ``SocketListener`` on asyncio OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=3
2021-03-15 05:59:35 +00:00
BuildRequires: %{python_module setuptools_scm}
BuildRequires: %{python_module wheel}
- Update to 2.2.0: * Added the ``maybe_async()`` and ``maybe_async_cm()`` functions to facilitate forward compatibility with AnyIO 3 * Fixed socket stream bug on asyncio where receiving a half-close from the peer would shut down the entire connection * Fixed native task names not being set on asyncio on Python 3.8+ * Fixed ``TLSStream.send_eof()`` raising ``ValueError`` instead of the expected ``NotImplementedError`` * Fixed ``open_signal_receiver()`` on asyncio and curio hanging if the cancel scope was cancelled before the function could run * Fixed Trio test runner causing unwarranted test errors on ``BaseException``s * Fixed formatted output of ``ExceptionGroup`` containing too many newlines * Added the ``spawn_task()`` and ``wrap_async_context_manager()`` methods to ``BlockingPortal`` * Added the ``handshake_timeout`` and ``error_handler`` parameters to ``TLSListener`` * Fixed ``Event`` objects on the trio backend not inheriting from ``anyio.abc.Event`` * Fixed ``run_sync_in_worker_thread()`` raising ``UnboundLocalError`` on asyncio when cancelled * Fixed ``send()`` on socket streams not raising any exception on asyncio, and an unwrapped * ``BrokenPipeError`` on trio and curio when the peer has disconnected * Fixed ``MemoryObjectSendStream.send()`` raising ``BrokenResourceError`` when the last receiver is closed right after receiving the item * Fixed ``ValueError: Invalid file descriptor: -1`` when closing a ``SocketListener`` on asyncio OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=3
2021-03-15 05:59:35 +00:00
BuildRequires: python-rpm-macros >= 20210127.3a18043
# SECTION test requirements
%if %{with test}
BuildRequires: %{python_module anyio = %{version}}
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
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}
Accepting request 897158 from home:alarrosa:branches:devel:languages:python - Update to 3.1.0: * Added env and cwd keyword arguments to run_process() and open_process. * Added support for mutation of CancelScope.shield (PR by John Belmonte) * Added the sleep_forever() and sleep_until() functions * Changed asyncio task groups so that if the host and child tasks have only raised CancelledErrors, just one CancelledError will now be raised instead of an ExceptionGroup, allowing asyncio to ignore it when it propagates out of the task * Changed task names to be converted to str early on asyncio (PR by Thomas Grainger) * Fixed sniffio._impl.AsyncLibraryNotFoundError: unknown async library, or not in async context on asyncio and Python 3.6 when to_thread.run_sync() is used from loop.run_until_complete() * Fixed odd ExceptionGroup: 0 exceptions were raised in the task group appearing under certain circumstances on asyncio * Fixed wait_all_tasks_blocked() returning prematurely on asyncio when a previously blocked task is cancelled (PR by Thomas Grainger) * Fixed declared return type of TaskGroup.start() (it was declared as None, but anything can be returned from it) * Fixed TextStream.extra_attributes raising AttributeError (PR by Thomas Grainger) * Fixed await maybe_async(current_task()) returning None (PR by Thomas Grainger) * Fixed: pickle.dumps(current_task()) now correctly raises TypeError instead of pickling to None (PR by Thomas Grainger) * Fixed return type annotation of Event.wait() (bool → None) (PR by Thomas Grainger) OBS-URL: https://build.opensuse.org/request/show/897158 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=5
2021-06-03 12:46:02 +00:00
BuildRequires: %{python_module pytest-mock >= 3.6.1}
BuildRequires: %{python_module toml}
BuildRequires: %{python_module trio}
BuildRequires: %{python_module trustme}
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
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
%endif
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
Suggests: python-trio >= 0.26.1
BuildArch: noarch
%python_subpackages
%description
Accepting request 897158 from home:alarrosa:branches:devel:languages:python - Update to 3.1.0: * Added env and cwd keyword arguments to run_process() and open_process. * Added support for mutation of CancelScope.shield (PR by John Belmonte) * Added the sleep_forever() and sleep_until() functions * Changed asyncio task groups so that if the host and child tasks have only raised CancelledErrors, just one CancelledError will now be raised instead of an ExceptionGroup, allowing asyncio to ignore it when it propagates out of the task * Changed task names to be converted to str early on asyncio (PR by Thomas Grainger) * Fixed sniffio._impl.AsyncLibraryNotFoundError: unknown async library, or not in async context on asyncio and Python 3.6 when to_thread.run_sync() is used from loop.run_until_complete() * Fixed odd ExceptionGroup: 0 exceptions were raised in the task group appearing under certain circumstances on asyncio * Fixed wait_all_tasks_blocked() returning prematurely on asyncio when a previously blocked task is cancelled (PR by Thomas Grainger) * Fixed declared return type of TaskGroup.start() (it was declared as None, but anything can be returned from it) * Fixed TextStream.extra_attributes raising AttributeError (PR by Thomas Grainger) * Fixed await maybe_async(current_task()) returning None (PR by Thomas Grainger) * Fixed: pickle.dumps(current_task()) now correctly raises TypeError instead of pickling to None (PR by Thomas Grainger) * Fixed return type annotation of Event.wait() (bool → None) (PR by Thomas Grainger) OBS-URL: https://build.opensuse.org/request/show/897158 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=5
2021-06-03 12:46:02 +00:00
Asynchronous compatibility API that allows applications and libraries written
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
Accepting request 919874 from home:bnavigator:branches:devel:languages:python - Update to v3.3.1 * Added missing documentation for the ExceptionGroup.exceptions attribute * Changed the asyncio test runner not to use uvloop by default (to match the behavior of anyio.run()) * Fixed RuntimeError on asyncio when a CancelledError is raised from a task spawned through a BlockingPortal (#357) * Fixed asyncio warning about a Future with an exception that was never retrieved which happened when a socket was already written to but the peer abruptly closed the connection - Release 3.3.0 * Added asynchronous Path class * Added the wrap_file() function for wrapping existing files as asynchronous file objects * Relaxed the type of the path initializer argument to FileReadStream and FileWriteStream so they accept any path-like object (including the new asynchronous Path class) * Dropped unnecessary dependency on the async_generator library * Changed the generics in AsyncFile so that the methods correctly return either str or bytes based on the argument to open_file() * Fixed an asyncio bug where under certain circumstances, a stopping worker thread would still accept new assignments, leading to a hang - Release 3.2.1 * Fixed idle thread pruning on asyncio sometimes causing an expired worker thread to be assigned a task - Release 3.2.0 * Added Python 3.10 compatibility * Added the ability to close memory object streams synchronously OBS-URL: https://build.opensuse.org/request/show/919874 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=7
2021-09-17 20:42:57 +00:00
sed -i '/filterwarnings/,/^]/ { /"error"/ d}' pyproject.toml
# bind and resolution failures inside OBS
donttest+=" or (TestTCPStream and (ipv4 or ipv6))"
donttest+=" or (TestTCPListener and (ipv4 or ipv6))"
donttest+=" or (TestConnectedUDPSocket and (ipv4 or ipv6))"
donttest+=" or (TestUDPSocket and (ipv4 or ipv6))"
# wrong localhost address
donttest+=" or (TestTCPStream and test_happy_eyeballs)"
donttest+=" or (TestTCPStream and test_connection_refused)"
donttest+=" or test_bind_link_local"
# does not raise an exception
donttest+=" or (TestTLSStream and test_ragged_eofs)"
%if 0%{?suse_version} < 1550
donttest+=" or (test_send_eof_not_implemented)"
%endif
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"
Accepting request 919874 from home:bnavigator:branches:devel:languages:python - Update to v3.3.1 * Added missing documentation for the ExceptionGroup.exceptions attribute * Changed the asyncio test runner not to use uvloop by default (to match the behavior of anyio.run()) * Fixed RuntimeError on asyncio when a CancelledError is raised from a task spawned through a BlockingPortal (#357) * Fixed asyncio warning about a Future with an exception that was never retrieved which happened when a socket was already written to but the peer abruptly closed the connection - Release 3.3.0 * Added asynchronous Path class * Added the wrap_file() function for wrapping existing files as asynchronous file objects * Relaxed the type of the path initializer argument to FileReadStream and FileWriteStream so they accept any path-like object (including the new asynchronous Path class) * Dropped unnecessary dependency on the async_generator library * Changed the generics in AsyncFile so that the methods correctly return either str or bytes based on the argument to open_file() * Fixed an asyncio bug where under certain circumstances, a stopping worker thread would still accept new assignments, leading to a hang - Release 3.2.1 * Fixed idle thread pruning on asyncio sometimes causing an expired worker thread to be assigned a task - Release 3.2.0 * Added Python 3.10 compatibility * Added the ability to close memory object streams synchronously OBS-URL: https://build.opensuse.org/request/show/919874 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-anyio?expand=0&rev=7
2021-09-17 20:42:57 +00:00
%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