summaryrefslogtreecommitdiff
path: root/dev-python/uvicorn
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/uvicorn')
-rw-r--r--dev-python/uvicorn/Manifest3
-rw-r--r--dev-python/uvicorn/files/uvicorn-0.25.0-test.patch46
-rw-r--r--dev-python/uvicorn/uvicorn-0.25.0.ebuild77
3 files changed, 126 insertions, 0 deletions
diff --git a/dev-python/uvicorn/Manifest b/dev-python/uvicorn/Manifest
new file mode 100644
index 0000000..feaa965
--- /dev/null
+++ b/dev-python/uvicorn/Manifest
@@ -0,0 +1,3 @@
+AUX uvicorn-0.25.0-test.patch 1810 BLAKE2B 901fc4cd22bbb70fd7885b4d790a63d3783b287a133c201ef690794234ce89366ca5c9bd8a5caa74aafbe2838ab284654895e7d0e0997c8450de8c2cea557c88 SHA512 f1a516acbaf2d2f379ac77723a357296db111704d0a4d0ad276425415653d75c8545d0b86674aed019a175b2772bec151c5e837662edef30fd9daa4e03582de0
+DIST uvicorn-0.25.0.gh.tar.gz 717386 BLAKE2B f0a472676a732d7807137f157c95574584d882bf9ae8531c4e2c1164ebe9eec2172da62f72f07032ada422b7932f221457686aa22ab6fbceac57685ad91920b8 SHA512 19c1e6438c40ab1b1d30c9c9c84d65f2dc661197adcc6be3d7825223d933d4554ec388323e16452ef0409476766af1ae18bb3252a391099bd2e2bfe2b6c4abb2
+EBUILD uvicorn-0.25.0.ebuild 1802 BLAKE2B ae26f2149e8c8c664a322521036a08e4c167c173ffb68cd09b9a1852d436baf038958befe32ecf6765bc43b09381c86a4ee027a5e132d86d54aa647576fa3df8 SHA512 ab4096ae3c5fc1302af15789842fb481cfff2fc55b79697ebc81c916916a78fc7e545c4f2f086d2ba75e738b4ec1ea20ea3e6c355185ebac8c46abf4884d84cc
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 0000000..8cd1cc7
--- /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 <marcelotryle@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 0000000..252e5fc
--- /dev/null
+++ b/dev-python/uvicorn/uvicorn-0.25.0.ebuild
@@ -0,0 +1,77 @@
+# Copyright 2021-2024 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
+}