commit:     300e20ddab67230cc4a6d06e457a9cc22658a66a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 26 10:41:16 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Dec 26 10:50:22 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=300e20dd

dev-python/uvicorn: Bump to 0.25.0

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/uvicorn/Manifest                        |  1 +
 dev-python/uvicorn/files/uvicorn-0.25.0-test.patch | 46 +++++++++++++
 dev-python/uvicorn/uvicorn-0.25.0.ebuild           | 77 ++++++++++++++++++++++
 3 files changed, 124 insertions(+)

diff --git a/dev-python/uvicorn/Manifest b/dev-python/uvicorn/Manifest
index 025f5112a687..80b466c9ff71 100644
--- a/dev-python/uvicorn/Manifest
+++ b/dev-python/uvicorn/Manifest
@@ -1 +1,2 @@
 DIST uvicorn-0.24.0.gh.tar.gz 715220 BLAKE2B 
b71273545ae244544b5336524bf4ad1f386c8bb2b1addc501514833f37376f8a09a1d4dfc2272c3b62555337a20750af827c9a7a4c3bffc6327a9d1809869cfa
 SHA512 
98b58ce17a1f072f36923b1b616f818cbadd091256ce1281a5236268ba2378d212384d9c3390b5903edfda5c692a67935051379e31732df45422595a88c69232
+DIST uvicorn-0.25.0.gh.tar.gz 717386 BLAKE2B 
f0a472676a732d7807137f157c95574584d882bf9ae8531c4e2c1164ebe9eec2172da62f72f07032ada422b7932f221457686aa22ab6fbceac57685ad91920b8
 SHA512 
19c1e6438c40ab1b1d30c9c9c84d65f2dc661197adcc6be3d7825223d933d4554ec388323e16452ef0409476766af1ae18bb3252a391099bd2e2bfe2b6c4abb2

diff --git a/dev-python/uvicorn/files/uvicorn-0.25.0-test.patch 
b/dev-python/uvicorn/files/uvicorn-0.25.0-test.patch
new file mode 100644
index 000000000000..8cd1cc7bb8c4
--- /dev/null
+++ b/dev-python/uvicorn/files/uvicorn-0.25.0-test.patch
@@ -0,0 +1,46 @@
+From 64013e8729afc93880a749974491ab5a90b29deb Mon Sep 17 00:00:00 2001
+From: Marcelo Trylesinski <marcelotr...@gmail.com>
+Date: Tue, 26 Dec 2023 10:28:55 +0100
+Subject: [PATCH] Allow test suite to run without httptools installed
+
+---
+ tests/protocols/test_http.py | 19 +++++++------------
+ 1 file changed, 7 insertions(+), 12 deletions(-)
+
+diff --git a/tests/protocols/test_http.py b/tests/protocols/test_http.py
+index fde4cc70b..ca06b33a6 100644
+--- a/tests/protocols/test_http.py
++++ b/tests/protocols/test_http.py
+@@ -994,25 +994,20 @@ async def test_huge_headers_h11_max_incomplete():
+ 
+ 
+ @pytest.mark.anyio
+-@pytest.mark.parametrize(
+-    "protocol_cls,close_header",
+-    (
+-        pytest.param(
+-            HttpToolsProtocol, b"connection: close", 
marks=skip_if_no_httptools
+-        ),
+-        (H11Protocol, b"Connection: close"),
+-    ),
+-)
+-async def test_return_close_header(protocol_cls, close_header: bytes):
++async def test_return_close_header(
++    http_protocol_cls: "Type[HttpToolsProtocol | H11Protocol]"
++):
+     app = Response("Hello, world", media_type="text/plain")
+ 
+-    protocol = get_connected_protocol(app, protocol_cls)
++    protocol = get_connected_protocol(app, http_protocol_cls)
+     protocol.data_received(CONNECTION_CLOSE_REQUEST)
+     await protocol.loop.run_one()
+     assert b"HTTP/1.1 200 OK" in protocol.transport.buffer
+     assert b"content-type: text/plain" in protocol.transport.buffer
+     assert b"content-length: 12" in protocol.transport.buffer
+-    assert close_header in protocol.transport.buffer
++    # NOTE: We need to use `.lower()` because H11 implementation doesn't 
allow Uvicorn
++    # to lowercase them. See: https://github.com/python-hyper/h11/issues/156
++    assert b"connection: close" in protocol.transport.buffer.lower()
+ 
+ 
+ @pytest.mark.anyio

diff --git a/dev-python/uvicorn/uvicorn-0.25.0.ebuild 
b/dev-python/uvicorn/uvicorn-0.25.0.ebuild
new file mode 100644
index 000000000000..a675be713124
--- /dev/null
+++ b/dev-python/uvicorn/uvicorn-0.25.0.ebuild
@@ -0,0 +1,77 @@
+# Copyright 2021-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( pypy3 python3_{10..12} )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Lightning-fast ASGI server implementation"
+HOMEPAGE="
+       https://www.uvicorn.org/
+       https://github.com/encode/uvicorn/
+       https://pypi.org/project/uvicorn/
+"
+# as of 0.21.0, no tests in sdist
+SRC_URI="
+       https://github.com/encode/uvicorn/archive/${PV}.tar.gz
+               -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+       >=dev-python/asgiref-3.4.0[${PYTHON_USEDEP}]
+       >=dev-python/click-7.0[${PYTHON_USEDEP}]
+       >=dev-python/h11-0.8[${PYTHON_USEDEP}]
+"
+BDEPEND="
+       test? (
+               dev-python/a2wsgi[${PYTHON_USEDEP}]
+               dev-python/httpx[${PYTHON_USEDEP}]
+               dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+               dev-python/pytest-mock[${PYTHON_USEDEP}]
+               dev-python/python-dotenv[${PYTHON_USEDEP}]
+               dev-python/pyyaml[${PYTHON_USEDEP}]
+               >=dev-python/websockets-10.4[${PYTHON_USEDEP}]
+               dev-python/wsproto[${PYTHON_USEDEP}]
+               test-rust? (
+                       dev-python/cryptography[${PYTHON_USEDEP}]
+                       dev-python/trustme[${PYTHON_USEDEP}]
+                       dev-python/watchfiles[${PYTHON_USEDEP}]
+               )
+       )
+"
+
+distutils_enable_tests pytest
+
+PATCHES=(
+       # https://github.com/encode/uvicorn/pull/2198
+       "${FILESDIR}/${P}-test.patch"
+)
+
+python_test() {
+       local EPYTEST_DESELECT=(
+               # too long path for unix socket
+               
tests/test_config.py::test_bind_unix_socket_works_with_reload_or_workers
+       )
+       case ${EPYTHON} in
+               pypy3)
+                       # TODO
+                       EPYTEST_DESELECT+=(
+                               
tests/middleware/test_logging.py::test_running_log_using_fd
+                       )
+                       ;;
+       esac
+
+       epytest
+}
+
+pkg_postinst() {
+       optfeature "auto reload on file changes" dev-python/watchfiles
+}

Reply via email to