14
0
forked from pool/python-trio
Files
python-trio/python-trio.spec

112 lines
4.0 KiB
RPMSpec
Raw Permalink Normal View History

#
# spec file for package python-trio
#
Accepting request 1240795 from home:glaubitz:branches:devel:languages:python - Update to 0.28.0 * :func:inspect.iscoroutinefunction and the like now give correct answers when called on KI-protected functions. * Rework KeyboardInterrupt protection to track code objects, rather than frames, as protected or not. The new implementation no longer needs to access frame.f_locals dictionaries, so it won't artificially extend the lifetime of local variables. Since KeyboardInterrupt protection is now imposed statically (when a protected function is defined) rather than each time the function runs, its previously-noticeable performance overhead should now be near zero. The lack of a call-time wrapper has some other benefits as well: * :func:inspect.iscoroutinefunction and the like now give correct answers when called on KI-protected functions. * Calling a synchronous KI-protected function no longer pushes an additional stack frame, so tracebacks are clearer. * A synchronous KI-protected function invoked from C code (such as a weakref finalizer) is now guaranteed to start executing; previously there would be a brief window in which KeyboardInterrupt could be raised before the protection was established. * One minor drawback of the new approach is that multiple instances of the same closure share a single KeyboardInterrupt protection state (because they share a single code object). That means that if you apply trio.lowlevel.enable_ki_protection to some of them and not others, you won't get the protection semantics you asked for. See the documentation of trio.lowlevel.enable_ki_protection for more details and a workaround. * Rework foreign async generator finalization to track async generator ids rather than mutating ag_frame.f_locals. This fixes an issue with the previous implementation: locals' lifetimes will no longer be extended by materialization in the ag_frame.f_locals dictionary that the previous finalization dispatcher logic needed to access to do its work. OBS-URL: https://build.opensuse.org/request/show/1240795 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=52
2025-01-28 11:09:05 +00:00
# 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
# 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
- update to 0.23.1: * Don't crash on import in Anaconda interpreters. * Add type hints. * When exiting a nursery block, the parent task always waits for child tasks to exit. This wait cannot be cancelled. However, previously, if you tried to cancel it, it *would* inject a `Cancelled` exception, even though it wasn't cancelled. Most users probably never noticed either way, but injecting a `Cancelled` here is not really useful, and in some rare cases caused confusion or problems, so Trio no longer does that. * If called from a thread spawned by `trio.to_thread.run_sync`, `trio.from_thread.run` and `trio.from_thread.run_sync` now reuse the task and cancellation status of the host task; * this means that context variables and cancel scopes naturally propagate 'through' threads spawned by Trio. You can also use `trio.from_thread.check_cancelled` to efficiently check for cancellation without reentering the Trio thread. * :func:`trio.lowlevel.start_guest_run` now does a bit more setup of the guest run before it returns to its caller, so that the caller can immediately make calls to :func:`trio.current_time`, :func:`trio.lowlevel.spawn_system_task`, :func:`trio.lowlevel.current_trio_token`, etc. * When a starting function raises before calling :func:`trio.TaskStatus.started`, :func:`trio.Nursery.start` will no longer wrap the exception in an undocumented :exc:`ExceptionGroup`. * To better reflect the underlying thread handling semantics, the keyword argument for `trio.to_thread.run_sync` that was OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=39
2023-11-07 15:09:46 +00:00
%{?sle15_python_module_pythons}
Name: python-trio%{psuffix}
Version: 0.30.0
Release: 0
Summary: Python async/await-native I/O library
Accepting request 940110 from home:bnavigator:python-rpm-macros - Update to version 0.19.0 * Trio now supports Python 3.10. (#1921) * Use slots for `~.lowlevel.Task` which should make them slightly smaller and faster. (#1927) * Make `~.Event` more lightweight by using less objects (about 2 rather than 5, including a nested ParkingLot and attribute dicts) and simpler structures (set rather than OrderedDict). This may benefit applications that create a large number of event instances, such as with the "replace event object on every set()" idiom. (#1948) * The event loop now holds on to references of coroutine frames for only the minimum necessary period of time. (#1864) * The `~.lowlevel.TrioToken` class can now be used as a target of a weak reference. (#1924) - Release 0.18.0 * Add synchronous .close() methods and context manager (with x) support for .MemorySendChannel and .MemoryReceiveChannel. (#1797) * Previously, on Windows, Trio programs using thousands of sockets at the same time could trigger extreme slowdowns in the Windows kernel. Now, Trio works around this issue, so you should be able to use as many sockets as you want. (#1280) * `trio.from_thread.run` no longer crashes the Trio run if it is executed after the system nursery has been closed but before the run has finished. Calls made at this time will now raise trio.RunFinishedError. This fixes a regression introduced in Trio 0.17.0. The window in question is only one scheduler tick long in most cases, but may be longer if async generators need to be cleaned up. (#1738) * Fix a crash in pypy-3.7 (#1765) OBS-URL: https://build.opensuse.org/request/show/940110 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=21
2021-12-14 18:13:45 +00:00
License: Apache-2.0 OR MIT
URL: https://github.com/python-trio/trio
Source: https://files.pythonhosted.org/packages/source/t/trio/trio-%{version}.tar.gz
Patch1: https://github.com/python-trio/trio/pull/3292/commits/c6e15249dc0cfe29bdbe6829ae4a3891aa147aa3.patch#/pyopenssl-25-1-compatibility.patch
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools > 77}
BuildRequires: %{python_module wheel}
- update to 0.23.1: * Don't crash on import in Anaconda interpreters. * Add type hints. * When exiting a nursery block, the parent task always waits for child tasks to exit. This wait cannot be cancelled. However, previously, if you tried to cancel it, it *would* inject a `Cancelled` exception, even though it wasn't cancelled. Most users probably never noticed either way, but injecting a `Cancelled` here is not really useful, and in some rare cases caused confusion or problems, so Trio no longer does that. * If called from a thread spawned by `trio.to_thread.run_sync`, `trio.from_thread.run` and `trio.from_thread.run_sync` now reuse the task and cancellation status of the host task; * this means that context variables and cancel scopes naturally propagate 'through' threads spawned by Trio. You can also use `trio.from_thread.check_cancelled` to efficiently check for cancellation without reentering the Trio thread. * :func:`trio.lowlevel.start_guest_run` now does a bit more setup of the guest run before it returns to its caller, so that the caller can immediately make calls to :func:`trio.current_time`, :func:`trio.lowlevel.spawn_system_task`, :func:`trio.lowlevel.current_trio_token`, etc. * When a starting function raises before calling :func:`trio.TaskStatus.started`, :func:`trio.Nursery.start` will no longer wrap the exception in an undocumented :exc:`ExceptionGroup`. * To better reflect the underlying thread handling semantics, the keyword argument for `trio.to_thread.run_sync` that was OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=39
2023-11-07 15:09:46 +00:00
BuildRequires: fdupes
BuildRequires: netcfg
BuildRequires: python-rpm-macros
Requires: python-attrs >= 20.1.0
- update to 0.23.1: * Don't crash on import in Anaconda interpreters. * Add type hints. * When exiting a nursery block, the parent task always waits for child tasks to exit. This wait cannot be cancelled. However, previously, if you tried to cancel it, it *would* inject a `Cancelled` exception, even though it wasn't cancelled. Most users probably never noticed either way, but injecting a `Cancelled` here is not really useful, and in some rare cases caused confusion or problems, so Trio no longer does that. * If called from a thread spawned by `trio.to_thread.run_sync`, `trio.from_thread.run` and `trio.from_thread.run_sync` now reuse the task and cancellation status of the host task; * this means that context variables and cancel scopes naturally propagate 'through' threads spawned by Trio. You can also use `trio.from_thread.check_cancelled` to efficiently check for cancellation without reentering the Trio thread. * :func:`trio.lowlevel.start_guest_run` now does a bit more setup of the guest run before it returns to its caller, so that the caller can immediately make calls to :func:`trio.current_time`, :func:`trio.lowlevel.spawn_system_task`, :func:`trio.lowlevel.current_trio_token`, etc. * When a starting function raises before calling :func:`trio.TaskStatus.started`, :func:`trio.Nursery.start` will no longer wrap the exception in an undocumented :exc:`ExceptionGroup`. * To better reflect the underlying thread handling semantics, the keyword argument for `trio.to_thread.run_sync` that was OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=39
2023-11-07 15:09:46 +00:00
Requires: python-idna
Requires: python-outcome
Requires: python-sniffio >= 1.3.0
Requires: python-sortedcontainers
BuildArch: noarch
%if 0%{?python_version_nodots} < 311
Requires: python-exceptiongroup
%endif
%if %{with test}
Accepting request 721060 from home:pgajdos - version update to 0.12.1 Features * If you have a `~trio.abc.ReceiveStream` object, you can now use ``async for data in stream: ...`` instead of calling `~trio.abc.ReceiveStream.receive_some`. Each iteration gives an arbitrary sized chunk of bytes. And the best part is, the loop automatically exits when you reach EOF, so you don't have to check for it yourself anymore. Relatedly, you no longer need to pick a magic buffer size value before calling `~trio.abc.ReceiveStream.receive_some`; you can ``await stream.receive_some()`` with no arguments, and the stream will automatically pick a reasonable size for you. (`#959 <https://github.com/python-trio/trio/issues/959>`__) * Threading interfaces have been reworked: ``run_sync_in_worker_thread`` is now `trio.to_thread.run_sync`, and instead of ``BlockingTrioPortal``, use `trio.from_thread.run` and `trio.from_thread.run_sync`. What's neat about this is that these cooperate, so if you're in a thread created by `to_thread.run_sync`, it remembers which Trio created it, and you can call ``trio.from_thread.*`` directly without having to pass around a ``BlockingTrioPortal`` object everywhere. (`#810 <https://github.com/python-trio/trio/issues/810>`__) * We cleaned up the distinction between the "abstract channel interface" and the "memory channel" concrete implementation. `trio.abc.SendChannel` and `trio.abc.ReceiveChannel` have been slimmed down, `trio.MemorySendChannel` and `trio.MemoryReceiveChannel` are now public types that can be used in type hints, and there's a new `trio.abc.Channel` interface for future bidirectional channels. (`#719 <https://github.com/python-trio/trio/issues/719>`__) * Add :func:`trio.run_process` as a high-level helper for running a process and waiting for it to finish, like the standard :func:`subprocess.run` does. (`#822 <https://github.com/python-trio/trio/issues/822>`__) * On Linux, when wrapping a bare file descriptor in a Trio socket object, Trio now auto-detects the correct ``family``, ``type``, and ``protocol``. OBS-URL: https://build.opensuse.org/request/show/721060 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=8
2019-08-05 18:07:36 +00:00
BuildRequires: %{python_module astor >= 0.8}
BuildRequires: %{python_module async_generator >= 1.9}
BuildRequires: %{python_module pyOpenSSL}
BuildRequires: %{python_module pytest >= 5.0}
- update to 0.23.1: * Don't crash on import in Anaconda interpreters. * Add type hints. * When exiting a nursery block, the parent task always waits for child tasks to exit. This wait cannot be cancelled. However, previously, if you tried to cancel it, it *would* inject a `Cancelled` exception, even though it wasn't cancelled. Most users probably never noticed either way, but injecting a `Cancelled` here is not really useful, and in some rare cases caused confusion or problems, so Trio no longer does that. * If called from a thread spawned by `trio.to_thread.run_sync`, `trio.from_thread.run` and `trio.from_thread.run_sync` now reuse the task and cancellation status of the host task; * this means that context variables and cancel scopes naturally propagate 'through' threads spawned by Trio. You can also use `trio.from_thread.check_cancelled` to efficiently check for cancellation without reentering the Trio thread. * :func:`trio.lowlevel.start_guest_run` now does a bit more setup of the guest run before it returns to its caller, so that the caller can immediately make calls to :func:`trio.current_time`, :func:`trio.lowlevel.spawn_system_task`, :func:`trio.lowlevel.current_trio_token`, etc. * When a starting function raises before calling :func:`trio.TaskStatus.started`, :func:`trio.Nursery.start` will no longer wrap the exception in an undocumented :exc:`ExceptionGroup`. * To better reflect the underlying thread handling semantics, the keyword argument for `trio.to_thread.run_sync` that was OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=39
2023-11-07 15:09:46 +00:00
BuildRequires: %{python_module trio = %{version}}
BuildRequires: %{python_module trustme}
BuildRequires: %{python_module yapf >= 0.27.0}
%endif
%python_subpackages
%description
The Trio project produces an async/await-native I/O library for
Python. Like all async libraries, its main purpose is to help write
programs that do multiple things at the same time with parallelized
I/O, such as a web spider that wants to fetch lots of pages in
parallel, a web server that needs to juggle lots of downloads and
websocket connections at the same time, a process supervisor
monitoring multiple subprocesses. Compared to other libraries, Trio
has an obsessive focus on usability and correctness.
%prep
Accepting request 940110 from home:bnavigator:python-rpm-macros - Update to version 0.19.0 * Trio now supports Python 3.10. (#1921) * Use slots for `~.lowlevel.Task` which should make them slightly smaller and faster. (#1927) * Make `~.Event` more lightweight by using less objects (about 2 rather than 5, including a nested ParkingLot and attribute dicts) and simpler structures (set rather than OrderedDict). This may benefit applications that create a large number of event instances, such as with the "replace event object on every set()" idiom. (#1948) * The event loop now holds on to references of coroutine frames for only the minimum necessary period of time. (#1864) * The `~.lowlevel.TrioToken` class can now be used as a target of a weak reference. (#1924) - Release 0.18.0 * Add synchronous .close() methods and context manager (with x) support for .MemorySendChannel and .MemoryReceiveChannel. (#1797) * Previously, on Windows, Trio programs using thousands of sockets at the same time could trigger extreme slowdowns in the Windows kernel. Now, Trio works around this issue, so you should be able to use as many sockets as you want. (#1280) * `trio.from_thread.run` no longer crashes the Trio run if it is executed after the system nursery has been closed but before the run has finished. Calls made at this time will now raise trio.RunFinishedError. This fixes a regression introduced in Trio 0.17.0. The window in question is only one scheduler tick long in most cases, but may be longer if async generators need to be cleaned up. (#1738) * Fix a crash in pypy-3.7 (#1765) OBS-URL: https://build.opensuse.org/request/show/940110 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=21
2021-12-14 18:13:45 +00:00
%autosetup -p1 -n trio-%{version}
Accepting request 1250113 from home:glaubitz:branches:devel:languages:python - Update to 0.29.0 * Add trio.lowlevel.in_trio_run() and trio.lowlevel.in_trio_task() and document the semantics (and differences) thereof. See the documentation. (#2757) * If trio.testing.RaisesGroup does not get the expected exceptions it now raises an AssertionError with a helpful message, instead of letting the raised exception/ group fall through. The raised exception is available in the __context__ of the AssertionError and can be seen in the traceback. (#3145) * Clear Trio’s cache of worker threads upon os.fork. (#2764) * Stop using ctypes to mutate tracebacks for strict_exception_groups=False’s exception collapsing. (#405) * Fixed spelling error in Windows error code enum for ERROR_INVALID_PARAMETER. (#3166) * Publicly re-export __version__ for type checking purposes. (#3186) * The typing of trio.abc.HostnameResolver.getaddrinfo() has been corrected to match that of the stdlib socket.getaddrinfo, which was updated in mypy 1.15 (via a typeshed update) to include the possibility of tuple[int, bytes] for the sockaddr field of the result. This happens in situations where Python was compiled with --disable-ipv6. * Additionally, the static typing of trio.to_thread.run_sync(), trio.from_thread.run() and trio.from_thread.run_sync() has been improved and should reflect the underlying function being run. (#3201) - Add sed command to remove shebangs from check_type_completeness.py and gen_exports.py OBS-URL: https://build.opensuse.org/request/show/1250113 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=54
2025-03-05 10:54:59 +00:00
sed -i '/\/usr\/bin\/env\ python3/d' src/trio/_tests/check_type_completeness.py src/trio/_tools/gen_exports.py
%build
%pyproject_wheel
%install
%if %{without test}
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%check
%if %{with test}
export PYTEST_ADDOPTS="-W ignore::DeprecationWarning"
# test_static_tool_sees_all_symbols uses jedi/pylint for static analysis,
# pointless for us.
donttest="test_static_tool_sees_all_symbols"
# test_SSLStream_generic deadlocks in OBS
donttest+=" or test_SSLStream_generic"
# test_close_at_bad_time_for_send_all fails on PPC https://github.com/python-trio/trio/issues/1753
donttest+=" or test_close_at_bad_time_for_send_all"
# test_local_address_real fails on qemu_linux_user targets
donttest+=" or test_local_address_real"
# Don't run lint tests
donttest+=" or run_black or run_ruff or lint_failure or test_process"
%pytest -m 'not redistributors_should_skip' -k "not ($donttest)" --pyargs trio -p trio._tests.pytest_plugin --skip-optional-imports
%endif
%if %{without test}
%files %{python_files}
%doc README.rst
%license LICENSE LICENSE.APACHE2 LICENSE.MIT
Accepting request 940110 from home:bnavigator:python-rpm-macros - Update to version 0.19.0 * Trio now supports Python 3.10. (#1921) * Use slots for `~.lowlevel.Task` which should make them slightly smaller and faster. (#1927) * Make `~.Event` more lightweight by using less objects (about 2 rather than 5, including a nested ParkingLot and attribute dicts) and simpler structures (set rather than OrderedDict). This may benefit applications that create a large number of event instances, such as with the "replace event object on every set()" idiom. (#1948) * The event loop now holds on to references of coroutine frames for only the minimum necessary period of time. (#1864) * The `~.lowlevel.TrioToken` class can now be used as a target of a weak reference. (#1924) - Release 0.18.0 * Add synchronous .close() methods and context manager (with x) support for .MemorySendChannel and .MemoryReceiveChannel. (#1797) * Previously, on Windows, Trio programs using thousands of sockets at the same time could trigger extreme slowdowns in the Windows kernel. Now, Trio works around this issue, so you should be able to use as many sockets as you want. (#1280) * `trio.from_thread.run` no longer crashes the Trio run if it is executed after the system nursery has been closed but before the run has finished. Calls made at this time will now raise trio.RunFinishedError. This fixes a regression introduced in Trio 0.17.0. The window in question is only one scheduler tick long in most cases, but may be longer if async generators need to be cleaned up. (#1738) * Fix a crash in pypy-3.7 (#1765) OBS-URL: https://build.opensuse.org/request/show/940110 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=21
2021-12-14 18:13:45 +00:00
%{python_sitelib}/trio
%{python_sitelib}/trio-%{version}.dist-info
%endif
%changelog