Sync from SUSE:ALP:Source:Standard:1.0 python-uvicorn revision c5c106bbee5ee13d9a54af5915f06aef

This commit is contained in:
Adrian Schröter 2024-02-09 15:30:09 +01:00
commit 8f02a6e0b4
5 changed files with 484 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

13
fix-websocket-tests.patch Normal file
View File

@ -0,0 +1,13 @@
Index: uvicorn-0.22.0/tests/protocols/test_websocket.py
===================================================================
--- uvicorn-0.22.0.orig/tests/protocols/test_websocket.py
+++ uvicorn-0.22.0/tests/protocols/test_websocket.py
@@ -584,7 +584,7 @@ async def test_asgi_return_value(
async with run_server(config):
with pytest.raises(websockets.exceptions.ConnectionClosed) as exc_info:
await connect(f"ws://127.0.0.1:{unused_tcp_port}")
- assert exc_info.value.code == 1006
+ assert exc_info.value.code in {1000, 1006}
@pytest.mark.anyio

334
python-uvicorn.changes Normal file
View File

@ -0,0 +1,334 @@
-------------------------------------------------------------------
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

111
python-uvicorn.spec Normal file
View File

@ -0,0 +1,111 @@
#
# spec file for package python-uvicorn
#
# Copyright (c) 2024 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/
#
%{?sle15_python_module_pythons}
Name: python-uvicorn
Version: 0.25.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-UPSTREAM fix-websocket-tests.patch -- gh#encode/uvicorn#1929
Patch0: fix-websocket-tests.patch
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module hatchling}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module typing-extensions >= 4 if %python-base < 3.11}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-click >= 7.0
Requires: python-h11 >= 0.8.0
Requires: (python-typing-extensions >= 4 if python-base < 3.11)
Recommends: python-PyYAML >= 5.1
Recommends: python-httptools >= 0.4.0
Recommends: python-websockets >= 8.0
Suggests: python-uvloop >= 0.14.0
Suggests: python-watchfiles >= 0.13
Suggests: python-wsproto >= 1.2.0
Suggests: python-websockets
Requires(post): update-alternatives
Requires(postun): update-alternatives
BuildArch: noarch
# 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.18}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest-mock}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module python-dotenv}
BuildRequires: %{python_module requests}
BuildRequires: %{python_module trustme}
%if 0%{?suse_version} > 1500
BuildRequires: %{python_module uvloop >= 0.14.0}
%endif
BuildRequires: %{python_module websockets >= 8.0}
BuildRequires: %{python_module wsproto >= 1.2.0}
# 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
%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
%pytest $ignore
%files %{python_files}
%doc README.md
%license LICENSE.md
%python_alternative %{_bindir}/uvicorn
%{python_sitelib}/uvicorn
%{python_sitelib}/uvicorn-%{version}*-info
%changelog

BIN
uvicorn-0.25.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.