From b886780eb945627a2f9e5fcee2228d16d65e9a18 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 10 Jan 2025 21:15:55 +0100 Subject: [PATCH] gnu: python-asgi-csrf: Make compatibly with httpx 0.28.0+. * gnu/packages/python-web.scm (python-asgi-csrf)[arguments]: Add phase 'compatibility. Change-Id: Ifa3604fd63e9045e3f060d6b57eeeab8afd182d3 --- gnu/packages/python-web.scm | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index f3772e39dd4f43d96688ba29f95e76f1029552eb..8aef710565e46cb60c32cacb2c30e8cbb4015717 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -1005,7 +1005,27 @@ WSGI. This package includes libraries for implementing ASGI servers.") ;; https://github.com/simonw/asgi-csrf/issues/24). "-k" (string-append "not (test_multipart " - "or test_multipart_failure_wrong_token)")))) + "or test_multipart_failure_wrong_token)")) + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'compatibility + (lambda _ + ;; httpx version 0.28.0 removed the "app" shortcut. + (substitute* "test_asgi_csrf.py" + (("httpx.AsyncClient\\(app=app_csrf\\)") + "httpx.AsyncClient(transport=httpx.ASGITransport(app_csrf))") + (("httpx.AsyncClient\\(app=hello_world_app\\)") + "httpx.AsyncClient(transport=httpx.ASGITransport(hello_world_app))") + (("httpx.AsyncClient\\(app=app\\)") + "httpx.AsyncClient(transport=httpx.ASGITransport(app))") + ;; The remaining invocations are harder to patch, so we + ;; define a wrapper. + (("^SECRET =") + "def asgi_csrf_transport(*args, **kwargs): + return httpx.ASGITransport(asgi_csrf(*args, **kwargs)) + +SECRET =") + (("app=asgi_csrf") "transport=asgi_csrf_transport"))))))) (propagated-inputs (list python-itsdangerous python-multipart)) (native-inputs (list python-asgi-lifespan python-httpx