aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch73
-rw-r--r--gnu/packages/python-web.scm57
3 files changed, 131 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 5a9edc16bb..fa315537ce 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1720,6 +1720,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-werkzeug-tests.patch \
%D%/packages/patches/python-mypy-12332.patch \
%D%/packages/patches/python-mypy-use-sys-path.patch \
+ %D%/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch \
%D%/packages/patches/qemu-build-info-manual.patch \
%D%/packages/patches/qemu-glibc-2.27.patch \
%D%/packages/patches/qemu-glibc-2.30.patch \
diff --git a/gnu/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch b/gnu/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch
new file mode 100644
index 0000000000..7f022b4e46
--- /dev/null
+++ b/gnu/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch
@@ -0,0 +1,73 @@
+From 2907848185adcb4e6d8c093db6c617c64cb8c8bf Mon Sep 17 00:00:00 2001
+From: Georg Sauthoff <mail@gms.tf>
+Date: Sat, 5 Feb 2022 14:42:10 +0100
+Subject: [PATCH] Use current pytest_httpx add_response keyword
+
+The new text keyword was introduced in pytest_httpx 0.14, deprecated
+in 0.14 and 0.17 and removed in 0.18.
+
+Thus, an appropriate constraint to that dependency is added.
+
+FWIW, this fixes the test cases on the upcoming Fedora 36 release.
+
+See also:
+- https://github.com/Colin-b/pytest_httpx/blob/develop/CHANGELOG.md#0180---2022-01-17
+- https://github.com/Colin-b/pytest_httpx/blob/develop/CHANGELOG.md#0140---2021-10-22
+---
+ setup.py | 2 +-
+ tests/test_async_transport.py | 8 ++++----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 4cf9073b..58a5c24f 100755
+--- a/setup.py
++++ b/setup.py
+@@ -29,7 +29,7 @@
+ "freezegun==0.3.15",
+ "pretend==1.0.9",
+ "pytest-cov==2.8.1",
+- "pytest-httpx",
++ "pytest-httpx>=0.14",
+ "pytest-asyncio",
+ "pytest==6.2.5",
+ "requests_mock>=0.7.0",
+diff --git a/tests/test_async_transport.py b/tests/test_async_transport.py
+index f5e8d1b0..ee215265 100644
+--- a/tests/test_async_transport.py
++++ b/tests/test_async_transport.py
+@@ -19,7 +19,7 @@ def test_load(httpx_mock):
+ cache = stub(get=lambda url: None, add=lambda url, content: None)
+ transport = AsyncTransport(cache=cache)
+
+- httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", data="x")
++ httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", text="x")
+ result = transport.load("http://tests.python-zeep.org/test.xml")
+ assert result == b"x"
+
+@@ -30,7 +30,7 @@ def test_load_cache(httpx_mock):
+ cache = InMemoryCache()
+ transport = AsyncTransport(cache=cache)
+
+- httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", data="x")
++ httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", text="x")
+ result = transport.load("http://tests.python-zeep.org/test.xml")
+ assert result == b"x"
+
+@@ -45,7 +45,7 @@ async def test_post(httpx_mock: HTTPXMock):
+
+ envelope = etree.Element("Envelope")
+
+- httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", data="x")
++ httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", text="x")
+ result = await transport.post_xml(
+ "http://tests.python-zeep.org/test.xml", envelope=envelope, headers={}
+ )
+@@ -67,7 +67,7 @@ async def test_http_error(httpx_mock: HTTPXMock):
+ transport = AsyncTransport()
+
+ httpx_mock.add_response(
+- url="http://tests.python-zeep.org/test.xml", data="x", status_code=500
++ url="http://tests.python-zeep.org/test.xml", text="x", status_code=500
+ )
+ with pytest.raises(exceptions.TransportError) as exc:
+ transport.load("http://tests.python-zeep.org/test.xml")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 30c461f247..b4500c6d2f 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -7478,3 +7478,60 @@ metadata from HTML markup. Currently, extruct supports:
(description "The @code{wadllib} Python library allows navigating HTTP
resources using Web Application Description Language (WADL) files as guides.")
(license license:lgpl3)))
+
+(define-public python-zeep
+ (package
+ (name "python-zeep")
+ (version "4.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "zeep" version))
+ (patches
+ (search-patches "python-zeep-Fix-pytest_httpx-test-cases.patch"))
+ (sha256
+ (base32 "1ranr4hkjd2kbbhxa3is1qlgkankj3sml5gla6bqs0kbvpmg4rsq"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (setenv "HOME" (getcwd)) ; one test requires write access
+ (invoke "pytest" "-vv")))))))
+ (propagated-inputs
+ (list python-attrs
+ python-cached-property
+ python-isodate
+ python-lxml
+ python-platformdirs
+ python-pytz
+ python-requests
+ python-requests-file
+ python-requests-toolbelt))
+ (native-inputs
+ (list python-aiohttp
+ python-aioresponses
+ python-freezegun
+ python-mock
+ python-pretend
+ python-pytest
+ python-pytest-asyncio
+ python-pytest-cov
+ python-pytest-httpx
+ python-requests-mock))
+ (home-page "https://docs.python-zeep.org/en/stable/")
+ (synopsis "Python SOAP client based on lxml / requests")
+ (description "Zeep is a Python SOAP client. Highlights:
+
+@itemize
+@item Build on top of @code{lxml} and @code{requests}.
+@item Support for Soap 1.1, Soap 1.2 and HTTP bindings.
+@item Support for WS-Addressing headers.
+@item Support for WSSE (UserNameToken / x.509 signing).
+@item Support for @code{asyncio} via @code{httpx}.
+@item Experimental support for XOP messages.
+@end itemize")
+ (license license:expat)))
+