14
0

- Update to 0.36.0

* Don't include cwd() when non-empty --reload-dirs is passed
  * Apply get_client_addr formatting to WebSocket logging
  * Add WebSocketsSansIOProtocol
  * Refine help message for option --proxy-headers
  * Support custom IOLOOPs
  * Allow to provide importable string in --http, --ws and --loop
- support-websockets-14+.patch was almost fixed upstream, apply the rest
- Add upstream patch py314.patch to fix build with Python 3.14

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-uvicorn?expand=0&rev=44
This commit is contained in:
2025-09-23 13:22:51 +00:00
committed by Git OBS Bridge
commit 50289d2a3f
7 changed files with 761 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

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

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

156
py314.patch Normal file
View File

@@ -0,0 +1,156 @@
From 208a37a4de8f2fd6697dc3eaf076bac7442f5628 Mon Sep 17 00:00:00 2001
From: Thomas Grainger <tagrain@gmail.com>
Date: Sat, 14 Oct 2023 11:48:19 +0100
Subject: [PATCH 01/19] use asyncio.run(..., loop_factory) to avoid
asyncio.set_event_loop_policy
---
tests/test_auto_detection.py | 11 ++---
uvicorn/_compat.py | 86 ++++++++++++++++++++++++++++++++++++
uvicorn/config.py | 17 +++----
uvicorn/loops/asyncio.py | 13 ++++--
uvicorn/loops/auto.py | 18 +++++---
uvicorn/loops/uvloop.py | 9 +++-
uvicorn/main.py | 4 +-
uvicorn/server.py | 4 +-
uvicorn/workers.py | 6 +--
9 files changed, 138 insertions(+), 30 deletions(-)
create mode 100644 uvicorn/_compat.py
Index: uvicorn-0.36.0/tests/test_auto_detection.py
===================================================================
--- uvicorn-0.36.0.orig/tests/test_auto_detection.py
+++ uvicorn-0.36.0/tests/test_auto_detection.py
@@ -1,6 +1,7 @@
import asyncio
import contextlib
import importlib
+import sys
import pytest
@@ -12,9 +13,14 @@ from uvicorn.server import ServerState
try:
importlib.import_module("uvloop")
- expected_loop = "uvloop" # pragma: py-win32
except ImportError: # pragma: py-not-win32
expected_loop = "asyncio"
+except AttributeError: # pragma: py-lt-314 # pragma: py-win32
+ if sys.version_info < (3, 14): # pragma: no cover
+ raise
+ expected_loop = "asyncio"
+else: # pragma: py-win32 # pragma: py-gte-314
+ expected_loop = "uvloop"
try:
importlib.import_module("httptools")
Index: uvicorn-0.36.0/uvicorn/_compat.py
===================================================================
--- uvicorn-0.36.0.orig/uvicorn/_compat.py
+++ uvicorn-0.36.0/uvicorn/_compat.py
@@ -5,6 +5,13 @@ import sys
from collections.abc import Callable, Coroutine
from typing import Any, TypeVar
+__all__ = ["asyncio_run", "iscoroutinefunction"]
+
+if sys.version_info >= (3, 14):
+ from inspect import iscoroutinefunction
+else:
+ from asyncio import iscoroutinefunction
+
_T = TypeVar("_T")
if sys.version_info >= (3, 12):
Index: uvicorn-0.36.0/uvicorn/config.py
===================================================================
--- uvicorn-0.36.0.orig/uvicorn/config.py
+++ uvicorn-0.36.0/uvicorn/config.py
@@ -16,6 +16,7 @@ from typing import IO, Any, Callable, Li
import click
+from uvicorn._compat import iscoroutinefunction
from uvicorn._types import ASGIApplication
from uvicorn.importer import ImportFromStringError, import_from_string
from uvicorn.logging import TRACE_LOG_LEVEL
Index: uvicorn-0.36.0/uvicorn/loops/auto.py
===================================================================
--- uvicorn-0.36.0.orig/uvicorn/loops/auto.py
+++ uvicorn-0.36.0/uvicorn/loops/auto.py
@@ -1,17 +1,23 @@
from __future__ import annotations
import asyncio
+import sys
from collections.abc import Callable
-def auto_loop_factory(use_subprocess: bool = False) -> Callable[[], asyncio.AbstractEventLoop]:
+def auto_loop_factory(use_subprocess: bool = False) -> Callable[[], asyncio.AbstractEventLoop]: # pragma: no cover
try:
import uvloop # noqa
except ImportError: # pragma: no cover
- from uvicorn.loops.asyncio import asyncio_loop_factory as loop_factory
-
- return loop_factory(use_subprocess=use_subprocess)
+ pass
+ except AttributeError: # pragma: no cover
+ if sys.version_info < (3, 14):
+ raise
else: # pragma: no cover
from uvicorn.loops.uvloop import uvloop_loop_factory
return uvloop_loop_factory(use_subprocess=use_subprocess)
+
+ from uvicorn.loops.asyncio import asyncio_loop_factory as loop_factory
+
+ return loop_factory(use_subprocess=use_subprocess)
Index: uvicorn-0.36.0/pyproject.toml
===================================================================
--- uvicorn-0.36.0.orig/pyproject.toml
+++ uvicorn-0.36.0/pyproject.toml
@@ -25,6 +25,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Internet :: WWW/HTTP",
@@ -160,6 +161,7 @@ exclude_lines = [
"tests/supervisors/test_multiprocess.py",
]
"sys_platform != 'win32'" = ["uvicorn/loops/asyncio.py"]
+"sys_version_info >= (3, 14)" = ["uvicorn/loops/uvloop.py"]
[tool.coverage.coverage_conditional_plugin.rules]
py-win32 = "sys_platform == 'win32'"
@@ -173,3 +175,5 @@ py-gte-310 = "sys_version_info >= (3, 10
py-lt-310 = "sys_version_info < (3, 10)"
py-gte-311 = "sys_version_info >= (3, 11)"
py-lt-311 = "sys_version_info < (3, 11)"
+py-gte-314 = "sys_version_info >= (3, 14)"
+py-lt-314 = "sys_version_info < (3, 14)"
Index: uvicorn-0.36.0/tests/test_compat.py
===================================================================
--- uvicorn-0.36.0.orig/tests/test_compat.py
+++ uvicorn-0.36.0/tests/test_compat.py
@@ -1,6 +1,7 @@
from __future__ import annotations
import asyncio
+import sys
from asyncio import AbstractEventLoop
import pytest
@@ -23,7 +24,7 @@ def test_asyncio_run__custom_loop_factor
def test_asyncio_run__passing_a_non_awaitable_callback_should_throw_error() -> None:
- with pytest.raises(ValueError):
+ with pytest.raises(TypeError if sys.version_info >= (3, 14) else ValueError):
asyncio_run(
lambda: None, # type: ignore
loop_factory=CustomLoop,

444
python-uvicorn.changes Normal file
View File

@@ -0,0 +1,444 @@
-------------------------------------------------------------------
Mon Sep 22 13:01:16 UTC 2025 - Markéta Machová <mmachova@suse.com>
- Update to 0.36.0
* Don't include cwd() when non-empty --reload-dirs is passed
* Apply get_client_addr formatting to WebSocket logging
* Add WebSocketsSansIOProtocol
* Refine help message for option --proxy-headers
* Support custom IOLOOPs
* Allow to provide importable string in --http, --ws and --loop
- support-websockets-14+.patch was almost fixed upstream, apply the rest
- Add upstream patch py314.patch to fix build with Python 3.14
-------------------------------------------------------------------
Mon Aug 25 14:27:42 UTC 2025 - Markéta Machová <mmachova@suse.com>
- Convert to libalternatives on SLE-16-based and newer systems
-------------------------------------------------------------------
Thu May 1 06:28:46 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>
- Update to 0.34.2:
* Added
+ Add content-length to 500 response in wsproto implementation
* Fixed
+ Flush stdout buffer on Windows to trigger reload
+ Drop ASGI spec version to 2.3 on HTTP scope
+ Enable httptools lenient data on httptools >= 0.6.3
* Deprecated
+ Deprecate ServerState in the main module
* Removed
+ Drop support for Python 3.8
+ Remove WatchGod support for --reload
- Add patch support-websockets-14+.patch:
* Ignore multiple classes of DeprecationWarnings.
-------------------------------------------------------------------
Wed Oct 30 10:37:07 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.32.0:
* Officially support Python 3.13
* Warn when `max_request_limit` is exceeded
* Support WebSockets 0.13.1
* Restore support for `[*]` in trusted hosts
* Add `PathLike[str]` type hint for `ssl_keyfile`
* Improve `ProxyHeadersMiddleware` (#2468) and (#2231):
* Fix the host for requests from clients running on the proxy
server itself.
* Fallback to host that was already set for empty x-forwarded-
for headers.
* Also allow to specify IP Networks as trusted hosts. This
greatly simplifies deployments
* on docker swarm/kubernetes, where the reverse proxy might
have a dynamic IP.
* This includes support for IPv6 Address/Networks.
* Don't warn when upgrade is not WebSocket and depedencies are
installed
* Don't close connection before receiving body on H11
* Close connection when `h11` sets client state to `MUST_CLOSE`
* Suppress `KeyboardInterrupt` from CLI and programmatic usage
* `ClientDisconnect` inherits from `OSError` instead of
`IOError`
* Add `reason` support to `websocket.disconnect` event
* Iterate subprocesses in-place on the process manager
* Allow horizontal tabs ` ` in response header values
* New multiprocess manager
* Allow `ConfigParser` or a `io.IO[Any]` on `log_config`
* Suppress side-effects of signal propagation
* Send `content-length` header on 5xx
* Deprecate the `uvicorn.workers` module
- drop fix-websocket-tests.patch,
0001-Stop-using-deprecated-app-shortcut-in-httpx.AsyncCli.patch:
upstream
-------------------------------------------------------------------
Mon Mar 25 20:19:46 UTC 2024 - Dan Čermák <dcermak@suse.com>
- New upstream release 0.29.0
* Cooperative signal handling (#1600) 19/03/24
* Revert raise `ClientDisconnected` on HTTP (#2276) 19/03/24
- Add patch:
* 0001-Stop-using-deprecated-app-shortcut-in-httpx.AsyncCli.patch
upstream fix for the testsuite with httpx 0.27
- Remove pointless Suggests:
-------------------------------------------------------------------
Sun Mar 17 10:11:10 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.28.0:
* Raise `ClientDisconnected` on `send()` when client
disconnected (#2220) 12/02/24
* Except `AttributeError` on `sys.stdin.fileno()` for Windows
IIS10 (#1947) 29/02/24
* Use `X-Forwarded-Proto` for WebSockets scheme when the proxy
provides it (#2258) 01/03/24
* Fix spurious LocalProtocolError errors when processing
pipelined requests (#2243) 10/02/24
* Fix nav overrides for newer version of Mkdocs Material
(#2233) 26/01/24
* Raise `ClientDisconnect(IOError)` on `send()` when client
disconnected (#2218) 19/01/24
* Bump ASGI WebSocket spec version to 2.4 (#2221) 20/01/24
* Update `--root-path` to include the root path prefix in the
full ASGI `path` as per the ASGI spec (#2213) 16/01/24
* Use `__future__.annotations` on some internal modules (#2199)
16/01/24
-------------------------------------------------------------------
Tue Jan 30 12:43:20 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
- Disable flacky test in s390x with current python-websockets,
bsc#1217022
-------------------------------------------------------------------
Sun Jan 14 10:55:54 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.25.0:
* Support the WebSocket Denial Response ASGI extension (#1916)
* Allow explicit hidden file paths on `--reload-include`
* Properly annotate `uvicorn.run()`
-------------------------------------------------------------------
Sun Nov 26 10:43:29 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 0.24.0.post1:
* Revert mkdocs-material from 9.1.21 to 9.2.6 (#2148) 05/11/23
* Support Python 3.12 (#2145) 04/11/23
* Allow setting `app` via environment variable `UVICORN_APP`
(#2106) 21/09/23
-------------------------------------------------------------------
Tue Sep 26 14:13:34 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 0.23.2:
* Maintain the same behavior of `websockets` from 10.4 on 11.0
* Add `typing_extensions` for Python 3.10 and lower (#2053)
* Add `--ws-max-queue` parameter WebSockets (#2033) 10/07/23
* Drop support for Python 3.7 (#1996) 19/06/23
* Remove `asgiref` as typing dependency (#1999) 08/06/23
* Set `scope["scheme"]` to `ws` or `wss` instead of `http` or
`https` on `ProxyHeadersMiddleware` for WebSockets (#2043)
12/07/23
* Raise `ImportError` on circular import (#2040) 09/07/23
* Use `logger.getEffectiveLevel()` instead of `logger.level` to
check if log level is `TRACE` (#1966) 01/06/23
-------------------------------------------------------------------
Thu Jun 22 15:25:56 UTC 2023 - Dirk Müller <dmueller@suse.com>
- limit to newer python versions, older are no longer needed
-------------------------------------------------------------------
Fri May 12 08:24:05 UTC 2023 - daniel.garcia@suse.com
- Add fix-websocket-tests.patch gh#encode/uvicorn#1929
- Update to version 0.22.0:
* Version 0.22.0 (#1957)
* Remove unused events (#1956)
* remove a few mypy excludes (#1954)
* Add `--timeout-graceful-shutdown` parameter (#1950)
* Fix typo in setup.cfg (#1953)
* Update `scripts/check` (#1952)
* Add `WatchFilesReload` pause method (#1930)
* Create PULL_REQUEST_TEMPLATE.md (#1946)
* Handle `SIGBREAK` for Windows (#1909)
* Fix shutdown event on Windows in reloader (#1584)
* Handle missing trustme/cryptography gracefully in the test suite (#1940)
* Add type hints to test_auto_detection.py (#1937)
* Fix watchgod deprecation warning (#1938)
* Upgrade and fix Black (#1926)
* Use ruff instead of flake8, autoflake and isort (#1925)
* Upgrade MyPy and fix issues (#1931)
* Pin websockets to <11.0 (#1928)
* Bump coverage from 7.1.0 to 7.2.2 (#1920)
* Fix instructions so they work in zsh as well as Bash (#1915)
* [`Docs`] : Hypercorn supports HTTP/3 (#1913)
* Version 0.21.1 (#1904)
* Reset lifespan state on each request (#1903)
* Version 0.21.0 (#1892)
* Improve discoverability when `--port=0` is used (#1890)
* Fix mypy on test_websockets (#1889)
* Add type annotation on `test_websockets.py` (#1880)
* Introduce lifespan state (#1818)
* Bump build from 0.9.0 to 0.10.0 (#1882)
* Bump pytest from 7.2.0 to 7.2.1 (#1883)
* Bump a2wsgi from 1.6.0 to 1.7.0 (#1886)
* Add type annotation on `test_logging.py` (#1881)
* fix: typo (#1871)
* Bump cryptography from 38.0.3 to 39.0.1 (#1865)
* Improve import time (#1846)
* Bump coverage from 6.5.0 to 7.1.0 (#1856)
* Bump twine from 4.0.1 to 4.0.2 (#1857)
* Bump types-pyyaml from 6.0.12.2 to 6.0.12.3 (#1858)
* Move a2wsgi to the explicit optionals section in the requirements (#1849)
* Replace current WSGIMiddleware implementation by a2wsgi one (#1825)
* Send code 1012 on shutdown for websockets (#1816)
* Change default `--app-dir` from from "." (dot) to "" (empty string). (#1835)
* Bump types-pyyaml from 6.0.12.1 to 6.0.12.2 (#1827)
* Bump pytest from 7.1.3 to 7.2.0 (#1830)
* Fix cli_usage tool on systems without an activated virtualenv (#1823)
* Fix ASGI application on the documentation (#1821)
* Delete setup.py (#1822)
* tests: test to start server with invalid host (#1813)
* Use unused TCP ports on the test suite (#1804)
* Use `surrogateescape` to encode headers on `websockets` implementation (#1005)
* Update hypercorn link on the README (#1800)
* Fix one example in REAME (#1794)
* Replace `files` by `exclude` on mypy configuration (#1793)
* Bump mypy from 0.982 to 0.991 (#1789)
* Bump mkdocs from 1.4.0 to 1.4.2 (#1787)
* Bump build from 0.8.0 to 0.9.0 (#1791)
* Fix warning on reload failure (#1784)
* Allow headers to be sent as iterables (#1782)
* Add test to make sure we send connection close when client sends it (#1776)
* Replace `AF_UNIX` by `AF_INET` on subprocess test (#1775)
* Replace uvicorn files by uvicorn folder on mypy settings (#1771)
* Add type annotation to `wsproto_impl.py` (#1754)
-------------------------------------------------------------------
Fri Apr 21 12:38:24 UTC 2023 - Dirk Müller <dmueller@suse.com>
- add sle15_python_module_pythons (jsc#PED-68)
-------------------------------------------------------------------
Thu Apr 13 22:45:45 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Make calling of %{sle15modernpython} optional.
-------------------------------------------------------------------
Thu Mar 16 08:13:19 UTC 2023 - Dirk Müller <dmueller@suse.com>
- skip optional uvloop test dependency for SLE15
-------------------------------------------------------------------
Thu Feb 16 15:27:53 UTC 2023 - Torsten Gruner <simmphonie@opensuse.org>
- Update to version 0.20.0:
* Check if handshake is completed before sending frame on `wsproto` shutdown (#1737)
* Add default headers to WebSockets implementations (#1606 & #1747) 28/10/22
* Warn user when `reload` and `workers` flag are used together (#1731) 31/10/22
* Use correct `WebSocket` error codes on `close` (#1753) 20/11/22
* Send disconnect event on connection lost for `wsproto` (#996) 29/10/22
* Add `SIGQUIT` handler to `UvicornWorker` (#1710) 01/11/22
* Fix crash on exist with "--uds" if socket doesn't exist (#1725) 27/10/22
* Annotate `CONFIG_KWARGS` in `UvicornWorker` class (#1746) 31/10/22
* Remove conditional on `RemoteProtocolError.event_hint` on `wsproto` (#1486) 31/10/22
* Remove unused `handle_no_connect` on `wsproto` implementation (#1759) 17/11/22
- version 0.19.0
* Support Python 3.11 (#1652) 16/09/22
* Bump minimal `httptools` version to `0.5.0` (#1645) 13/09/22
* Ignore HTTP/2 upgrade and optionally ignore WebSocket upgrade (#1661) 19/10/22
* Add `py.typed` to comply with PEP 561 (#1687) 07/10/22
* Set `propagate` to `False` on "uvicorn" logger (#1288) 08/10/22
* USR1 signal is now handled correctly on `UvicornWorker`. (#1565) 26/08/22
* Use path with query string on `WebSockets` logs (#1385) 11/09/22
* Fix behavior on which "Date" headers were not updated on the same connection (#1706) 19/10/22
* Remove the `--debug` flag (#1640) 14/09/22
* Remove the `DebugMiddleware` (#1697) 07/10/22
- version 0.18.3
* Remove cyclic references on HTTP implementations. (#1604) 24/08/22
* `reload_delay` default changed from `None` to `0.25` on `uvicorn.run()` and `Config`.
`None` is not an acceptable value anymore. (#1545) 02/07/22
- Remove upstreamed patch uvicorn-pr1537-no-watchgod-tests.patch
-------------------------------------------------------------------
Fri Aug 5 09:51:32 UTC 2022 - Dominique Leuenberger <dimstar@opensuse.org>
- Fix URL to 1537.patch: add ".patch" to the gh Pr to reference the
raw patch, not the gh webui.
-------------------------------------------------------------------
Tue Jul 19 20:59:25 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Disable testing with watchfiles
* We don't want it in Ring1-MinimalX
-------------------------------------------------------------------
Mon Jul 18 20:17:15 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to version 0.18.2
* Add default `log_config` on `uvicorn.run()` (#1541)
* Revert `logging` file name modification (#1543)
- Release 0.18.1
* Use `DEFAULT_MAX_INCOMPLETE_EVENT_SIZE` as default to
`h11_max_incomplete_event_size` on the CLI (#1534)
- Release 0.18.0
* The `reload` flag prioritizes `watchfiles` instead of the
deprecated `watchgod` (#1437)
* Annotate `uvicorn.run()` function (#1423)
* Allow configuring `max_incomplete_event_size` for `h11`
implementation (#1514)
* Remove `asgiref` dependency (#1532)
* Turn `raw_path` into bytes on both websockets implementations
(#1487)
* Revert log exception traceback in case of invalid HTTP request
(#1518)
* Set `asyncio.WindowsSelectorEventLoopPolicy()` when using
multiple workers to avoid "WinError 87" (#1454)
- Release 0.17.5
* Fix case where url is fragmented in httptools protocol (#1263)
2/16/22
* Fix WSGI middleware not to explode quadratically in the case of
a larger body (#1329)
* Send HTTP 400 response for invalid request (#1352)
- Release 0.17.4
* Replace `create_server` by `create_unix_server` (#1362)
- Release 0.17.3
* Drop wsproto version checking. (#1359)
- Release 0.17.2
* Revert #1332. While trying to solve the memory leak, it
introduced an issue (#1345) when the server receives big chunks
of data using the `httptools` implementation. (#1354)
* Revert stream interface changes. This was introduced on 0.14.0,
and caused an issue (#1226), which caused a memory leak when
sending TCP pings. (#1355)
* Fix wsproto version check expression (#1342)
- Release 0.17.1
* Move all data handling logic to protocol and ensure connection
is closed. (#1332)
* Change `spec_version` field from "2.1" to "2.3", as Uvicorn is
compliant with that version of the ASGI specifications. (#1337)
- Add uvicorn-pr1537-no-watchgod-tests.patch gh#encode/uvicorn#1537
-------------------------------------------------------------------
Tue Feb 1 05:38:09 UTC 2022 - Steve Kowalik <steven.kowalik@suse.com>
- Add missing Requires on python-asgiref.
-------------------------------------------------------------------
Mon Jan 24 09:51:06 UTC 2022 - kkaempf@suse.com
- Update to version 0.17.0:
* Release 0.17.0 (#1322)
* Fix reload process behavior when exception is raised (#1313)
* Fix version that supports Python 3.6 on the README (#1316)
* Add missing http version on websockets scope (#1309)
* Remove Python 3.6 (#1261)
* Support `extra_headers` for WS `accept` message (#1293)
* Allow configurable websocket per-message-deflate setting (#1300)
* Remove root_path from logs (#1294)
- Update to version 0.16.0:
* Version 0.16.0 (#1270)
* Allow app-dir parameter on the run() function (#1271)
- Update to version 0.15.0:
* Added
- Change reload to be configurable with glob patterns. Currently
only .py files are watched, which is different from the previous
default behavior. (#820) 08/08/21
- Add Python 3.10-rc.1 support. Now the server uses asyncio.run
which will: start a fresh asyncio event loop, on shutdown cancel any
background tasks rather than aborting them, aexit any remaining async
generators, and shutdown the default ThreadPoolExecutor. (#1070) 30/07/21
- Exit with status 3 when worker starts failed (#1077) 22/06/21
- Add option to set websocket ping interval and timeout (#1048) 09/06/21
- Adapt bind_socket to make it usable with multiple processes (#1009) 21/06/21
- Add existence check to the reload directory(ies) (#1089) 21/06/21
- Add missing trace log for websocket protocols (#1083) 19/06/21
- Support disabling default Server and Date headers (#818) 11/06/21
* Changed
- Add PEP440 compliant version of click (#1099) 29/06/21
- Bump asgiref to 3.4.0 (#1100) 29/06/21
* Fixed
- When receiving a SIGTERM supervisors now terminate their
processes before joining them (#1069) 30/07/21
- Fix the need of httptools on minimal installation (#1135) 30/07/21
- Fix ping parameters annotation in Config class (#1127) 19/07/21
- Update to version 0.14.0:
* Added
- Defaults ws max_size on server to 16MB (#995) 5/29/21
- Improve user feedback if no ws library installed (#926 and
#1023) 2/27/21
- Support 'reason' field in 'websocket.close' messages (#957) 2/24/21
- Implemented lifespan.shutdown.failed (#755) 2/25/21
* Changed
- Upgraded websockets requirements (#1065) 6/1/21
- Switch to asyncio streams API (#869) 5/29/21
- Update httptools from 0.1.* to 0.2.* (#1024) 5/28/21
- Allow Click 8.0, refs #1016 (#1042) 5/23/21
- Add search for a trusted host in ProxyHeadersMiddleware (#591) 3/13/21
- Up wsproto to 1.0.0 (#892) 2/25/21
* Fixed
- Force reload_dirs to be a list (#978) 6/1/21
- Fix gunicorn worker not running if extras not installed (#901) 5/28/21
- Fix socket port 0 (#975) 3/5/21
- Prevent garbage collection of main lifespan task (#972) 3/4/21
- Update to version 0.13.0:
* Add --factory flag to support factory-style application imports.
(#875) 2020-12-07 50fc0d1
* Skip installation of signal handlers when not in the main thread.
Allows using Server in multithreaded contexts without having to
override .install_signal_handlers(). (#871) 2020-12-07 ce2ef45
-------------------------------------------------------------------
Fri Sep 17 07:04:38 UTC 2021 - Dominique Leuenberger <dimstar@opensuse.org>
- Do not build for python 3.6: the required dependency uvloop does
no longer support Python 3.6 since version 0.16.
-------------------------------------------------------------------
Sun Nov 29 09:56:12 UTC 2020 - John Vandenberg <jayvdb@gmail.com>
- Skip three tests due to minor change introduced in wsproto 1.0.0
- Add some missing minimum versions to Requires and BuildRequires
- Update to v0.12.3
* Fix race condition that leads Quart to hang
* Use latin1 when decoding X-Forwarded-* headers
* Rework IPv6 support
* Cancel old keepalive-trigger before setting new one
- from v0.12.2
* Adding ability to decrypt ssl key file
* Support .yml log config files
* Added python 3.9 support
* Fixes watchgod with common prefixes
* Fix reload with ipv6 host
* Added cli support for headers containing colon
* Sharing socket across workers on windows
* Note the need to configure trusted "ips" when using unix sockets
-------------------------------------------------------------------
Tue Oct 13 09:42:02 UTC 2020 - Jan Engelhardt <jengelh@inai.de>
- Trim marketing wording from descriptions.
-------------------------------------------------------------------
Sun Oct 11 14:58:51 UTC 2020 - John Vandenberg <jayvdb@gmail.com>
- Update to v0.12.1
-------------------------------------------------------------------
Sat Jul 25 18:38:16 UTC 2020 - John Vandenberg <jayvdb@gmail.com>
- Update to v0.11.6
-------------------------------------------------------------------
Tue Oct 8 09:08:25 AM UTC 2019 - John Vandenberg <jayvdb@gmail.com>
- Initial spec for v0.9.0

122
python-uvicorn.spec Normal file
View File

@@ -0,0 +1,122 @@
#
# spec file for package python-uvicorn
#
# 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/
#
%if 0%{?suse_version} > 1500
%bcond_without libalternatives
%else
%bcond_with libalternatives
%endif
%{?sle15_python_module_pythons}
Name: python-uvicorn
Version: 0.36.0
Release: 0
Summary: An Asynchronous Server Gateway Interface server
License: BSD-3-Clause
URL: https://github.com/encode/uvicorn
Source: https://github.com/encode/uvicorn/archive/%{version}.tar.gz#/uvicorn-%{version}.tar.gz
# PATCH-FIX-OPENSUSE Ignore the large amount of DeprecationWarnings that websockets 14 gave us
Patch0: support-websockets-14+.patch
# PATCH-FIX-UPSTREAM small part of https://github.com/Kludex/uvicorn/pull/2548 test on 3.14
Patch1: py314.patch
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module hatchling}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-click >= 7.0
Requires: python-h11 >= 0.8.0
Recommends: python-PyYAML >= 5.1
Recommends: python-httptools >= 0.4.0
Recommends: python-websockets >= 8.0
BuildArch: noarch
%if %{with libalternatives}
BuildRequires: alts
Requires: alts
%else
Requires(post): update-alternatives
Requires(postun): update-alternatives
%endif
# SECTION test requirements
BuildRequires: %{python_module PyYAML >= 5.1}
BuildRequires: %{python_module click >= 7.0}
BuildRequires: %{python_module h11 >= 0.8.0}
BuildRequires: %{python_module httptools >= 0.4.0}
BuildRequires: %{python_module httpx >= 0.27}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest-mock}
BuildRequires: %{python_module pytest-xdist}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module python-dotenv}
BuildRequires: %{python_module requests}
BuildRequires: %{python_module trustme}
BuildRequires: %{python_module websockets >= 10.4}
BuildRequires: %{python_module wsproto >= 1.2.0}
%if 0%{?suse_version} > 1500
BuildRequires: %{python_module uvloop >= 0.14.0}
%endif
# We don't want watchfiles in Ring1
#BuildRequires: #{python_module watchfiles >= 0.13}
# /SECTION
%python_subpackages
%description
Uvicorn is an ASGI server implementation, using uvloop and httptools.
It supports HTTP/1.1 and WebSockets only.
%prep
%autosetup -p1 -n uvicorn-%{version}
%build
%pyproject_wheel
%install
%pyproject_install
%python_clone -a %{buildroot}%{_bindir}/uvicorn
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%post
%python_install_alternative uvicorn
%postun
%python_uninstall_alternative uvicorn
%pre
%python_libalternatives_reset_alternative uvicorn
%check
# Required for reporting bugs
%python_exec -m uvicorn --version
# No module python-a2wsgi
ignore="--ignore tests/middleware/test_wsgi.py"
# Disable flacky test in s390x with current python-websockets
%if "%{_arch}" == "s390x"
ignore+=" --ignore tests/protocols/test_websocket.py"
%endif
# no longer raises an exception with Websockets 14+
%pytest $ignore -k 'not test_send_binary_data_to_server_bigger_than_default_on_websockets'
%files %{python_files}
%doc README.md
%license LICENSE.md
%python_alternative %{_bindir}/uvicorn
%{python_sitelib}/uvicorn
%{python_sitelib}/uvicorn-%{version}.dist-info
%changelog

View File

@@ -0,0 +1,12 @@
Index: uvicorn-0.36.0/pyproject.toml
===================================================================
--- uvicorn-0.36.0.orig/pyproject.toml
+++ uvicorn-0.36.0/pyproject.toml
@@ -130,6 +130,7 @@ filterwarnings = [
"ignore: websockets.legacy is deprecated.*:DeprecationWarning",
"ignore: websockets.server.WebSocketServerProtocol is deprecated.*:DeprecationWarning",
"ignore: websockets.client.connect is deprecated.*:DeprecationWarning",
+ "ignore: websockets.exceptions.InvalidStatusCode is deprecated:DeprecationWarning",
]
[tool.coverage.run]

3
uvicorn-0.36.0.tar.gz Normal file
View File

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