commit: 0456da8736e2e11acfa1005a39e94f5e8f93da89 Author: Eli Schwartz <eschwartz <AT> gentoo <DOT> org> AuthorDate: Tue Jul 8 04:16:39 2025 +0000 Commit: Eli Schwartz <eschwartz <AT> gentoo <DOT> org> CommitDate: Tue Jul 8 22:59:44 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0456da87
dev-python/respx: back down from version constraint on httpx The tests are picky about exact whitespace formatting, it's not a real dep. It's trivial to pass either version, anyway. https://github.com/gentoo/gentoo/pull/39789#issuecomment-2556521835 Signed-off-by: Eli Schwartz <eschwartz <AT> gentoo.org> .../files/respx-0.22.0-tests-flexibility.patch | 98 ++++++++++++++++++++++ ...spx-0.22.0-r1.ebuild => respx-0.22.0-r2.ebuild} | 6 +- 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/dev-python/respx/files/respx-0.22.0-tests-flexibility.patch b/dev-python/respx/files/respx-0.22.0-tests-flexibility.patch new file mode 100644 index 000000000000..ea9e6cd20252 --- /dev/null +++ b/dev-python/respx/files/respx-0.22.0-tests-flexibility.patch @@ -0,0 +1,98 @@ +From 92925950090c28124d191f81f0f0c6a742e6b136 Mon Sep 17 00:00:00 2001 +From: Eli Schwartz <[email protected]> +Date: Tue, 8 Jul 2025 00:21:38 -0400 +Subject: [PATCH] tests: support any httpx version + +Signed-off-by: Eli Schwartz <[email protected]> +--- + noxfile.py | 2 +- + tests/test_api.py | 23 ++++++++++++++++++----- + 2 files changed, 19 insertions(+), 6 deletions(-) + +diff --git a/noxfile.py b/noxfile.py +index 39fbef4..40fe124 100644 +--- a/noxfile.py ++++ b/noxfile.py +@@ -7,7 +7,7 @@ nox.options.keywords = "test + mypy" + + @nox.session(python=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]) + def test(session): +- deps = ["pytest", "pytest-asyncio", "pytest-cov", "trio", "starlette", "flask"] ++ deps = ["pytest", "pytest-asyncio", "pytest-cov", "trio", "starlette", "flask", "packaging"] + session.install("--upgrade", *deps) + session.install("-e", ".") + +diff --git a/tests/test_api.py b/tests/test_api.py +index 81ca4b2..170389b 100644 +--- a/tests/test_api.py ++++ b/tests/test_api.py +@@ -7,12 +7,15 @@ from unittest import mock + import httpcore + import httpx + import pytest ++from packaging.version import Version + + import respx + from respx.models import Route + from respx.patterns import M + from respx.router import MockRouter + ++httpx_0_28 = Version(httpx.__version__) >= Version('0.28') ++ + + async def test_http_methods(client): + async with respx.mock: +@@ -214,7 +217,7 @@ async def test_content_variants(client, key, value, expected_content_type): + {"X-Foo": "bar"}, + { + "Content-Type": "application/json", +- "Content-Length": "13", ++ "Content-Length": "13" if httpx_0_28 else "14", + "X-Foo": "bar", + }, + ), +@@ -223,7 +226,7 @@ async def test_content_variants(client, key, value, expected_content_type): + {"Content-Type": "application/json; charset=utf-8", "X-Foo": "bar"}, + { + "Content-Type": "application/json; charset=utf-8", +- "Content-Length": "13", ++ "Content-Length": "13" if httpx_0_28 else "14", + "X-Foo": "bar", + }, + ), +@@ -322,19 +325,29 @@ async def test_callable_content(client): + assert request.called is True + assert async_response.status_code == 200 + assert async_response.text == "hello world." +- assert request.calls[-1][0].content == b'{"x":"."}' ++ if httpx_0_28: ++ assert request.calls[-1][0].content == b'{"x":"."}' ++ else: ++ assert request.calls[-1][0].content == b'{"x": "."}' + + respx_mock.reset() + sync_response = httpx.post("https://foo.bar/jonas/", json={"x": "!"}) + assert request.called is True + assert sync_response.status_code == 200 + assert sync_response.text == "hello jonas!" +- assert request.calls[-1][0].content == b'{"x":"!"}' ++ if httpx_0_28: ++ assert request.calls[-1][0].content == b'{"x":"!"}' ++ else: ++ assert request.calls[-1][0].content == b'{"x": "!"}' + + + async def test_request_callback(client): + def callback(request, name): +- if request.url.host == "foo.bar" and request.content == b'{"foo":"bar"}': ++ if httpx_0_28: ++ content = b'{"foo":"bar"}' ++ else: ++ content = b'{"foo": "bar"}' ++ if request.url.host == "foo.bar" and request.content == content: + return respx.MockResponse( + 202, + headers={"X-Foo": "bar"}, +-- +2.49.0 + diff --git a/dev-python/respx/respx-0.22.0-r1.ebuild b/dev-python/respx/respx-0.22.0-r2.ebuild similarity index 89% rename from dev-python/respx/respx-0.22.0-r1.ebuild rename to dev-python/respx/respx-0.22.0-r2.ebuild index decde3e63df0..84b80eb2e270 100644 --- a/dev-python/respx/respx-0.22.0-r1.ebuild +++ b/dev-python/respx/respx-0.22.0-r2.ebuild @@ -25,7 +25,7 @@ SLOT="0" KEYWORDS="amd64 arm64 x86" RDEPEND=" - >=dev-python/httpx-0.28.0[${PYTHON_USEDEP}] + >=dev-python/httpx-0.25.0[${PYTHON_USEDEP}] " BDEPEND=" test? ( @@ -37,6 +37,10 @@ BDEPEND=" ) " +PATCHES=( + "${FILESDIR}"/${PN}-0.22.0-tests-flexibility.patch +) + distutils_enable_tests pytest python_test() {
