From 98384c40725e14105440aee4d96db564507c064ac1010192dd5e751b583defc8 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Wed, 10 Dec 2025 10:06:19 +0000 Subject: [PATCH] - Update to 3.11.0 * ``sync_to_async`` gains a ``context`` parameter, similar to those for ``asyncio.create_task``, ``TaskGroup`` &co, that can be used on Python 3.11+ to control the context used by the underlying task. The parent context is already propagated by default but the additional control is useful if multiple ``sync_to_async`` calls need to share the same context, e.g. when used with ``asyncio.gather()``. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-asgiref?expand=0&rev=27 --- .gitattributes | 23 +++++ .gitignore | 1 + asgiref-3.11.0.tar.gz | 3 + asgiref-3.9.1.tar.gz | 3 + asgiref-3.9.2.tar.gz | 3 + python-asgiref.changes | 203 +++++++++++++++++++++++++++++++++++++++++ python-asgiref.spec | 64 +++++++++++++ 7 files changed, 300 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 asgiref-3.11.0.tar.gz create mode 100644 asgiref-3.9.1.tar.gz create mode 100644 asgiref-3.9.2.tar.gz create mode 100644 python-asgiref.changes create mode 100644 python-asgiref.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/asgiref-3.11.0.tar.gz b/asgiref-3.11.0.tar.gz new file mode 100644 index 0000000..6c1fdf2 --- /dev/null +++ b/asgiref-3.11.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13acff32519542a1736223fb79a715acdebe24286d98e8b164a73085f40da2c4 +size 37969 diff --git a/asgiref-3.9.1.tar.gz b/asgiref-3.9.1.tar.gz new file mode 100644 index 0000000..1e5117a --- /dev/null +++ b/asgiref-3.9.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5ab6582236218e5ef1648f242fd9f10626cfd4de8dc377db215d5d5098e3142 +size 36870 diff --git a/asgiref-3.9.2.tar.gz b/asgiref-3.9.2.tar.gz new file mode 100644 index 0000000..471c504 --- /dev/null +++ b/asgiref-3.9.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0249afacb66688ef258ffe503528360443e2b9a8d8c4581b6ebefa58c841ef1 +size 36894 diff --git a/python-asgiref.changes b/python-asgiref.changes new file mode 100644 index 0000000..6f4068c --- /dev/null +++ b/python-asgiref.changes @@ -0,0 +1,203 @@ +------------------------------------------------------------------- +Wed Dec 3 22:15:38 UTC 2025 - Guang Yee + +- Update to 3.11.0 + * ``sync_to_async`` gains a ``context`` parameter, similar to those for + ``asyncio.create_task``, ``TaskGroup`` &co, that can be used on Python 3.11+ to + control the context used by the underlying task. + The parent context is already propagated by default but the additional + control is useful if multiple ``sync_to_async`` calls need to share the same + context, e.g. when used with ``asyncio.gather()``. + +------------------------------------------------------------------- +Mon Sep 29 10:29:32 UTC 2025 - Dirk Müller + +- update to 3.9.2: + * Adds support for Python 3.14. + * Fixes wsgi.errors file descriptor in WsgiToAsgi adapter. + +------------------------------------------------------------------- +Thu Jul 17 08:40:37 UTC 2025 - Dirk Müller + +- update to 3.9.1: + * Adds support for Python 3.13. + * Drops support for (end-of-life) Python 3.8. + * Fixes an error with conflicting kwargs between AsyncToSync + and the wrapped function. (#471) + * Fixes Local isolation between asyncio Tasks. (#478) + * Fixes a reference cycle in Local (#508) + * Fixes a deadlock in CurrentThreadExecutor with nested + async_to_sync → + sync_to_async → async_to_sync → create_task calls. (#494) + * The ApplicationCommunicator testing utility will now return the + task result if it's already completed on send_input and + receive_nothing. You may need to catch (e.g.) the + asyncio.exceptions.CancelledError if sending messages to + already finished consumers in your tests. (#505) + +------------------------------------------------------------------- +Sun Apr 7 08:43:16 UTC 2024 - Dirk Müller + +- update to 3.8.1: + * Fixes a regression in 3.8.0 affecting nested task cancellation + inside sync_to_async. + * Adds support for Python 3.12. + * Drops support for (end-of-life) Python 3.7. + * Fixes task cancellation propagation to subtasks when using + synchronous Django middleware. + * Allows nesting ``sync_to_async`` via ``asyncio.wait_for``. + * Corrects WSGI adapter handling of root path. + * Handles case where `"client"` is ``None`` in WsgiToAsgi adapter. + +------------------------------------------------------------------- +Wed Nov 29 13:04:33 UTC 2023 - Dirk Müller + +- update to 3.7.2: + * The type annotations for SyncToAsync and AsyncToSync have been + changed to more accurately reflect the kind of callables they + return. + * On Python 3.10 and below, the version of the "typing_extensions" + package is now constrained to be at least version 4 (as we depend + on functionality in that version and above) + * Contextvars are now required for the implementation of `sync` + as Python 3.6 is now no longer a supported version. + * sync_to_async and async_to_sync now pass-through + * Debug and Lifespan State extensions have resulted in a typing + change for some request and response types. This change should + be backwards-compatible. + * ``asgiref`` frames will now be hidden in Django tracebacks + by default. + * Raw performance and garbage collection improvements in Local, + SyncToAsync, and AsyncToSync. + +------------------------------------------------------------------- +Fri Apr 21 12:22:02 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Thu Apr 13 22:39:57 UTC 2023 - Matej Cepl + +- Make calling of %{sle15modernpython} optional. + +------------------------------------------------------------------- +Sat Jan 7 09:11:28 UTC 2023 - Dirk Müller + +- update to 3.6.0: + * Two new functions are added to the ``asgiref.sync`` module: + ``iscoroutinefunction()`` and ``markcoroutinefunction()``. + * Python 3.12 deprecates ``asyncio.iscoroutinefunction()`` as an alias for + ``inspect.iscoroutinefunction()``, whilst also removing the + ``_is_coroutine`` marker. The latter is replaced with the + ``inspect.markcoroutinefunction`` decorator. + * The new ``asgiref.sync`` functions are compatibility shims for these + functions that can be used until Python 3.12 is the minimum supported + version. + * The ``loop`` argument to ``asgiref.timeout.timeout`` is deprecated. As per + other ``asyncio`` based APIs, the running event loop is used by default. + Note that ``asyncio`` provides timeout utilities from Python 3.11, and + these should be preferred where available. + * Support for the ``ASGI_THREADS`` environment variable, used by + ``SyncToAsync``, is removed. In general, a running event-loop is not + available to `asgiref` at import time, and so the default thread pool + executor cannot be configured. Protocol servers, or applications, should set + the default executor as required when configuring the event loop at + application startup. + +------------------------------------------------------------------- +Sat Jun 4 15:28:14 UTC 2022 - Dirk Müller + +- update to 3.5.2: + * Fix async-to-async typo + * Add tests for sync_to_async + * Improved docs - Starlette supports WebSockets + * Use get_event_loop in class-level code + * Changed how StatelessServer handles event loops + * Fixed pytest_asyncio deprecation warning. + * Drop python 3.6, add python 3.10 + * Fix allowed values for spec_version + * Rewrote multiprocessing test to use no local functions + * Fixed a typographical error + * Remove SOCK_NONBLOCK from socket creation on tests + * Preserve CurrentThreadExecutor across create_task + * Don't warn 'non-async-marked callable' for async callable instance + * Disallow async callable class instances as callable + * Fix root_path in WebSocket Connection Scope + +------------------------------------------------------------------- +Tue Aug 31 19:28:56 UTC 2021 - Torsten Gruner + +- Update to 3.4.1 + * Fixed an issue with the deadlock detection where it had false positives + during exception handling- Release to 3.4.0 +- Release to 3.4.0 + * Calling sync_to_async directly from inside itself (which causes a deadlock + when in the default, thread-sensitive mode) now has deadlock detection. + * asyncio usage has been updated to use the new versions of get_event_loop, + ensure_future, wait and gather, avoiding deprecation warnings in Python 3.10. + Python 3.6 installs continue to use the old versions; this is only for 3.7+ + * sync_to_async and async_to_sync now have improved type hints that pass + through the underlying function type correctly. + * All Websocket* types are now spelled WebSocket, to match our specs and the + official spelling. The old names will work until release 3.5.0, but will + raise deprecation warnings. + * The typing for WebSocketScope and HTTPScope's `extensions` key has been + fixed. + +------------------------------------------------------------------- +Wed Jul 7 09:46:52 UTC 2021 - Markéta Machová + +- Adjust requirements to work also on Leap + +------------------------------------------------------------------- +Wed May 5 17:30:59 UTC 2021 - Ben Greiner + +- Update to 3.3.4 + * The async_to_sync type error is now a warning due the + high false negative rate when trying to detect + coroutine-returning callables in Python. +- Release to 3.3.3 + * The sync conversion functions now correctly detect + functools.partial and other wrappers around async + functions on earlier Python releases. +- Release to 3.3.2 + * SyncToAsync now takes an optional "executor" argument if + you want to supply your own executor rather than using + the built-in one. + * async_to_sync and sync_to_async now check their + arguments are functions of the correct type. + * Raising CancelledError inside a SyncToAsync function no + longer stops a future call from functioning. + * ThreadSensitive now provides context hooks/override + options so it can be made to be sensitive in a unit + smaller than threads (e.g. per request) + +------------------------------------------------------------------- +Thu Jan 14 04:31:06 UTC 2021 - Steve Kowalik + +- Update to 3.3.1 + * Updated StatelessServer to use ASGI v3 single-callable applications. + * sync_to_async now defaults to thread-sensitive mode being on + * async_to_sync now works inside of forked processes + * WsgiToAsgi now correctly clamps its response body when Content-Length + is set + +------------------------------------------------------------------- +Wed Jul 1 04:59:38 UTC 2020 - Steve Kowalik + +- Update to 3.2.10: + * Fixed bugs due to bad WeakRef handling introduced in 3.2.8 + * Fixed regression with exception handling in 3.2.8 related to the + contextvars fix. + * Fixed small memory leak in local.Local + * contextvars are now persisted through AsyncToSync + +------------------------------------------------------------------- +Fri Apr 24 06:47:42 UTC 2020 - Tomáš Chvátal + +- Execute tests + +------------------------------------------------------------------- +Thu Apr 23 16:53:45 UTC 2020 - Marcus Rueckert + +- initial package diff --git a/python-asgiref.spec b/python-asgiref.spec new file mode 100644 index 0000000..879891a --- /dev/null +++ b/python-asgiref.spec @@ -0,0 +1,64 @@ +# +# spec file for package python-asgiref +# +# 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/ +# + + +%{?sle15_python_module_pythons} +Name: python-asgiref +Version: 3.11.0 +Release: 0 +Summary: ASGI specs, helper code, and adapters +License: BSD-3-Clause +Group: Development/Languages/Python +URL: https://github.com/django/asgiref/ +Source: https://files.pythonhosted.org/packages/source/a/asgiref/asgiref-%{version}.tar.gz +BuildRequires: %{python_module base >= 3.7} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pytest-asyncio} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +BuildArch: noarch +BuildRequires: %{python_module typing-extensions > 4} +Requires: python-typing-extensions > 4 +%python_subpackages + +%description +ASGI is a standard for Python asynchronous web apps and servers to communicate +with each other, and positioned as an asynchronous successor to WSGI. You can +read more at https://asgi.readthedocs.io/en/latest/ + +%prep +%setup -q -n asgiref-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +%pytest + +%files %{python_files} +%license LICENSE +%doc README.rst +%{python_sitelib}/asgiref +%{python_sitelib}/asgiref-%{version}.dist-info + +%changelog