summaryrefslogtreecommitdiff
path: root/gnu/packages/python-web.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-web.scm')
-rw-r--r--gnu/packages/python-web.scm3547
1 files changed, 2191 insertions, 1356 deletions
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 9ab20defae..ceb876ef38 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -13,7 +13,7 @@
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2019, 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016, 2019, 2022, 2025 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2015, 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
@@ -25,8 +25,10 @@
;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018, 2019, 2021, 2024 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2018 Marius Bakke <marius@gnu.org>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2018, 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim@guixotic.coop>
+;;; Copyright © 2018 swedebugia <swedebugia@riseup.net>
;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
@@ -47,7 +49,7 @@
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev>
;;; Copyright © 2021, 2022, 2024 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2021, 2022, 2024 jgart <jgart@dismail.de>
+;;; Copyright © 2021-2022, 2024-2025 jgart <jgart@dismail.de>
;;; Copyright © 2021 Alice Brenon <alice.brenon@ens-lyon.fr>
;;; Copyright © 2021 Mekeor Melire <mekeor.melire@gmail.com>
;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
@@ -64,6 +66,8 @@
;;; Copyright © 2023 dan <i@dan.games>
;;; Copyright © 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023 Ivan Vilata-i-Balaguer <ivan@selidor.net>
+;;; Copyright © 2024 Fabio Natali <me@fabionatali.com>
+;;; Copyright © 2024 Steve George <steve@futurile.net>
;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com>
;;; Copyright © 2024, 2025 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2024 normally_js <normally_js@posteo.net>
@@ -77,6 +81,8 @@
;;; Copyright © 2025 Sergio Pastor Pérez <sergio.pastorperez@gmail.com>
;;; Copyright © 2025 Jake Forster <jakecameron.forster@gmail.com>
;;; Copyright © 2025 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2025 Hugo Buddelmeijer <hugo@buddelmeijer.nl>
+;;; Copyright © 2025 Artur Wroblewski <wrobell@riseup.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -99,6 +105,7 @@
#:use-module (guix build-system copy)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
+ #:use-module (guix deprecation)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
@@ -107,12 +114,10 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
- #:use-module (gnu packages certs)
+ #:use-module (gnu packages nss)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
- #:use-module (gnu packages crates-io)
- #:use-module (gnu packages crates-web)
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages django)
@@ -121,6 +126,7 @@
#:use-module (gnu packages gnupg)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff)
+ #:use-module (gnu packages iso-codes)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libidn)
@@ -140,6 +146,7 @@
#:use-module (gnu packages qt)
#:use-module (gnu packages rdf)
#:use-module (gnu packages rpc)
+ #:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
#:use-module (gnu packages serialization)
#:use-module (gnu packages sphinx)
@@ -205,6 +212,108 @@ writing applications that talk to network enabled embedded
@acronym{IoT,Internet of Things} devices.")
(license license:expat)))
+(define-public python-apprise
+ (package
+ (name "python-apprise")
+ (version "1.9.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "apprise" version))
+ (sha256
+ (base32 "126951n9lnlqrw5lbsvs9xs7jzg33bqqxm7cfnqag2csw6p24ca8"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; These tests used to be ran with --numprocesses, but that seems to have
+ ;; made them non-deterministic.
+ #:test-flags
+ #~(list "--ignore=tests/test_plugin_macosx.py"
+ "-k" "not test_plugin_glib_send_raises_generic")))
+ (native-inputs
+ (list python-babel
+ python-pytest
+ python-pytest-mock
+ python-setuptools))
+ (propagated-inputs
+ (list python-certifi
+ python-click
+ python-markdown
+ python-pygobject
+ python-pyyaml
+ python-requests
+ python-requests-oauthlib))
+ (home-page "https://github.com/caronc/apprise")
+ (synopsis "Push notification library")
+ (description
+ "Apprise is a Python library that allows sending push notifications to a
+broad range of notification services, such as Telegram, Discord, Slack, Amazon
+SNS, Gotify, etc.")
+ (license license:bsd-2)))
+
+(define-public python-blacksheep
+ (package
+ (name "python-blacksheep")
+ (version "2.4.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Neoteroi/BlackSheep")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0v9pkg3ffxxcdc8ynjjh5fgis5m49m65sbrgcrghmz0xkik5ny5w"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; tests: 1675 passed, 3 skipped
+ ;;
+ ;; Run all unit tests, but do not run integration tests from `itests`
+ ;; directory.
+ #:test-flags
+ #~(list "tests")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'cythonize
+ (lambda _
+ (with-directory-excursion "blacksheep"
+ (for-each (lambda (file)
+ (invoke "cython" "-3" file "-I" "."))
+ (find-files "." ".*\\.pyx$"))))))))
+ (native-inputs
+ (list nss-certs-for-test
+ python-cython
+ python-flask
+ python-jinja2
+ python-pydantic
+ python-pyjwt
+ python-pytest
+ python-pytest-asyncio
+ python-setuptools))
+ (propagated-inputs
+ (list python-certifi
+ python-essentials-openapi
+ python-guardpost
+ python-itsdangerous))
+ (home-page "https://github.com/Neoteroi/BlackSheep")
+ (synopsis "Asynchronous framework to build event based web applications")
+ (description
+ "BlackSheep is a lightweight, asynchronous, event driven Web framework.
+
+The framework offers
+@itemize
+@item A rich code API, based on dependency injection and inspired by Flask and
+ASP.NET Core.
+@item A typing-friendly codebase, which enables a comfortable development
+experience thanks to hints when coding with IDEs.
+@item Built-in generation of OpenAPI Documentation, supporting version 3, YAML,
+and JSON.
+@item A cross-platform framework, using the most modern versions of Python.
+@item Good performance.
+@end itemize")
+ (license license:expat)))
+
(define-public python-devpi-common
(package
(name "python-devpi-common")
@@ -337,21 +446,30 @@ server process.")
(define-public python-devpi-server
(package
(name "python-devpi-server")
- (version "6.14.0")
+ (version "6.17.0")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "devpi-server" version))
+ (uri (pypi-uri "devpi_server" version))
(sha256
- (base32 "08smfjhnvqj68fp45gzqm9axjcgnksc0z31v48llivnzlxwf8cmr"))))
+ (base32 "13lybrw8j6zjxwvx6sk7bw6854hd2m18s1xcvl0q100j4n06p6ml"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
;; These all fail with: "module 'py' has no attribute 'io'"
- '(list "--ignore=test_devpi_server/test_importexport.py"
- "--ignore=test_devpi_server/test_main.py"
- "--ignore=test_devpi_server/test_genconfig.py")))
+ #~(list "--ignore=test_devpi_server/test_importexport.py"
+ "--ignore=test_devpi_server/test_main.py"
+ "--ignore=test_devpi_server/test_genconfig.py")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "pyproject.toml"
+ ;; It straggles to check argon2 in passlib on any versions
+ ;; starting from 6.14.0: UnknownExtra("passlib 1.7.4 has no
+ ;; such extra feature 'argon2'",).
+ (("passlib\\[argon2\\]") "passlib")))))))
(propagated-inputs (list python-argon2-cffi
python-attrs
python-defusedxml
@@ -366,16 +484,16 @@ server process.")
python-py
python-pyramid
python-repoze-lru
- python-ruamel.yaml
+ python-ruamel.yaml-0.16 ;FIXME: rename
python-strictyaml
python-waitress))
(native-inputs
(list python-execnet
python-pytest
+ python-pytest-asyncio
python-pytest-timeout
python-setuptools
- python-webtest
- python-wheel))
+ python-webtest))
(home-page "https://devpi.net")
(synopsis "Pypi.org caching server")
(description "This package implements a reliable private and pypi.org
@@ -597,6 +715,40 @@ Async mode for @url{https://domainconnect.org/, Domain Connect protocol}.")
Dropbox API v2.")
(license license:expat)))
+(define-public python-essentials-openapi
+ (package
+ (name "python-essentials-openapi")
+ (version "1.2.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Neoteroi/essentials-openapi")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0f3lhpkqhvv8sr1c34cvzdqkc61306m03w3jp0zdih1v6is05j8x"))))
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list python-flask
+ python-hatchling
+ python-pydantic
+ python-pytest
+ python-rich))
+ (propagated-inputs
+ (list python-essentials
+ python-httpx
+ python-jinja2
+ python-markupsafe
+ python-pyyaml))
+ (home-page "https://github.com/Neoteroi/essentials-openapi/")
+ (synopsis "Generator for OpenAPI Documentation")
+ (description
+ "Generator for OpenAPI Documentation version 2 and 3, in JSON and YAML
+formats. Generator for other kinds of documents from OpenAPI Documentation
+files.")
+ (license license:expat)))
+
(define-public python-eventlet
(package
(name "python-eventlet")
@@ -657,6 +809,42 @@ Note: In Guix, this package assumes the environment variable
to anything else.")
(license license:expat)))
+(define-public python-flask-caching
+ (package
+ (name "python-flask-caching")
+ (version "2.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flask_caching" version))
+ (sha256
+ (base32 "1jcqgfzvqhgpngf9nhpfjs129cslh8jyczfy8kw11y7b9qdzvmv5"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ ;; Tests requiring running Redis or dated python-cache.
+ #~(list "--deselect=tests/test_init.py::test_init_nullcache[MemcachedCache]"
+ "--deselect=tests/test_init.py::test_init_nullcache[RedisCache]"
+ "--deselect=tests/test_init.py::test_init_nullcache[RedisSentinelCache]"
+ "--deselect=tests/test_init.py::test_init_nullcache[SASLMemcachedCache]"
+ "--deselect=tests/test_init.py::test_init_nullcache[SpreadSASLMemcachedCache]"
+ "-k" "not test_client_override_reflected_on_cachelib_methods")))
+ (native-inputs
+ (list python-pytest
+ python-pytest-asyncio
+ python-pytest-xprocess
+ python-setuptools))
+ (propagated-inputs
+ (list python-cachelib
+ python-flask))
+ (home-page "https://github.com/pallets-eco/flask-caching")
+ (synopsis "Caching extension for Flask")
+ (description
+ "This package provides a caching support to Flask applications, it's a
+fort ok https://github.com/thadeusb/flask-cache.")
+ (license license:bsd-3)))
+
(define-public python-gdown
(package
(name "python-gdown")
@@ -728,6 +916,51 @@ formats (PDF/XML/CSV).")
@url{https://www.globus.org/, Globus} APIs.")
(license license:asl2.0)))
+(define-public python-guardpost
+ (package
+ (name "python-guardpost")
+ (version "1.0.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Neoteroi/guardpost")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1q09w953d4cjjvp8pp3kkkhw0y9kq2jgj6fihdz9np55pwxkfd15"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; Possible timing issue, see:
+ ;; <https://github.com/Neoteroi/GuardPost/issues/18>.
+ #:test-flags '(list "--ignore=tests/test_jwts.py")))
+ (native-inputs
+ (list python-cryptography
+ python-flask
+ python-hatchling
+ python-pyjwt
+ python-pytest
+ python-pytest-asyncio))
+ (propagated-inputs
+ (list python-rodi))
+ (home-page "https://github.com/Neoteroi/GuardPost/")
+ (synopsis
+ "Authentication and authorization framework for Python applications")
+ (description
+ "GuardPost is a framework to handle authentication and
+authorization in asynchronous Python applications.
+
+Its features include
+
+@itemize
+@item Strategy to implement authentication.
+@item Strategy to implement authorization.
+@item Support for dependency injection
+@item Built-in support for JSON Web Tokens (JWTs) authentication.
+@end itemize")
+ (license license:expat)))
+
(define-public python-hookdns
(package
(name "python-hookdns")
@@ -955,18 +1188,26 @@ datasets and other repos on the @url{huggingface.co} hub.")
(for-each delete-file '("test_oauth.py" "test_docs.py")))
(substitute* "setup.py"
(("\"(oauth|lazr\\.(authentication|restful>=0\\.11\\.0))\",")
- "")))))))
- (native-inputs (list python-setuptools
- python-testtools
- python-wheel
- python-wsgi-intercept
- python-zope-testrunner))
- (propagated-inputs (list python-distro
- python-httplib2
- python-oauthlib
- python-pyparsing
- python-setuptools
- python-wadllib))
+ ""))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs
+ (list python-setuptools
+ python-testtools
+ python-wheel
+ python-wsgi-intercept
+ python-zope-testrunner))
+ (propagated-inputs
+ (list python-distro
+ python-httplib2
+ python-oauthlib
+ python-pyparsing
+ python-setuptools
+ python-six
+ python-wadllib))
(home-page "https://launchpad.net/lazr.restfulclient")
(synopsis "Web client Python library extending wadlib")
(description "This package provides a programmable client library that
@@ -976,14 +1217,14 @@ adds functionality on top of @code{wadlib}.")
(define-public python-launchpadlib
(package
(name "python-launchpadlib")
- (version "1.10.16")
+ (version "2.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "launchpadlib" version))
(sha256
- (base32 "106aixwchwyb100wlf4cnj1vgsi2d7x40ps8xv8az27r6qwv3x0d"))))
- (build-system python-build-system)
+ (base32 "0br4j76l83lvyrhm8psml9cqmdsn65rx48w1q1a0s1bmpf85ihml"))))
+ (build-system pyproject-build-system)
(arguments
(list #:phases #~(modify-phases %standard-phases
(add-before 'check 'set-home
@@ -991,12 +1232,10 @@ adds functionality on top of @code{wadlib}.")
;; Tests require a writable home.
(setenv "HOME" "/tmp"))))))
(propagated-inputs
- (list python-httplib2
- python-keyring
- python-lazr-restfulclient
- python-lazr-uri))
- (native-inputs (list python-mock python-testresources python-wadllib))
- (home-page "https://help.launchpad.net/API/launchpadlib")
+ (list python-httplib2 python-lazr-restfulclient python-lazr-uri))
+ (native-inputs (list python-pytest python-testresources python-wadllib
+ python-setuptools python-wheel))
+ (home-page "https://documentation.ubuntu.com/launchpad")
(synopsis "Python client library for Launchpad's web service")
(description "@code{launchpadlib} is a Python library that allows
scripting Launchpad via its the web service API.")
@@ -1005,15 +1244,24 @@ scripting Launchpad via its the web service API.")
(define-public python-lazr-uri
(package
(name "python-lazr-uri")
- (version "1.0.6")
+ (version "1.0.7")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "lazr.uri" version))
+ (uri (pypi-uri "lazr_uri" version))
(sha256
- (base32 "0r44rw0bj5mayhqwfwj1dnrjgzj1lrh7ishiddd1vygnrczqa9jh"))))
- (build-system python-build-system)
- (native-inputs (list python-zope-testrunner))
+ (base32 "1vm34pw8fksc6m8fnqwh215sqdlw546cxcdga93i2l746grzc37d"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs (list python-setuptools python-zope-testrunner))
(home-page "https://launchpad.net/lazr.uri")
(synopsis "Python URI manipulation library")
(description "This Python package provides a self-contained, easily
@@ -1093,31 +1341,173 @@ feaatures are:
in Python 3.13 by PEP-594.")
(license license:psfl)))
+(define-public python-opentelemetry-api
+ (package
+ (name "python-opentelemetry-api")
+ (version "1.37.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "opentelemetry_api" version))
+ (sha256
+ (base32 "19yr3hfwdc9sv8df4vydxcsxnpld3xi57siq4w8xanrm42qka1sl"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-importlib-metadata
+ python-typing-extensions))
+ (native-inputs (list python-hatchling
+ python-opentelemetry-test-utils-bootstrap))
+ (home-page "https://opentelemetry.io/docs/languages/python/")
+ (synopsis "OpenTelemetry Python API")
+ (description "@code{OpenTelemetry} Python API.")
+ (license license:asl2.0)))
+
+(define-public python-opentelemetry-api-bootstrap
+ (hidden-package
+ (package/inherit python-opentelemetry-api
+ (name "python-opentelemetry-api-bootstrap")
+ (arguments
+ (list
+ #:tests? #f))
+ (native-inputs (list python-hatchling)))))
+
+(define-public python-opentelemetry-sdk
+ (package
+ (name "python-opentelemetry-sdk")
+ (version "1.37.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "opentelemetry_sdk" version))
+ (sha256
+ (base32 "19fx8vf35kcss43i17zqngqhmglb36dnddasbdvfsgcm22f0i3nc"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-opentelemetry-api
+ python-opentelemetry-semantic-conventions
+ python-typing-extensions))
+ (native-inputs (list python-hatchling
+ python-opentelemetry-test-utils-bootstrap
+ python-pytest))
+ (home-page "https://opentelemetry.io/docs/languages/python/")
+ (synopsis "OpenTelemetry Python SDK")
+ (description "@code{OpenTelemetry} Python SDK.")
+ (license license:asl2.0)))
+
+(define-public python-opentelemetry-sdk-bootstrap
+ (hidden-package
+ (package/inherit python-opentelemetry-sdk
+ (name "python-opentelemetry-sdk-bootstrap")
+ (arguments (list #:tests? #f))
+ (propagated-inputs (list python-opentelemetry-api-bootstrap
+ python-opentelemetry-semantic-conventions-bootstrap))
+ (native-inputs (list python-hatchling)))))
+
+(define-public python-opentelemetry-semantic-conventions
+ (package
+ (name "python-opentelemetry-semantic-conventions")
+ (version "0.58b0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "opentelemetry_semantic_conventions" version))
+ (sha256
+ (base32 "098czakcawikaspl46vy6vickw80mm2bnrspflrw8ya24r8nzm3b"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-opentelemetry-api python-typing-extensions))
+ (native-inputs (list python-hatchling))
+ (home-page "https://opentelemetry.io/docs/languages/python/")
+ (synopsis "OpenTelemetry Semantic Conventions")
+ (description "@code{OpenTelemetry} Semantic Conventions.")
+ (license license:asl2.0)))
+
+(define-public python-opentelemetry-semantic-conventions-bootstrap
+ (hidden-package
+ (package/inherit python-opentelemetry-semantic-conventions
+ (name "python-opentelemetry-semantic-conventions-bootstrap")
+ (arguments
+ (list
+ #:tests? #f))
+ (propagated-inputs (list python-opentelemetry-api-bootstrap
+ python-typing-extensions)))))
+
+(define-public python-opentelemetry-test-utils
+ (package
+ (name "python-opentelemetry-test-utils")
+ (version "0.58b0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "opentelemetry_test_utils" version))
+ (sha256
+ (base32 "0xjp04zjn7m79xsda9wp79rqyzy2c10347s967vp7xvmndwwa0ds"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-asgiref python-opentelemetry-api
+ python-opentelemetry-sdk))
+ (native-inputs (list python-hatchling))
+ (home-page "https://opentelemetry.io/docs/languages/python/")
+ (synopsis "Test utilities for OpenTelemetry unit tests")
+ (description "Test utilities for @code{OpenTelemetry} unit tests.")
+ (license license:asl2.0)))
+
+(define-public python-opentelemetry-test-utils-bootstrap
+ (hidden-package
+ (package/inherit python-opentelemetry-test-utils
+ (name "python-opentelemetry-test-utils-bootstrap")
+ (arguments
+ (list
+ #:tests? #f))
+ (propagated-inputs (list python-asgiref
+ python-opentelemetry-api-bootstrap
+ python-opentelemetry-sdk-bootstrap))
+ (native-inputs (list python-hatchling)))))
+
+(define-public python-pathy
+ (package
+ (name "python-pathy")
+ (version "0.11.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pathy" version))
+ (sha256
+ (base32 "0vbhcfg8g74g90bzmdgxr1jyvwhadvlr2w9wyvs6xxwb1dmhwgdv"))))
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list python-mock
+ python-pytest
+ python-setuptools))
+ (propagated-inputs
+ (list python-pathlib-abc
+ python-smart-open-6
+ python-typer))
+ (home-page "https://github.com/justindujardin/pathy")
+ (synopsis "Path interface for local and cloud bucket storage")
+ (description "Pathy is a python package (with type annotations) for
+working with Cloud Bucket storage providers using a @code{pathlib} interface.
+It provides @code{pathlib.Path} subclasses for local and cloud bucket
+storage.")
+ (license license:asl2.0)))
+
(define-public python-portend
(package
(name "python-portend")
- (version "3.2.0")
+ (version "3.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "portend" version))
(sha256
- (base32 "0wpvixicc3d0lack65554mvdrrckkn18p1xcgiv9v5cwq59a6l2j"))))
+ (base32 "12b4ikxyv32n33mvm4brp74igl1mvw825x01sjvvs54y3yml17da"))))
(build-system pyproject-build-system)
;; Do not test pyproject.toml with python-pytest-checkdocs as it tries to
;; download dependencies.
(arguments
'(#:test-flags '("-k" "not project")))
- (propagated-inputs (list python-tempora))
- ;; TODO: Add python-pytest-ruff to native-inputs once it has been packaged.
- (native-inputs (list python-pytest
- python-pytest-black
- python-pytest-checkdocs
- python-pytest-cov
- python-pytest-enabler
- python-pytest-mypy
- python-setuptools
- python-wheel))
+ (native-inputs
+ (list python-pytest
+ python-setuptools
+ python-setuptools-scm))
+ (propagated-inputs
+ (list python-tempora))
(home-page "https://github.com/jaraco/portend")
(synopsis "Monitor TCP ports for bound or unbound states")
(description
@@ -1277,18 +1667,18 @@ asynchronous version of botocore.")
(define-public python-aiohappyeyeballs
(package
(name "python-aiohappyeyeballs")
- (version "2.4.4")
+ (version "2.6.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiohappyeyeballs" version))
(sha256
- (base32 "0ibpfm552pflim399qq34cnd79xhz5qr5khqzhx1hqwwi23pvpaz"))))
+ (base32 "0n1mjip846fprc34ik6if9m8xisva2m0ygyzvz53r013648x1yf3"))))
(build-system pyproject-build-system)
(native-inputs
(list python-poetry-core
python-pytest
- python-pytest-asyncio
+ python-pytest-asyncio-0.26
python-pytest-cov))
(home-page "https://github.com/aio-libs/aiohappyeyeballs")
(synopsis "Happy Eyeballs for asyncio")
@@ -1329,22 +1719,22 @@ for AsyncIO and mixed-type iterables.")
(define-public python-aiosignal
(package
(name "python-aiosignal")
- (version "1.3.1")
+ (version "1.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiosignal" version))
(sha256
- (base32 "1z4cnqww6j0xl6f3vx2r6kfv1hdny1pnlll7difvfj8nbvhrdkal"))))
+ (base32 "1isin9bp256scp59lbr35h48nw5p5i84b6f9kh1c50w08vcyqzpl"))))
(build-system pyproject-build-system)
- (arguments (list #:test-flags #~(list "tests")))
- (propagated-inputs (list python-frozenlist))
(native-inputs
(list python-pytest
python-pytest-asyncio
python-pytest-cov
python-setuptools
python-wheel))
+ (propagated-inputs
+ (list python-frozenlist))
(home-page "https://github.com/aio-libs/aiosignal")
(synopsis "Callback manager for Python @code{asyncio} projects")
(description "This Python module provides @code{Signal}, an abstraction to
@@ -1460,6 +1850,26 @@ Callback Hell.
@end itemize")
(license license:asl2.0)))
+(define-public python-aiohttp-oauthlib
+ (package
+ (name "python-aiohttp-oauthlib")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "aiohttp-oauthlib" version))
+ (sha256
+ (base32 "1dwk0gby27xm7384qyz2p7zw9dqhjx7m8fhfk172w36xknjx2g49"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:tests? #f)) ; none included
+ (propagated-inputs (list python-aiohttp python-oauthlib))
+ (native-inputs (list python-setuptools python-setuptools-scm))
+ (home-page "https://git.sr.ht/~whynothugo/aiohttp-oauthlib")
+ (synopsis "OAuthlib authentication support for aiohttp")
+ (description "Aiohttp-oauthlib uses the Python aiohttp and OAuthlib libraries to
+provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
+ (license license:isc)))
+
(define-public python-aiohttp-client-cache
(package
(name "python-aiohttp-client-cache")
@@ -1643,9 +2053,8 @@ It features a minimal TLS 1.3 implementation, a QUIC stack and an HTTP/3 stack."
;; This test opens a remote connection.
#~(list "-k" "not test_create_connection_resolve_good")))
(native-inputs (list python-pytest
- python-pytest-asyncio
- python-setuptools
- python-wheel))
+ python-pytest-asyncio-0.26
+ python-setuptools))
(propagated-inputs
(list python-attrs python-websockets))
(home-page "https://github.com/kyuupichan/aiorpcX")
@@ -1659,40 +2068,27 @@ The package includes a module with full coverage of JSON RPC versions 1.0 and
comes with a SOCKS proxy client.")
(license (list license:expat license:bsd-2))))
-(define-public python-aiorpcx-0.18
+(define-public python-aiostream
(package
- (inherit python-aiorpcx)
- (version "0.18.7")
+ (name "python-aiostream")
+ (version "0.7.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "aiorpcX" version))
+ (method git-fetch) ;no tests in PyPI archvie
+ (uri (git-reference
+ (url "https://github.com/vxgmichel/aiostream")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1rswrspv27x33xa5bnhrkjqzhv0sknv5kd7pl1vidw9d2z4rx2l0"))))))
-
-(define-public python-aiostream
- (package
- (name "python-aiostream")
- (version "0.4.5")
- (source (origin
- ;; Tests not included in pypi release.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/vxgmichel/aiostream")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0l2ijb7yk0820wiyf6zrzx8fhzf8925an7r06mcaw3in1mr6rssq"))))
- (build-system python-build-system)
+ (base32 "1wf89l9f0ivlv796pklpgykx6j6ksfqrmvzikd8w5j6ldln7bv50"))))
+ (build-system pyproject-build-system)
(native-inputs
(list python-pytest
- python-pytest-asyncio
python-pytest-cov
- python-pytest-runner
- python-setuptools
- python-wheel))
+ python-pytest-asyncio
+ python-setuptools))
+ (propagated-inputs
+ (list python-typing-extensions))
(home-page "https://github.com/vxgmichel/aiostream")
(synopsis "Generator-based operators for asynchronous iteration")
(description "@code{aiostream} provides a collection of stream operators that can
@@ -1868,33 +2264,43 @@ routes using HTTP Digest Authentication.")
(license license:bsd-2)))
(define-public python-css-html-js-minify
- (package
- (name "python-css-html-js-minify")
- (version "2.5.5")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "css-html-js-minify" version ".zip"))
- (sha256
- (base32
- "0v3l2dqdk2y4r6ax259gs4ij1zzm9yxg6491s6254vs9w3vi37sa"))))
- (build-system python-build-system)
- ;; XXX: The git repository has no tags, and the PyPI releases do not
- ;; contain tests.
- (arguments '(#:tests? #f))
- (native-inputs (list unzip))
- (home-page "https://github.com/juancarlospaco/css-html-js-minify")
- (synopsis "CSS/HTML/JS minifier")
- (description
- "This package provides a single-file minifier for CSS, HTML, and JavaScript.")
- ;; XXX: The README just says "GNU GPL and GNU LGPL and MIT". From
- ;; <https://github.com/juancarlospaco/css-html-js-minify/issues/9> it
- ;; looks like the user can choose a license.
- (license (list license:gpl3+ license:lgpl3+ license:expat))))
+ (let ((commit "8f72452960e41bc5476e50d96481f633eff72750")
+ (revision "0"))
+ (package
+ (name "python-css-html-js-minify")
+ (version (git-version "2.5.5" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/juancarlospaco/css-html-js-minify")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1lkx03720zk6q16w3d9r3l5kryikd1cmzwrcjzsjxwrq4zfh6vdf"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "setup.cfg"
+ (("^tests_require.*") "")))))))
+ (native-inputs (list python-pytest python-setuptools))
+ (home-page "https://github.com/juancarlospaco/css-html-js-minify")
+ (synopsis "CSS/HTML/JS minifier")
+ (description
+ "This package provides a single-file minifier for CSS, HTML, and JavaScript.")
+ ;; XXX: The README just says "GNU GPL and GNU LGPL and MIT". From
+ ;; <https://github.com/juancarlospaco/css-html-js-minify/issues/9> it
+ ;; looks like the user can choose a license.
+ (license (list license:gpl3+ license:lgpl3+ license:expat)))))
(define-public python-aws-sam-translator
(package
(name "python-aws-sam-translator")
- (version "1.94.0")
+ (version "1.99.0")
(source
(origin
(method git-fetch) ; no tests in PyPI release
@@ -1903,7 +2309,7 @@ routes using HTTP Digest Authentication.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0rrmp2a2lr1bb909x34j7dqkdynx48hfwxg9m488s0mws68f78m3"))))
+ (base32 "1k9a8r0kfjsrxk5z4yhipcynr2sqcl7lpc1xmdblxk76cqvsmkb3"))))
(build-system pyproject-build-system)
(arguments
(list
@@ -1926,8 +2332,7 @@ routes using HTTP Digest Authentication.")
python-setuptools
python-pytest-xdist
python-parameterized
- python-pyyaml
- python-wheel))
+ python-pyyaml))
(propagated-inputs
(list python-boto3
python-jsonschema
@@ -1957,7 +2362,10 @@ Model} (SAM) templates into AWS CloudFormation templates.")
(list
#:test-flags
'(list ;; Tries to connect to external network resources
+ "--ignore=tests/ext/aiohttp/test_client.py"
+ "--ignore=tests/ext/httplib/test_httplib.py"
"--ignore=tests/ext/httpx"
+ "--ignore=tests/ext/requests/test_requests.py"
;; TODO: How to configure Django for these tests?
"--ignore=tests/ext/django"
;; These tests require packages not yet in Guix.
@@ -1975,11 +2383,7 @@ Model} (SAM) templates into AWS CloudFormation templates.")
"--ignore=tests/ext/flask_sqlalchemy/test_query.py"
;; FIXME: Why is this failing?
"--ignore=tests/test_patcher.py"
- "--ignore=tests/test_lambda_context.py"
- ;; These tests want to access httpbin.org.
- "--ignore=tests/ext/requests/test_requests.py"
- "--ignore=tests/ext/httplib/test_httplib.py"
- "--ignore=tests/ext/aiohttp/test_client.py")
+ "--ignore=tests/test_lambda_context.py")
#:phases
'(modify-phases %standard-phases
(add-before 'check 'pre-check
@@ -1988,6 +2392,7 @@ Model} (SAM) templates into AWS CloudFormation templates.")
(setenv "PYTHONPATH" (getcwd)))))))
(native-inputs
(list ;; These are required for the test suite.
+ python-aiohttp
python-bottle
python-flask
python-flask-sqlalchemy
@@ -1995,20 +2400,15 @@ Model} (SAM) templates into AWS CloudFormation templates.")
python-mock
python-pymysql
python-pytest
- python-pytest-aiohttp
- python-pytest-asyncio
+ python-pytest-asyncio-0.26
python-pytest-benchmark
- python-requests
- python-sqlalchemy
- python-webtest
python-setuptools
- python-wheel))
+ python-sqlalchemy
+ python-webtest))
(propagated-inputs
- (list python-aiohttp
- python-botocore
- python-future
+ (list python-botocore
python-jsonpickle
- python-urllib3
+ python-requests
python-wrapt))
(synopsis "Profile applications on AWS X-Ray")
(description
@@ -2027,9 +2427,8 @@ emit information from within their applications to the AWS X-Ray service.")
(sha256
(base32 "0llam7g7sv08lcfgy18iph8br8ldjmy2qbjaykc9pd3z4iisb0yd"))))
(build-system pyproject-build-system)
- (native-inputs
- (list python-setuptools
- python-wheel))
+ (arguments (list #:test-backend #~'unittest))
+ (native-inputs (list python-setuptools))
(home-page "https://github.com/ko-zu/psl")
(synopsis "Public suffix list for Python")
(description
@@ -2068,8 +2467,10 @@ Features:
;; FIXME: This should be fixed in python-xmlsec
(add-before 'check 'pre-check
(lambda* (#:key inputs #:allow-other-keys)
- (setenv "LD_LIBRARY_PATH"
- (dirname (search-input-file inputs "lib/libxmlsec1-openssl.so.1.2.37"))))))))
+ (let ((lib (search-input-file inputs
+ "lib/libxmlsec1-openssl.so")))
+ (setenv "LD_LIBRARY_PATH" (dirname lib))))))))
+ (inputs (list xmlsec-openssl))
(propagated-inputs (list python-isodate python-lxml python-xmlsec))
(native-inputs (list python-coverage
python-flake8
@@ -2153,51 +2554,53 @@ decode and default on encode.
(define-public python-cfn-lint
(package
(name "python-cfn-lint")
- (version "1.28.0")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/aws-cloudformation/cfn-lint")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0n1v05516s0zy64v1a7f7pj5h9lscvbkkwnlgmys7g8lydlgf0v4"))))
+ (version "1.38.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/aws-cloudformation/cfn-lint")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1crwx0cp50h83xz8lc4ny504mx4dadpk80ln539syd4jd78qplgy"))))
(build-system pyproject-build-system)
(arguments
(list
+ ;; tests: 2136 passed, 11 deselected, 1 warning
#:test-flags
- #~(list "-k" (string-join
- (list
- ;; Skip documentation tests.
- "not test_update_docs"
- ;; Tests fail with error: AssertinError ...
- "test_parameter_for_autopublish_code_sha256"
- "test_sam_with_language_extension"
- "test_module_integration"
- "test_templates"
- ;; Test fails with error: diff error while comparing
- ;; graphs.
- "test_build_graph")
- " and not "))))
+ #~(list "--ignore=test/integration/"
+ "-k" (string-join
+ ;; Tests failing on doctest or comparing diff.
+ (list "not test_build_graph"
+ "test_good_template"
+ "test_success_run"
+ "test_update_docs"
+ ;; ImportError: Missing optional dependencies sarif
+ "test_sarif_formatter")
+ " and not "))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'remove-deprecated
+ (lambda _
+ (substitute* "src/cfnlint/data/AdditionalSpecs/LmbdRuntimeLifecycle.json"
+ (("deprecated\": \"2025")
+ "deprecated\": \"2125")))))))
(native-inputs
(list python-defusedxml
python-pydot
python-pytest
- python-setuptools
- python-wheel))
+ python-setuptools))
(propagated-inputs
(list python-aws-sam-translator
- python-importlib-resources
- python-jschema-to-python
python-jsonpatch
- python-junit-xml
python-networkx
python-pyyaml
python-regex
- python-sarif-om
python-sympy
- python-typing-extensions))
+ python-typing-extensions
+ ;; [optional]
+ python-junit-xml))
(home-page "https://github.com/aws-cloudformation/cfn-lint")
(synopsis "Validate CloudFormation templates")
(description
@@ -2206,25 +2609,6 @@ the CloudFormation spec and additional checks. Includes checking valid values
for resource properties and best practices.")
(license license:expat)))
-(define-public python-jschema-to-python
- (package
- (name "python-jschema-to-python")
- (version "1.2.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "jschema_to_python" version))
- (sha256
- (base32
- "14cvaiwm56g0v6p7zviikaa5i9ln3yqy910jmp60hirhbpz19zvn"))))
- (build-system python-build-system)
- (propagated-inputs (list python-attrs python-jsonpickle python-pbr))
- (native-inputs (list python-pytest))
- (home-page "https://github.com/microsoft/jschema-to-python")
- (synopsis "Generate Python classes from a JSON schema")
- (description "This package generates source code for Python classes from a
-@url{http://jschema.org,JSchema} JSON schema.")
- (license license:expat)))
-
(define-public python-requests-cache
(package
(name "python-requests-cache")
@@ -2288,6 +2672,33 @@ responses as planin JSON/YAML file or save responses as plain JSON/YAML
files.")
(license license:bsd-2)))
+(define-public python-requests-futures
+ (package
+ (name "python-requests-futures")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "requests_futures" version))
+ (sha256
+ (base32 "1njqfjmd72l5f32jvcppg2afrvb0cd8angdwmq7q0vik81wvazkb"))))
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list python-greenlet
+ python-pytest
+ python-pytest-httpbin
+ python-readme-renderer
+ python-setuptools
+ python-twine
+ python-werkzeug))
+ (propagated-inputs (list python-requests))
+ (home-page "https://github.com/ross/requests-futures")
+ (synopsis "Asynchronous Python HTTP for Humans")
+ (description
+ "This package provides and add-on the Python Requests HTTP library to run
+code asynchronously.")
+ (license license:asl2.0)))
+
(define-public python-s3path
(package
(name "python-s3path")
@@ -2316,26 +2727,6 @@ files.")
AWS S3 Service using boto3 S3 resource as a driver.")
(license license:asl2.0)))
-(define-public python-sarif-om
- (package
- (name "python-sarif-om")
- (version "1.0.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "sarif_om" version))
- (sha256
- (base32
- "167gb8xjm0310km3w1s12bqldbv7zyklkr4j5900vq4361ml2pyd"))))
- (build-system python-build-system)
- (propagated-inputs (list python-attrs))
- (native-inputs (list python-pbr))
- (home-page "https://github.com/microsoft/sarif-python-om")
- (synopsis "Python implementation of the SARIF 2.1.0 object model")
- (description "This module contains classes for the object model defined
-by the @url{https://sarifweb.azurewebsites.net,Static Analysis Results
-Interchange Format (SARIF)} file format.")
- (license license:expat)))
-
(define-public python-falcon
(package
(name "python-falcon")
@@ -2484,18 +2875,14 @@ over a different origin than that of the web application.")
(("==") ">=")))))))
(native-inputs
(list python-cryptography
- python-flake8
python-future
python-mock
+ python-pyparsing
python-pytest
python-pytest-cov
- python-pytest-forked
python-pytest-randomly
python-pytest-timeout
- python-pytest-xdist
- python-six
- python-setuptools
- python-wheel))
+ python-setuptools))
(home-page "https://github.com/httplib2/httplib2")
(synopsis "Comprehensive HTTP client library")
(description
@@ -2563,39 +2950,58 @@ other HTTP libraries.")
(define-public httpie
(package
(name "httpie")
- (version "3.2.2")
+ (version "3.2.4")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "httpie" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/httpie/cli")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "140w4mr0w7scpf4j5qm4h475vbwrgxzkdwyygwcmql1r1cgngywb"))))
- (build-system python-build-system)
+ (base32 "0ii11xfqkbawg1v8dlli4fqq5k3yc2v65z3j7k3p4gng998s94mr"))))
+ (build-system pyproject-build-system)
(arguments
- ;; The tests attempt to access external web servers, so we cannot run them.
- '(#:tests? #f))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'remove-unnecessary-dependencies
+ ;; Remove pip and setuptools dependencies so sanity-check.py passes.
+ (lambda _
+ (substitute* "setup.cfg"
+ (("(pip|setuptools)") "")))))
+ #:test-flags
+ ;; test_plugins_cli.py communicates through subprocesses
+ ;; mocking stdin, which does not work in the build container.
+ ;; test_ssl.py cannot find the SSL certificates.
+ ;; test_binary.py fails for an unknown reason.
+ #~(list "--ignore=tests/test_plugins_cli.py"
+ "--ignore=tests/test_ssl.py"
+ "--ignore=tests/test_binary.py")))
+ (native-inputs (list python-pytest
+ python-pytest-httpbin
+ python-pytest-mock
+ python-responses
+ python-setuptools
+ python-werkzeug
+ python-wheel))
(propagated-inputs
(list python-charset-normalizer
- python-colorama
python-defusedxml
- python-importlib-metadata
python-multidict
- python-pip
python-pygments
python-requests
python-requests-toolbelt
- python-rich
- python-setuptools))
+ python-rich))
(home-page "https://httpie.io")
- (synopsis "cURL-like tool for humans")
+ (synopsis "Modern, user-friendly command-line HTTP client for the API era")
(description
"A command line HTTP client with an intuitive UI, JSON support,
syntax highlighting, wget-like downloads, plugins, and more. It consists of
a single http command designed for painless debugging and interaction with
HTTP servers, RESTful APIs, and web services.")
- ;; This was fixed in 1.0.3.
- (properties `((lint-hidden-cve . ("CVE-2019-10751"))))
+ ;; CVE-2019-10751 was fixed in 1.0.3.
+ (properties `((lint-hidden-cve "CVE-2019-10751")))
(license license:bsd-3)))
(define-public python-parfive
@@ -2625,7 +3031,7 @@ HTTP servers, RESTful APIs, and web services.")
python-pytest-localserver
python-pytest-socket
python-setuptools
- python-setuptools-scm-next
+ python-setuptools-scm
python-wheel))
(propagated-inputs
(list python-aiofiles
@@ -2653,20 +3059,13 @@ API, but uses asyncio to parallelise downloading the files.")
(method url-fetch)
(uri (pypi-uri "html2text" version))
(sha256
- (base32
- "1fvv4z6dblii2wk1x82981ag8yhxbim1v2ksgywxsndh2s7335p2"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "test/"))))))
- (native-inputs
- (list python-pytest))
+ (base32 "1fvv4z6dblii2wk1x82981ag8yhxbim1v2ksgywxsndh2s7335p2"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-pytest python-setuptools python-wheel))
(home-page "https://github.com/Alir3z4/html2text")
(synopsis "Convert HTML into plain text")
- (description "html2text takes HTML and converts it into plain ASCII text
+ (description
+ "html2text takes HTML and converts it into plain ASCII text
which is also valid markdown. html2text was originally written by Aaron
Swartz.")
(license license:gpl3+)))
@@ -2741,16 +3140,20 @@ JWE, JWK, JWA, and JWT.")
(define-public python-jwcrypto
(package
(name "python-jwcrypto")
- (version "1.5.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "jwcrypto" version))
- (sha256
- (base32
- "138bh6x1yy0qpk63bxa7mxnd97gfdm1fkpwm8wrdz3g3z0fca79c"))))
+ (version "1.5.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "jwcrypto" version))
+ (sha256
+ (base32 "0fdhn5jrsdxqr1yr6rmh585q4j08z1aajn392vk1l20c59v8f6kp"))))
(build-system pyproject-build-system)
- (propagated-inputs (list python-cryptography python-deprecated))
- (native-inputs (list python-setuptools python-wheel))
+ (native-inputs
+ (list python-pytest
+ python-setuptools))
+ (propagated-inputs
+ (list python-cryptography
+ python-deprecated))
(home-page "https://github.com/latchset/jwcrypto")
(synopsis "Implementation of JOSE Web standards")
(description
@@ -2870,6 +3273,9 @@ object graph to and from JSON.")
(build-system pyproject-build-system)
(arguments
(list
+ #:test-flags
+ ;; Unclear why test fails.
+ #~(list "-k" "not test_select_form_associated_elements")
;; The following dependencies are not directly required, the developer
;; only pinned versions because of vulnerabilities. They also break
;; sanity-check because it checks for a python-certifi version which is
@@ -2902,24 +3308,16 @@ follow links and submit forms. It doesn’t do JavaScript.")
(define-public python-hyperframe
(package
(name "python-hyperframe")
- (version "6.0.1")
+ (version "6.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "hyperframe" version))
(sha256
- (base32 "055951gyhnjqpa2al52rj34g8yrls9inyn56n7nfkj0x4d300ldf"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "test")))))))
+ (base32 "021v58w1b7mbwqkvbz11p3a4qk1sj91jnf6nmgg7ljl502590c7n"))))
+ (build-system pyproject-build-system)
(native-inputs
- (list python-pytest))
+ (list python-pytest python-setuptools))
(home-page "https://github.com/python-hyper/hyperframe")
(synopsis "HTTP/2 framing layer for Python")
(description
@@ -2931,7 +3329,7 @@ into HTTP/2 frames.")
(define-public python-hpack
(package
(name "python-hpack")
- (version "4.0.0")
+ (version "4.1.0")
(source
(origin
;; PyPI tarball is missing some files necessary for the tests.
@@ -2941,18 +3339,10 @@ into HTTP/2 frames.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "11qdayvz5a8zlzdcdm37f2z1fgnl67pz6j8xj2dz5rfa5lds29yq"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "test")))))))
+ (base32 "1kgbx38p3a48iz914dqbx7av750a3s3x5kj3rvpcbh23ah75zg5x"))))
+ (build-system pyproject-build-system)
(native-inputs
- (list python-pytest))
+ (list python-pytest python-setuptools))
(home-page "https://hyper.rtfd.org")
(synopsis "Pure-Python HPACK header compression")
(description
@@ -2963,16 +3353,16 @@ for use in Python programs that implement HTTP/2.")
(define-public python-h11
(package
(name "python-h11")
- (version "0.14.0")
+ (version "0.16.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "h11" version))
(sha256
- (base32 "17b97c56y31hi0n0x0cb5a87x4xr9jijf2y06pzj0977k6zgn6cg"))))
+ (base32 "1wazxq4b4jg5001h5ypvz9pvrg80pagyd1aqm962wya5rxbbjdaf"))))
(build-system pyproject-build-system)
(native-inputs
- (list python-pytest python-setuptools python-wheel))
+ (list python-pytest python-setuptools))
(home-page "https://github.com/python-hyper/h11")
(synopsis "Pure-Python, bring-your-own-I/O implementation of HTTP/1.1")
(description
@@ -3176,18 +3566,23 @@ both of which are installed automatically if you install this library.")
(define-public python-flask-cors
(package
(name "python-flask-cors")
- (version "3.0.10")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Cors" version))
- (sha256
- (base32
- "1pl16615fn1pc5n0vdrqlxm45mqsdjjxqv3gfkrs111v7wwkj25n"))))
- (build-system python-build-system)
+ (version "6.0.1")
+ (source
+ (origin
+ (method git-fetch) ;no tests in PyPI archive
+ (uri (git-reference
+ (url "https://github.com/CoryDolphin/flask-cors")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "01w77vfbzw994dpz6aw4vzy75nrykk6jgilc3qm2d543vjizjaf9"))))
+ (build-system pyproject-build-system)
(native-inputs
- (list python-flask python-nose python-packaging))
+ (list python-pytest
+ python-setuptools))
(propagated-inputs
- (list python-six))
+ (list python-flask
+ python-werkzeug))
(home-page "https://flask-cors.readthedocs.io/en/latest/")
(synopsis "Handle Cross-Origin Resource Sharing with Flask")
(description
@@ -3275,25 +3670,25 @@ storage.")
(name "python-html5lib")
(version "1.1")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "html5lib" version))
- (sha256
- (base32
- "0vqlhk0hgbsfkh7ybmby93xhlx8dq6pr5blf356ka3z2c41b9rdj"))))
- (build-system python-build-system)
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "html5lib" version))
+ (sha256
+ (base32 "0vqlhk0hgbsfkh7ybmby93xhlx8dq6pr5blf356ka3z2c41b9rdj"))))
+ (build-system pyproject-build-system)
+ (arguments
+ '(#:tests? #f)) ;tests depent on dated pytest-expect
+ (native-inputs
+ (list python-setuptools))
(propagated-inputs
- (list python-six python-webencodings
+ (list python-six
+ python-webencodings
;; Required by Calibre 5.
python-chardet))
- (arguments
- `(#:test-target "check"))
- (home-page
- "https://github.com/html5lib/html5lib-python")
- (synopsis
- "Python HTML parser based on the WHATWG HTML specification")
+ (home-page "https://github.com/html5lib/html5lib-python")
+ (synopsis "Python HTML parser based on the WHATWG HTML specification")
(description
- "Html5lib is an HTML parser based on the WHATWG HTML specification
+ "Html5lib is an HTML parser based on the WHATWG HTML specification
and written in Python.")
(license license:expat)))
@@ -3308,6 +3703,14 @@ and written in Python.")
(base32
"195wgxls3df7djry9cz3p2k9644l6bfd66fczbaw55fsq0c48agr"))))
(build-system python-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'set-configure-flags
+ (lambda _
+ (setenv "CFLAGS"
+ "-Wno-error=implicit-function-declaration"))))))
(native-inputs
(list pkg-config))
(inputs
@@ -3335,6 +3738,8 @@ C, yielding parse times that can be a thirtieth of the html5lib parse times.")
(base32
"1acd1a4f66gi4plqnsml7cf33qp83mxsnmnqpdwkpj7597xkvyl4"))))
(build-system pyproject-build-system)
+ (arguments
+ (list #:tests? #f)) ;no tests in PyPI or Git
(native-inputs
(list python-setuptools python-setuptools-scm python-wheel))
(home-page "https://github.com/sanic-org/html5tagger")
@@ -3348,21 +3753,22 @@ be written directly in Python without templates.")
(package
(name "python-minio")
(version "7.1.9")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "minio" version))
- (sha256
- (base32
- "02nh865xbf2glxvcy70ir6gkcwqxl119zryfc70q7w0yjvkg64d7"))))
- (build-system python-build-system)
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/minio/minio-py")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "01734ki3p7844dya366hy1kvmmgy3xr0l0zbkchnnv4p611510vc"))))
+ (build-system pyproject-build-system)
(arguments
- '(#:phases (modify-phases %standard-phases
- (add-before 'check 'disable-failing-tests
- (lambda _
- ;; This test requires network access.
- (delete-file "tests/unit/credentials_test.py"))))))
- (native-inputs
- (list python-faker python-mock python-nose))
+ (list
+ #:test-flags
+ ;; XXX: requires network access.
+ #~(list "--ignore=tests/unit/credentials_test.py")))
+ (native-inputs (list python-pytest python-setuptools))
(propagated-inputs
(list python-certifi python-dateutil python-pytz python-urllib3))
(home-page "https://github.com/minio/minio-py")
@@ -3442,32 +3848,27 @@ high-speed transfers via libcurl and frequently outperforms alternatives.")
(define-public python-url-normalize
(package
(name "python-url-normalize")
- (version "1.4.3")
+ (version "2.2.1")
(source
(origin
(method git-fetch) ; no tests in PyPI release
(uri (git-reference
- (url "https://github.com/niksite/url-normalize")
- (commit version)))
+ (url "https://github.com/niksite/url-normalize")
+ (commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "09nac5nh94x0n4bfazjfxk96b20mfsx6r1fnvqv85gkzs0rwqkaq"))))
+ (base32 "1yhsf4sk6l6nznpnqigisbfz690a4g342dsk2n6dggh7q4l3amk4"))))
(build-system pyproject-build-system)
(arguments
(list
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'use-poetry-core
- (lambda _
- ;; Patch to use the core poetry API.
- (substitute* "pyproject.toml"
- (("poetry.masonry.api") "poetry.core.masonry.api")))))))
+ #:test-flags #~(list "--ignore=tests/test_cli.py")))
(native-inputs
- (list python-poetry-core
- python-pytest
- python-pytest-flakes
+ (list python-pytest
python-pytest-cov
- python-pytest-socket))
+ python-pytest-socket
+ python-setuptools))
+ (propagated-inputs
+ (list python-idna))
(home-page "https://github.com/niksite/url-normalize")
(synopsis "URL normalization for Python")
(description
@@ -3490,42 +3891,61 @@ desired
@end itemize")
(license license:expat)))
+(define-public python-waitress
+ (package
+ (name "python-waitress")
+ (version "3.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "waitress" version))
+ (sha256
+ (base32
+ "07y3xyx2006f2ni5d55byh3y7w4kcg9xww7vmfjasi0cmzralak8"))))
+ (build-system pyproject-build-system)
+ (arguments
+ ;; https://github.com/Pylons/waitress/issues/443
+ (list #:test-flags #~(list "-k" "not test_service_port")))
+ (native-inputs
+ (list python-coverage python-pytest python-pytest-cov
+ python-setuptools python-wheel))
+ (home-page "https://github.com/Pylons/waitress")
+ (synopsis "Waitress WSGI server")
+ (description
+ "Waitress is meant to be a production-quality pure-Python WSGI server
+with very acceptable performance.")
+ (license license:zpl2.1)))
+
(define-public python-webencodings
(package
(name "python-webencodings")
(version "0.5.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "webencodings" version))
- (sha256
- (base32
- "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk"))))
- (build-system python-build-system)
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "webencodings" version))
+ (sha256
+ (base32 "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk"))))
+ (build-system pyproject-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "py.test" "-v" "webencodings/tests.py")
- #t)))))
+ (list #:test-flags #~(list "webencodings/tests.py")))
(native-inputs
- (list python-pytest))
+ (list python-pytest python-setuptools))
(home-page "https://github.com/SimonSapin/python-webencodings")
(synopsis "Character encoding aliases for legacy web content")
(description
"In order to be compatible with legacy web content when interpreting
-something like @code{Content-Type: text/html; charset=latin1}, tools need
-to use a particular set of aliases for encoding labels as well as some
-overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
-the web are actually aliases for @code{windows-1252}, and a @code{UTF-8}
-or @code{UTF-16} BOM takes precedence over any other encoding declaration.
-The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
-defines all such details so that implementations do not have to
-reverse-engineer each other.
+something like @code{Content-Type: text/html; charset=latin1}, tools need to
+use a particular set of aliases for encoding labels as well as some overriding
+rules. For example, @code{US-ASCII} and @code{iso-8859-1} on the web are
+actually aliases for @code{windows-1252}, and a @code{UTF-8} or @code{UTF-16}
+BOM takes precedence over any other encoding declaration. The WHATWG
+@url{https://encoding.spec.whatwg.org/,Encoding} standard defines all such
+details so that implementations do not have to reverse-engineer each other.
-This module implements the Encoding standard and has encoding labels and
-BOM detection, but the actual implementation for encoders and decoders
-is Python’s.")
+This module implements the Encoding standard and has encoding labels and BOM
+detection, but the actual implementation for encoders and decoders is
+Python’s.")
(license license:bsd-3)))
(define-public python-omnipath
@@ -4033,6 +4453,73 @@ teams extension for python-openid.")
set out in RFC 7540 Section 5.3 (Stream Priority).")
(license license:expat)))
+(define-public python-weblate-language-data
+ (package
+ (name "python-weblate-language-data")
+ (version "2025.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "weblate_language_data" version))
+ (sha256
+ (base32 "0byj1xl6xldam790b6wg62dk1b4i6qdlsp4lqzlv65wnp2klvrkf"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:tests? #f)) ;not tests, just data files
+ (native-inputs
+ (list python-setuptools))
+ (propagated-inputs
+ (list python-translate-toolkit))
+ (home-page "https://github.com/WeblateOrg/language-data")
+ (synopsis "Language definitions for Weblate")
+ (description
+ "This package provides language definitions used by
+@url{https://weblate.org/, Weblate}i.")
+ (license license:expat)))
+
+;; XXX: See: <https://codeberg.org/guix/guix/issues/3321>.
+(define-public python-wget
+ (package
+ (name "python-wget")
+ (version "3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "wget" version ".zip"))
+ (sha256
+ (base32
+ "0qb0y7ipby42m4m7h0ipazpdyc3bn9xi46lvifcwwl5albn31rim"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:tests? #f)) ;no tests
+ (native-inputs (list python-setuptools unzip))
+ (home-page "https://bitbucket.org/techtonik/python-wget/")
+ (synopsis "Pure Python download utility")
+ (description "The python-wget library provides an API to download files
+with features similar to the @command{wget} utility.")
+ (license license:unlicense)))
+
+(define-public python-wikidata
+ (package
+ (name "python-wikidata")
+ (version "0.8.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dahlia/wikidata")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "06zg74h249phszn1znfcjdz6c3lz350fiabdzn7iqb2xg4xh69a5"))))
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list python-pytest python-setuptools))
+ (home-page "https://github.com/dahlia/wikidata")
+ (synopsis "Wikidata client library")
+ (description
+ "This package provides a Python interface to @url{https://www.wikidata.org/,
+Wikidata}.")
+ (license license:gpl3+)))
+
(define-public python-wsproto
(package
(name "python-wsproto")
@@ -4132,6 +4619,7 @@ data.")
(define-public python-tornado
(package
+ ;; TODO: Try to refresh and check all dependents.
(name "python-tornado")
(version "5.1.1")
(source
@@ -4141,7 +4629,7 @@ data.")
(sha256
(base32
"02clqk2116jbnq8lnaqmdw3p52nqrd9ib59r4xz2ll43fpcmhlaf"))))
- (build-system python-build-system)
+ (build-system pyproject-build-system)
(arguments
(list
#:phases
@@ -4171,7 +4659,8 @@ data.")
(invoke "python" "-m" "tornado.test.runtests"
"--verbose=yes")))))))
(native-inputs
- (list python-certifi))
+ (list python-certifi
+ python-setuptools))
(home-page "https://www.tornadoweb.org/")
(synopsis "Python web framework and asynchronous networking library")
(description
@@ -4233,33 +4722,6 @@ connection to each user.")
web framework, either via the basic or digest authentication schemes.")
(license license:asl2.0)))
-(define-public python-terminado
- (package
- (name "python-terminado")
- (version "0.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "terminado" version))
- (sha256
- (base32
- "1smvra3sc9sg64w49kfn5yhagshq3x55839748ck5dvxvk4hgza6"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-tornado-6 python-ptyprocess))
- (native-inputs
- (list python-pytest))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "pytest" "-vv"))))))
- (home-page "https://github.com/jupyter/terminado")
- (synopsis "Terminals served to term.js using Tornado websockets")
- (description "This package provides a Tornado websocket backend for the
-term.js Javascript terminal emulator library.")
- (license license:bsd-2)))
-
(define-public python-wsgi-intercept
(package
(name "python-wsgi-intercept")
@@ -4298,17 +4760,19 @@ your Web app.")
(define-public python-webob
(package
(name "python-webob")
- (version "1.8.6")
+ (version "1.8.9")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "WebOb" version))
+ (uri (pypi-uri "webob" version))
(sha256
(base32
- "026i3z99nr3px75isa9mbnky5i7rffiv4d124h5kxfjjsxz92fma"))))
- (build-system python-build-system)
+ "12b5sl10yzzzz3g11kij3rdzk9y6583ywggc6h9nsxmnxpi7hq5d"))))
+ (build-system pyproject-build-system)
+ ;; tests: 2380 passed, 9 skipped, 1 xfailed, 12 warnings
(native-inputs
- (list python-nose))
+ (list python-pytest
+ python-setuptools))
(home-page "https://webob.org/")
(synopsis "WSGI request and response object")
(description
@@ -4464,78 +4928,115 @@ supporting C extension) from both Python 3.2 and Python 3.3. The fork adds
support for the @code{noload} operations used by @code{zodb}.")
(license (list license:psfl license:zpl2.1))))
+(define-public python-zope-dottedname
+ (package
+ (name "python-zope-dottedname")
+ (version "7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.dottedname")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0h7a637zsl1a3f0rpb2nw41mzxv0pqyj8ahn6h60n2c1px912rbd"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list #:test-backend #~'custom
+ #:test-flags #~(list "src/zope/dottedname/tests.py")))
+ (native-inputs (list python-setuptools))
+ (home-page "https://zopedottedname.readthedocs.io")
+ (synopsis "Resolver for Python dotted names")
+ (description
+ "This package provides a @code{resolve()} function that resolves strings
+containing dotted names into the appropriate Python object.")
+ (license license:zpl2.1)))
+
(define-public python-zope-event
(package
(name "python-zope-event")
- (version "4.4")
+ (version "6.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.event" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.event")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1ksbc726av9xacml6jhcfyn828hlhb9xlddpx6fcvnlvmpmpvhk9"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/zope.event/")
+ (base32 "0la3q47c59aq50s036q468bhnmzgs71f1cygv89w6qkk1hkn35ym"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ #~(list "src/zope/event/tests.py")))
+ (native-inputs (list python-pytest python-setuptools))
+ (home-page "https://zopeevent.readthedocs.io/en/latest/")
(synopsis "Event publishing system for Python")
- (description "Zope.event provides an event publishing API, intended for
-use by applications which are unaware of any subscribers to their events. It
-is a simple event-dispatching system on which more sophisticated event
-dispatching systems can be built.")
+ (description
+ "Zope.event provides an event publishing API, intended for use by
+applications which are unaware of any subscribers to their events. It is a
+simple event-dispatching system on which more sophisticated event dispatching
+systems can be built.")
(license license:zpl2.1)))
(define-public python-zope-interface
(package
(name "python-zope-interface")
- (version "5.1.0")
+ (version "7.2")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.interface" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.interface")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "03nrl6b8cb600dnnh46y149awvrm0gxyqgwq5hdw3lvys8mw9r20"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; test suite can't find python-zope-testing
- (native-inputs
- (list python-coverage python-nose python-zope-event
- python-zope-testing))
- (home-page "https://github.com/zopefoundation/zope.interface")
- (synopsis "Python implementation of the \"design by contract\"
-methodology")
- (description "Zope.interface provides an implementation of \"object
-interfaces\" for Python. Interfaces are a mechanism for labeling objects as
-conforming to a given API or contract.")
+ (base32 "01snm1lbqhx3ird4m76nciaqasxvf8dd6817zm35v684g5hbzd2s"))))
+ (build-system pyproject-build-system)
+ (arguments
+ ;; XXX: test suite can't find python-zope-testing
+ (list #:tests? #f))
+ (native-inputs (list python-setuptools))
+ (home-page "https://zopeinterface.readthedocs.io")
+ (synopsis "\"Design by contract\" methodology in Python")
+ (description
+ "Zope.interface provides an implementation of \"object interfaces\" for
+Python. Interfaces are a mechanism for labeling objects as conforming to a
+given API or contract.")
(license license:zpl2.1)))
(define-public python-zope-exceptions
(package
(name "python-zope-exceptions")
- (version "4.6")
+ (version "6.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.exceptions" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.exceptions")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1kc3hql2i35ys5alkj9csiaz2s9bx0rff585vnrrgvavqsj297b1"))))
- (build-system python-build-system)
+ (base32 "0fmsw2j8islaiv6zf2mxh2s43y7virqny6s8gk8v2zkcxpy95cic"))))
+ (build-system pyproject-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "zope-testrunner" "--test-path=src")
- (format #t "test suite not run~%")))))))
- (native-inputs
- `(("python-zope-testrunner" ,python-zope-testrunner-bootstrap)))
- (propagated-inputs
- (list python-zope-interface))
- (home-page "https://pypi.org/project/zope.exceptions/")
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs (list python-setuptools python-zope-testrunner-bootstrap))
+ (propagated-inputs (list python-zope-interface))
+ (home-page "https://github.com/zopefoundation/zope.exceptions")
(synopsis "Zope exceptions")
- (description "Zope.exceptions provides general-purpose exception types
-that have uses outside of the Zope framework.")
+ (description
+ "Zope.exceptions provides general-purpose exception types that have uses
+outside of the Zope framework.")
(license license:zpl2.1)))
(define (python-zope-bootstrap-package orig)
@@ -4544,16 +5045,17 @@ that have uses outside of the Zope framework.")
(name (string-append (package-name orig) "-bootstrap"))
(arguments
(if (null? (package-arguments orig))
- `(#:tests? #f
- #:phases (modify-phases %standard-phases
- (delete 'sanity-check)))
+ (list
+ #:tests? #f
+ #:phases #~(modify-phases %standard-phases
+ (delete 'sanity-check)))
(substitute-keyword-arguments (package-arguments orig)
((#:tests? _ #f) #f)
((#:phases phases '%standard-phases)
- `(modify-phases ,phases
- (delete 'sanity-check))))))
+ #~(modify-phases #$phases
+ (delete 'sanity-check))))))
(propagated-inputs `())
- (native-inputs `())
+ (native-inputs (list python-setuptools))
(properties `((hidden? . #t)))))
(define-public python-zope-exceptions-bootstrap
@@ -4562,17 +5064,29 @@ that have uses outside of the Zope framework.")
(define-public python-zope-testing
(package
(name "python-zope-testing")
- (version "5.0.1")
+ (version "6.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.testing" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.testing")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32 "0jfnycp9kzmmkk0rard8chd81v5yp6vnm09ky7d3qmv6svcd0z78"))))
+ (base32 "0zqipsgv7qj7f8hrd3x6xpqwszdiac8vpjdm8ak5kljl5napw7d7"))))
(build-system pyproject-build-system)
- (native-inputs
- (list python-setuptools
- python-wheel))
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs (list python-setuptools
+ python-zope-interface
+ python-zope-testrunner-bootstrap))
(home-page "https://zopetesting.readthedocs.io/")
(synopsis "Zope testing helpers")
(description
@@ -4583,60 +5097,71 @@ servers, regular expressions, and more.")
(define-public python-zope-testrunner
(package
(name "python-zope-testrunner")
- (version "5.2")
+ (version "7.4")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.testrunner" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.testrunner")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "0jyyf1dcz156q95x2y7yw2v420q2xn3cff0c5aci7hmdmcbn0gc7"))))
- (build-system python-build-system)
+ (base32 "0gd5rnzw6vzbx766jxqr4zc6qx7gk75r2c0nqqvhkb12hzk5ca2g"))))
+ (build-system pyproject-build-system)
(arguments
- '(#:tests? #f ;FIXME: Tests can't find zope.interface.
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-problematic-test
- (lambda _
- ;; This test contains invalid syntax, which breaks bytecode
- ;; compilation. For simplicity just remove it.
- (delete-file
- "src/zope/testrunner/tests/testrunner-ex/sample2/badsyntax.py"))))))
- (native-inputs
- (list python-zope-testing))
- (propagated-inputs
- (list python-six python-zope-exceptions python-zope-interface))
- (home-page "https://pypi.org/project/zope.testrunner/")
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'remove-problematic-test
+ (lambda _
+ ;; This test contains invalid syntax, which breaks bytecode
+ ;; compilation. For simplicity just remove it.
+ (delete-file
+ "src/zope/testrunner/tests/testrunner-ex/sample2/badsyntax.py")))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs (list python-setuptools python-zope-testing))
+ (propagated-inputs (list python-zope-exceptions python-zope-interface))
+ (home-page "https://zopetestrunner.readthedocs.io")
(synopsis "Zope testrunner script")
- (description "Zope.testrunner provides a script for running Python
-tests.")
+ (description "This package provides a script for running Python tests.")
(license license:zpl2.1)))
(define-public python-zope-testrunner-bootstrap
(package
(inherit (python-zope-bootstrap-package python-zope-testrunner))
(propagated-inputs
- `(("python-six" ,python-six)
- ("python-zope-exceptions" ,python-zope-exceptions-bootstrap)))
+ (list python-six python-zope-exceptions-bootstrap))
(properties `((hidden? . #t)))))
(define-public python-zope-i18nmessageid
(package
(name "python-zope-i18nmessageid")
- (version "5.1.1")
+ (version "7.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.i18nmessageid" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.i18nmessageid")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32 "14mx62khys82p2gmmf3m40x4jmvcz3rndvl6qik2n2qfp13n7ds7"))))
+ (base32 "192ixj8r9n467avbxrmhakmqiaflc1vw37k08z096ajcjgbfrm5d"))))
(build-system pyproject-build-system)
- (native-inputs
- (list python-coverage python-setuptools
- python-wheel python-zope-testrunner))
- (propagated-inputs
- (list python-six))
- (home-page "https://pypi.org/project/zope.i18nmessageid/")
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs (list python-setuptools python-zope-testrunner))
+ (home-page "https://zopei18nmessageid.readthedocs.io")
(synopsis "Message identifiers for internationalization")
(description "Zope.i18nmessageid provides facilities for declaring
internationalized messages within program source text.")
@@ -4648,27 +5173,28 @@ internationalized messages within program source text.")
(version "7.0.1")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.schema" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.schema")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1fgvx7nim9plxnyiq6vmah1dji7ba5290fws1i0lwk9m0g5xpm7a"))))
- (build-system python-build-system)
+ (base32 "1hj6j0gqgvv9a5pyaz54wbn8n7wf9lyg4njb2cfs980z0d5faj39"))))
+ (build-system pyproject-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (if tests?
- (invoke "zope-testrunner" "--test-path=src")
- #t))))))
- (propagated-inputs
- (list python-zope-event python-zope-interface))
- (native-inputs
- (list python-zope-i18nmessageid python-zope-testing
- python-zope-testrunner))
- (home-page "https://pypi.org/project/zope.schema/")
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run.~%")))))))
+ (propagated-inputs (list python-zope-event python-zope-interface))
+ (native-inputs (list python-zope-i18nmessageid python-zope-testing
+ python-zope-testrunner python-setuptools))
+ (home-page "https://zopeschema.readthedocs.io")
(synopsis "Zope data schemas")
(description "Zope.scheme provides extensions to zope.interface for
defining data schemas.")
@@ -4678,43 +5204,66 @@ defining data schemas.")
(package
(name "python-zope-sqlalchemy")
(version "1.6")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "zope.sqlalchemy" version))
- (sha256
- (base32
- "1azm2awl2ra10xl6wps3yvy14jk2rpzvsyfsb9cncm97aydbwlww"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-sqlalchemy
- python-transaction
- python-zope-interface))
- (native-inputs (list python-zope-testing))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.sqlalchemy")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1z4gw4i95dyqxsvrahk4fav008045n8kyxpn3fa887snmpvcjhng"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (propagated-inputs (list python-sqlalchemy python-transaction
+ python-zope-interface))
+ (native-inputs (list python-zope-testing python-zope-testrunner
+ python-setuptools))
(home-page "https://github.com/zopefoundation/zope.sqlalchemy")
(synopsis "Minimal SQLAlchemy transaction integration for Zope")
- (description "The aim of this package is to unify the plethora of existing
-packages integrating SQLAlchemy with Zope's transaction management. As such,
-it only provides a data manager and makes no attempt to define a @i{zopeish}
-way to configure engines.")
+ (description
+ "The aim of this package is to unify the plethora of existing packages
+integrating SQLAlchemy with Zope's transaction management. As such,it only
+provides a data manager and makes no attempt to define a @i{zopeish} way to
+configure engines.")
(license license:zpl2.1)))
(define-public python-zope-configuration
(package
(name "python-zope-configuration")
- (version "4.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "zope.configuration" version))
- (sha256
- (base32
- "0g6vrl7y27z9cj5xyrww9xlzk4npj55mgmlrcd9d2nj08jn2pw79"))))
- (build-system python-build-system)
- (native-inputs
- (list python-manuel python-zope-testing python-zope-testrunner))
- (propagated-inputs
- (list python-zope-i18nmessageid python-zope-interface
- python-zope-schema))
- (home-page "https://pypi.org/project/zope.configuration/")
+ (version "7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.configuration")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "11lr6z3jpz9835a1if89g3x7k31sviq2d0xvvic5xi4c980dbkhv"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs (list python-manuel python-setuptools python-zope-testing
+ python-zope-testrunner))
+ (propagated-inputs (list python-zope-i18nmessageid python-zope-interface
+ python-zope-schema))
+ (home-page "https://zopeconfiguration.readthedocs.io")
(synopsis "Zope Configuration Markup Language")
(description "Zope.configuration implements ZCML, the Zope Configuration
Markup Language.")
@@ -4726,29 +5275,37 @@ Markup Language.")
(define-public python-zope-copy
(package
(name "python-zope-copy")
- (version "4.2")
+ (version "6.0")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.copy" version))
- (sha256
- (base32
- "06m75434krl57n6p73c2qj55k5i3fixg887j8ss01ih6zw4rvfs7"))))
- (build-system python-build-system)
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.copy")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1ym82p9scpfi3rflxnlv55v0a7hra3rq4rrlw759maq05i8qp1w5"))))
+ (build-system pyproject-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "zope-testrunner" "--test-path=src" "\\[]"))))))
- (propagated-inputs
- (list python-zope-interface))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (propagated-inputs (list python-zope-interface))
(native-inputs
- `(("python-zope-component" ,python-zope-component-bootstrap)
- ("python-zope-location" ,python-zope-location-bootstrap)
- ("python-zope-testing" ,python-zope-testing)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (home-page "https://github.com/zopefoundation/zope.copy")
+ (list python-zodbpickle
+ python-zope-component-bootstrap
+ python-zope-location-bootstrap
+ python-zope-proxy
+ python-zope-schema
+ python-zope-testing
+ python-zope-testrunner
+ python-setuptools))
+ (home-page "https://zopecopy.readthedocs.io")
(synopsis "Pluggable object copying mechanism")
(description
"This package provides a pluggable mechanism for copying persistent objects.")
@@ -4757,26 +5314,40 @@ Markup Language.")
(define-public python-zope-proxy
(package
(name "python-zope-proxy")
- (version "4.3.5")
+ (version "7.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.proxy" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.proxy")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "14h7nyfbl5vpfk0rbviy4ygdfx0yx5kncvg6jpbdb0dhwna0ssm6"))))
- (build-system python-build-system)
+ (base32 "00r9f4n0cl3fyc5gyf5l43zh95cmzx1gz6wr04k17d7wm2gmivyn"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
(native-inputs
- (list python-zope-security-bootstrap python-zope-testrunner))
- (propagated-inputs
- (list python-zope-interface))
- (home-page "https://pypi.org/project/zope.proxy/")
+ (list python-zope-location-bootstrap
+ python-zope-security-bootstrap
+ python-zope-testrunner
+ python-setuptools))
+ (propagated-inputs (list python-zope-interface))
+ (home-page "https://zopeproxy.readthedocs.io")
(synopsis "Generic, transparent proxies")
- (description "Zope.proxy provides generic, transparent proxies for Python.
-Proxies are special objects which serve as mostly-transparent wrappers around
-another object, intervening in the apparent behavior of the wrapped object
-only when necessary to apply the policy (e.g., access checking, location
-brokering, etc.) for which the proxy is responsible.")
+ (description
+ "Zope.proxy provides generic, transparent proxies for Python. Proxies are
+special objects which serve as mostly-transparent wrappers around another
+object, intervening in the apparent behavior of the wrapped object only when
+necessary to apply the policy (e.g., access checking, location brokering,
+etc.) for which the proxy is responsible.")
(license license:zpl2.1)))
(define-public python-zope-proxy-bootstrap
@@ -4785,49 +5356,70 @@ brokering, etc.) for which the proxy is responsible.")
(define-public python-zope-hookable
(package
(name "python-zope-hookable")
- (version "5.0.1")
+ (version "7.0")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.hookable" version))
- (sha256
- (base32
- "0hc82lfr7bk53nvbxvjkibkarngyrzgfk2i6bg8wshl0ly0pdl19"))))
- (build-system python-build-system)
- (native-inputs
- (list python-coverage python-zope-testing))
- (home-page "https://github.com/zopefoundation/zope.hookable")
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.hookable")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1l94xzzpyslpgv2ghvl5qzpfcsq02kp04fmvl95d6jcmivmmr4m8"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs (list python-zope-testing python-zope-testrunner
+ python-setuptools))
+ (home-page "https://zopehookable.readthedocs.io")
(synopsis "Zope hookable")
- (description "This package supports the efficient creation of hookable
-objects, which are callable objects that are meant to be optionally replaced.
-The idea is that you create a function that does some default thing and make i
-hookable. Later, someone can modify what it does by calling its sethook method
-and changing its implementation. All users of the function, including those
-that imported it, will see the change.")
+ (description
+ "This package supports the efficient creation of hookable objects, which
+are callable objects that are meant to be optionally replaced. The idea is
+that you create a function that does some default thing and make i hookable.
+Later, someone can modify what it does by calling its sethook method and
+changing its implementation. All users of the function, including those that
+imported it, will see the change.")
(license license:zpl2.1)))
(define-public python-zope-location
(package
(name "python-zope-location")
- (version "4.2")
+ (version "6.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.location" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.location")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1b40pzl8v00d583d3gsxv1qjdw2dhghlgkbgxl3m07d5r3izj857"))))
- (build-system python-build-system)
+ (base32 "1jfsmbxj6hz7kmk5b0351b63ssm7qfkgqmz9v7xb7wwlmxsxkcdk"))))
+ (build-system pyproject-build-system)
(arguments
- '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
- (native-inputs
- (list python-zope-testrunner))
- (propagated-inputs
- (list python-zope-interface python-zope-proxy python-zope-schema))
- (home-page "https://pypi.org/project/zope.location/")
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs (list python-zope-testrunner python-setuptools))
+ (propagated-inputs (list python-zope-interface python-zope-proxy
+ python-zope-schema))
+ (home-page "https://zopelocation.readthedocs.io")
(synopsis "Zope location library")
- (description "Zope.location implements the concept of \"locations\" in
-Zope3, which are are special objects that have a structural location.")
+ (description
+ "Zope.location implements the concept of \"locations\" in Zope3, which
+are are special objects that have a structural location.")
(license license:zpl2.1)))
(define-public python-zope-location-bootstrap
@@ -4836,15 +5428,26 @@ Zope3, which are are special objects that have a structural location.")
(define-public python-zope-security
(package
(name "python-zope-security")
- (version "5.1.1")
+ (version "7.3")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.security" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.security")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "11lfw67cigscfax9c5j63xcvz2qcj724zx5fcdqyc94am2glim0h"))))
- (build-system python-build-system)
+ (base32 "06x6qcls2mdl05xnsyy5h70mbgij8xb6ksxbawzrc23cq04nkvx7"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
(propagated-inputs
(list python-zope-component
python-zope-i18nmessageid
@@ -4858,8 +5461,9 @@ Zope3, which are are special objects that have a structural location.")
python-zope-configuration-bootstrap
python-zope-location-bootstrap
python-zope-testing
- python-zope-testrunner))
- (home-page "https://pypi.org/project/zope.security/")
+ python-zope-testrunner
+ python-setuptools))
+ (home-page "https://zopesecurity.readthedocs.io")
(synopsis "Zope security framework")
(description "Zope.security provides a generic mechanism to implement
security policies on Python objects.")
@@ -4869,48 +5473,53 @@ security policies on Python objects.")
(package
(inherit (python-zope-bootstrap-package python-zope-security))
(propagated-inputs
- `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
- ("python-zope-interface" ,python-zope-interface)
- ("python-zope-proxy" ,python-zope-proxy-bootstrap)
- ("python-zope-schema" ,python-zope-schema)))))
+ (list python-zope-i18nmessageid
+ python-zope-interface
+ python-zope-proxy-bootstrap
+ python-zope-schema))))
(define-public python-zope-component
(package
(name "python-zope-component")
- (version "4.6.2")
+ (version "7.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "zope.component" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.component")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "14iwp95hh6q5dj4k9h1iw75cbp89bs27nany4dinyglb44c8jqli"))))
- (build-system python-build-system)
+ (base32 "1jygzhcg9rppsrd8cwvm0944naq1ldjf0vcpgsz0glwcdnr7cyfw"))))
+ (build-system pyproject-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "python" "setup.py" "test")
- (format #t "test suite not run~%")))))))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
(native-inputs
- `(("python-persistent" ,python-persistent)
- ("python-zope-configuration" ,python-zope-configuration-bootstrap)
- ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
- ("python-zope-location" ,python-zope-location-bootstrap)
- ("python-zope-proxy" ,python-zope-proxy-bootstrap)
- ("python-zope-security" ,python-zope-security-bootstrap)
- ("python-zope-testing" ,python-zope-testing)
- ("python-zope-testrunner" ,python-zope-testrunner)))
+ (list python-persistent
+ python-zope-configuration-bootstrap
+ python-zope-i18nmessageid
+ python-zope-location-bootstrap
+ python-zope-proxy-bootstrap
+ python-zope-security-bootstrap
+ python-zope-testing
+ python-zope-testrunner
+ python-setuptools))
(propagated-inputs
(list python-zope-deferredimport python-zope-deprecation
python-zope-event python-zope-hookable python-zope-interface))
- (home-page "https://github.com/zopefoundation/zope.component")
+ (home-page "https://zopecomponent.readthedocs.io")
(synopsis "Zope Component Architecture")
- (description "Zope.component represents the core of the Zope Component
-Architecture. Together with the zope.interface package, it provides
-facilities for defining, registering and looking up components.")
+ (description
+ "Zope.component represents the core of the Zope Component Architecture.
+Together with the zope.interface package, it provides facilities for defining,
+registering and looking up components.")
(license license:zpl2.1)))
(define-public python-zope-component-bootstrap
@@ -4919,20 +5528,29 @@ facilities for defining, registering and looking up components.")
(define-public python-zope-deferredimport
(package
(name "python-zope-deferredimport")
- (version "4.3.1")
+ (version "6.0")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.deferredimport" version))
- (sha256
- (base32
- "1q89v54dwniiqypjbwywwdfjdr4kdkqlyqsgrpplgvsygdg39cjp"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-zope-proxy))
- (native-inputs
- (list python-zope-testrunner))
- (home-page "https://github.com/zopefoundation/zope.deferredimport")
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/zope.deferredimport")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "08j728nn1la570nny1xz1xvxcm9hf2mcc3im1bzcxxrrxh4kw3zd"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (propagated-inputs (list python-zope-proxy))
+ (native-inputs (list python-zope-testrunner python-setuptools))
+ (home-page "https://zopedeferredimport.readthedocs.io")
(synopsis "Defer imports until used by code")
(description
"Often, especially for package modules, you want to import names for
@@ -4998,30 +5616,35 @@ and MAC network addresses.")
(uri (pypi-uri "nh3" version))
(sha256
(base32 "1mcf3y5294glji9lhzh57wymw4srbvzdg0kcakm0p2pqgwnw81cp"))))
- (build-system cargo-build-system)
+ (build-system pyproject-build-system)
(arguments
(list
#:imported-modules `(,@%cargo-build-system-modules
,@%pyproject-build-system-modules)
- #:modules '((guix build cargo-build-system)
- ((guix build pyproject-build-system) #:prefix py:)
+ #:modules '(((guix build cargo-build-system) #:prefix cargo:)
+ (guix build pyproject-build-system)
(guix build utils))
#:phases
#~(modify-phases %standard-phases
- (replace 'build (assoc-ref py:%standard-phases 'build))
- (replace 'install (assoc-ref py:%standard-phases 'install))
- ;; cargo-build-system's %standard-phases has 'check before 'install.
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (py:add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "tests")))))
- #:cargo-inputs
- `(("rust-ammonia" ,rust-ammonia-4)
- ("rust-pyo3" ,rust-pyo3-0.23))
- #:install-source? #false))
- (native-inputs (list maturin python-pytest python-wrapper))
+ (add-after 'unpack 'prepare-cargo-build-system
+ (lambda args
+ (for-each
+ (lambda (phase)
+ (format #t "Running cargo phase: ~a~%" phase)
+ (apply (assoc-ref cargo:%standard-phases phase)
+ #:cargo-target #$(cargo-triplet)
+ args))
+ '(unpack-rust-crates
+ configure
+ check-for-pregenerated-files
+ patch-cargo-checksums)))))))
+ (native-inputs
+ (append
+ (list maturin python-pytest rust `(,rust "cargo"))
+ (or (and=> (%current-target-system)
+ (compose list make-rust-sysroot))
+ '())))
+ (inputs (cargo-inputs 'python-nh3))
(home-page "https://nh3.readthedocs.io")
(synopsis "Python bindings to Ammonia HTML sanitization library")
(description "This package provides Python bindings to Ammonia HTML
@@ -5034,19 +5657,44 @@ sanitizer Rust crate.")
(version "0.3.1")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "noiseprotocol" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/plizonczyk/noiseprotocol")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32 "0ifnj0mpbqsfqba9n12vf5yzxj4qf2gxql3ry43qyshgnrqsi4mh"))))
+ (base32 "1mk0rqpjifdv3v1cjwkdnjbrfmzzjm9f3qqs1r8vii4j2wvhm6am"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-cryptography))
- (native-inputs (list python-setuptools python-wheel))
+ (native-inputs (list python-setuptools python-pytest))
(home-page "https://github.com/plizonczyk/noiseprotocol")
(synopsis "Implementation of Noise Protocol Framework")
(description
"This package provides an implementation of Noise Protocol Framework.")
(license license:expat)))
+(define-public python-webrtcvad-wheels
+ (package
+ (name "python-webrtcvad-wheels")
+ (version "2.0.14")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/daanzu/py-webrtcvad-wheels")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0sqgg8jmg2j14f4h96h0rs42kr460v65lhanps6lhdvj5zp81cbh"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-psutil python-pytest python-setuptools))
+ (home-page "https://github.com/daanzu/py-webrtcvad-wheels")
+ (synopsis "Python interface to the WebRTC Voice Activity Detector (VAD)")
+ (description
+ "This package provides a Python interface to the Google
+@url{https://webrtc.org/, WebRTC} @acronym{VAD, Voice Activity Detector}.")
+ (license license:expat)))
+
(define-public python-websocket-client
(package
(name "python-websocket-client")
@@ -5084,7 +5732,10 @@ WebSocket usage in Python programs.")
(method url-fetch)
(uri (pypi-uri "websocket-client" version))
(sha256
- (base32 "0p0cz2mdissq7iw1n7jrmsfir0jfmgs1dvnpnrx477ffx9hbsxnk"))))))
+ (base32 "0p0cz2mdissq7iw1n7jrmsfir0jfmgs1dvnpnrx477ffx9hbsxnk"))))
+ (native-inputs
+ (modify-inputs (package-native-inputs python-websocket-client)
+ (append python-six)))))
(define-public python-purl
(package
@@ -5139,16 +5790,19 @@ APIs.")
(version "0.7.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "beren" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/teffalump/beren")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32 "1v3mdwfqsyza892zvs124ym9w1bkng1j56b7l4dwfjir3723xcgf"))))
- (build-system python-build-system)
+ (base32 "19nnvbjx2wypslqklqi0j9fiwypk1a5qwfw1jcabjw03awm1yyrx"))))
+ (build-system pyproject-build-system)
(arguments
;; The test tries to open a connection to a remote server.
`(#:tests? #f))
- (propagated-inputs
- (list python-apiron))
+ (native-inputs (list python-setuptools))
+ (propagated-inputs (list python-apiron))
(home-page "https://github.com/teffalump/beren")
(synopsis "REST client for Orthanc DICOM servers")
(description
@@ -5158,13 +5812,13 @@ APIs.")
(define-public python-requests
(package
(name "python-requests")
- (version "2.31.0")
+ (version "2.32.5")
(source (origin
(method url-fetch)
(uri (pypi-uri "requests" version))
(sha256
(base32
- "1qfidaynsrci4wymrw3srz8v1zy7xxpcna8sxpm91mwqixsmlb4l"))))
+ "1kypqz701x9s7j4shm1pdnzy4pzx9lmvhwgan0yqa071asn0pfnv"))))
(build-system pyproject-build-system)
(arguments
(list #:test-flags
@@ -5181,11 +5835,9 @@ APIs.")
python-idna
python-urllib3))
(native-inputs
- (list python-pip
- python-pytest
+ (list python-pytest
python-pytest-mock
- python-setuptools
- python-wheel))
+ python-setuptools))
(home-page "https://requests.readthedocs.io/")
(synopsis "Python HTTP library")
(description
@@ -5193,20 +5845,8 @@ APIs.")
than Python’s urllib2 library.")
(license license:asl2.0)))
-(define-public python-requests-next
- (package
- (inherit python-requests)
- (name "python-requests")
- (version "2.32.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "requests" version))
- (sha256
- (base32 "0q5742pnibwy74169kacin3dmqg9jzmzk7qab5aq5caffcbm8djm"))))
- (native-inputs
- (modify-inputs (package-native-inputs python-requests)
- (prepend nss-certs-for-test)))))
+(define-deprecated/public-alias python-requests-next
+ python-requests) ;may be removed after 2025-12-01
(define-public python-requests-kerberos
(package
@@ -5237,7 +5877,7 @@ python-requests.")
(define-public python-requests-unixsocket2
(package
(name "python-requests-unixsocket2")
- (version "0.4.2")
+ (version "1.0.1")
(source
(origin
(method git-fetch)
@@ -5245,12 +5885,16 @@ python-requests.")
(url "https://gitlab.com/thelabnyc/requests-unixsocket2")
(commit (string-append "v" version))))
(sha256
- (base32 "0vy0c1xwwmm6xqabhl2j7zqgsldvcs8ar547nk5r9l2yb7gngzjk"))))
+ (base32 "0wb8ckagal9d6lfyl3pf9m45xn1krq6vg8kzciwv12chq9wwh0ra"))))
(build-system pyproject-build-system)
(native-inputs
- (list python-poetry-core python-pytest python-waitress))
+ (list nss-certs-for-test
+ python-hatchling
+ python-pytest
+ python-waitress))
(propagated-inputs
- (list python-pbr python-requests))
+ (list python-requests
+ python-urllib3))
(home-page "https://gitlab.com/thelabnyc/requests-unixsocket2")
(synopsis "Talk HTTP via a UNIX domain socket")
(description
@@ -5286,27 +5930,23 @@ library.")
(define-public python-requests-mock
(package
(name "python-requests-mock")
- (version "1.8.0")
+ (version "1.12.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "requests-mock" version))
(sha256
- (base32
- "09nj8fmyj7xz2mgwyvbw0fl9zybmx2d3qd2hf529vvjc9s24d3z6"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-requests python-six))
+ (base32 "008l6xysgs6ax56lairg1li5i4bb04i2z19w5bl5claj7crjxqg9"))))
+ (build-system pyproject-build-system)
(native-inputs
- (list python-pbr
- python-discover
- python-docutils
- python-fixtures
- python-mock
- python-purl
+ (list python-purl
python-pytest
- python-sphinx
- python-testrepository))
+ python-requests-futures
+ python-setuptools
+ python-setuptools-scm
+ python-testtools))
+ (propagated-inputs
+ (list python-requests))
(home-page "https://requests-mock.readthedocs.org/")
(synopsis "Mock out responses from the requests package")
(description
@@ -5410,24 +6050,34 @@ protocol, both client and server for Python asyncio module.
(license license:asl2.0)))
(define-public python-mohawk
- (package
- (name "python-mohawk")
- (version "1.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "mohawk" version))
- (sha256
- (base32
- "08wppsv65yd0gdxy5zwq37yp6jmxakfz4a2yx5wwq2d222my786j"))))
- (build-system python-build-system)
- (native-inputs (list python-mock python-nose))
- (propagated-inputs (list python-six))
- (home-page "https://github.com/kumar303/mohawk")
- (synopsis "Library for Hawk HTTP authorization")
- (description
- "Mohawk is an alternate Python implementation of the Hawk HTTP
+ (let ((commit "b7899166880e890f01cf2531b5686094ba08df8f")
+ (revision "0"))
+ (package
+ (name "python-mohawk")
+ (version (git-version "1.1.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kumar303/mohawk")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "00y9fimcj851rk2770wqk61fac9pnxfnzca4fvsci57zw18i50m6"))
+ (patches
+ (search-patches "python-mohawk-pytest.patch"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list #:test-flags #~(list "mohawk/tests.py")))
+ (native-inputs (list python-pytest python-setuptools))
+ (propagated-inputs (list python-six)) ;TODO: remove python-mohawk when
+ ;python-six is removed?
+ (home-page "https://github.com/kumar303/mohawk")
+ (synopsis "Library for Hawk HTTP authorization")
+ (description
+ "Mohawk is an alternate Python implementation of the Hawk HTTP
authorization scheme.")
- (license license:bsd-3)))
+ (license license:bsd-3))))
(define-public python-msal
(package
@@ -5583,17 +6233,20 @@ addon for removing tracking fields from URLs.")
(define-public python-urllib3
(package
(name "python-urllib3")
- (version "2.2.1")
+ (version "2.5.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "urllib3" version))
(sha256
(base32
- "06fg8jj64lgxr2jrizzrsdvaf1avpg5qmhvnswhfbf8sqrv0hmyh"))))
+ "0q17z6zlpyjv9ax5c3d30qwp9fwhz2sc4gbb7yyd86g4qwrpgi1z"))))
(build-system pyproject-build-system)
(arguments `(#:tests? #f))
- (native-inputs (list python-hatchling))
+ (native-inputs
+ (list python-hatch-vcs
+ python-hatchling
+ python-setuptools-scm))
(propagated-inputs
(append
;; These 5 inputs are used to build urrlib3[secure]
@@ -5616,20 +6269,8 @@ can reuse the same socket connection for multiple requests, it can POST files,
supports url redirection and retries, and also gzip and deflate decoding.")
(license license:expat)))
-(define-public python-urllib3-next
- (package
- (inherit python-urllib3)
- (version "2.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "urllib3" version))
- (sha256
- (base32
- "0k90y2bbmw87b9wx7lf0ps0wjpjbnk3h61byrrwid1ph7jdl9igq"))))
- (native-inputs
- (list python-hatchling
- python-hatch-vcs))))
+(define-deprecated/public-alias python-urllib3-next
+ python-urllib3) ;may be removed after 2025-12-01
(define-public python-urllib3-1.25
(package
@@ -5664,16 +6305,18 @@ supports url redirection and retries, and also gzip and deflate decoding.")
(define-public python-awscrt
(package
(name "python-awscrt")
- (version "0.23.0")
+ (version "0.26.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "awscrt" version))
(sha256
- (base32 "0a669xxfmgw3g6xpcnm64pbmlrbxw5wf3jcrivixscl2glapdxgx"))))
+ (base32 "0plkc0i0gc6z8fqnyy8kbg43sv3jnv8shcavcz0wb134riykmmm8"))))
(build-system pyproject-build-system)
(arguments
(list
+ #:test-backend #~'unittest
+ #:test-flags #~(list "discover" "--verbose")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'disable-broken-tests
@@ -5716,19 +6359,12 @@ opt.override_default_trust_store_from_path(None, os.getenv('SSL_CERT_FILE')) if
bundle "')\n"))))))
(add-after 'unpack 'use-system-libraries
(lambda _
- (setenv "AWS_CRT_BUILD_USE_SYSTEM_LIBCRYPTO" "1")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python3" "-m" "unittest"
- "discover" "--verbose")))))))
+ (setenv "AWS_CRT_BUILD_USE_SYSTEM_LIBCRYPTO" "1"))))))
(inputs (list openssl))
(native-inputs (list cmake-minimal
- python-setuptools
- python-wheel
- ;; For tests only
nss-certs-for-test
python-boto3
+ python-setuptools
python-websockets))
(home-page "https://github.com/awslabs/aws-crt-python")
(synopsis "Common runtime for AWS Python projects")
@@ -5736,17 +6372,6 @@ opt.override_default_trust_store_from_path(None, os.getenv('SSL_CERT_FILE')) if
"This package provides a common runtime for AWS Python projects.")
(license license:asl2.0)))
-(define-public python-awscrt-for-awscli
- (package
- (inherit python-awscrt)
- (version "0.22.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "awscrt" version))
- (sha256
- (base32 "0w6pw42jbznrxh92cd97p96dg2nz698mcbfy7md3zw18jfsb18jc"))))))
-
(define-public awscli
(package
;; Note: updating awscli typically requires updating botocore as well.
@@ -5817,8 +6442,11 @@ Services (AWS) API.")
(define-public awscli-2
(package
(inherit awscli)
+ ;; Note: updating awscli-2 typically requires updating python-awscrt.
(name "awscli")
- (version "2.20.0")
+ ;; Upstream practices a very rapid (1h-1d) release cycles try to select
+ ;; any fresh one compatible with current state of dependencies in Guix.
+ (version "2.28.0")
(source
(origin
(method git-fetch)
@@ -5828,24 +6456,30 @@ Services (AWS) API.")
(file-name (git-file-name name version))
(sha256
(base32
- "0hyr9gmcfk7nzkgs0v6wgkh8k15dyhknqzfymbc9a9sa2dblc40q"))))
+ "1a1jzvdm434x46yh7ir11lw0nzc64ns4qvxhp5wfra3rh5ykf36j"))))
(build-system pyproject-build-system)
(arguments
(list
+ ;; When updating and checking locally be very patient as build phase may
+ ;; hang for 6-8 minutes but eventually passes through.
+ ;;
+ ;; tests: 4189 passed, 1 skipped, 2 warnings
#:test-flags
- '(list ;; This version of prompt-toolkit has issues with awscli-2, see
- ;; <https://github.com/aws/aws-cli/issues/9453#issuecomment-2822186530>.
- "--ignore=functional/autoprompt/test_prompttoolkit.py"
- ;; The resource leak tests use ps to check for memory consumption.
- "--ignore=functional/botocore/leak/test_resource_leaks.py"
- ;; These tests complain about unavailable TLS certs.
- "--ignore=functional/ec2instanceconnect/test_opentunnel.py"
- ;; These seem to require Internet access.
- "--ignore=unit/botocore/test_awsrequest.py"
+ '(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
+ ;; Full test suite contains more than 70k tests; ignore network
+ ;; dependent, slow and compute intense tests, keep just unit
+ ;; tests.
+ "--ignore=tests/backends"
+ "--ignore=tests/dependencies"
+ "--ignore=tests/functional"
+ "--ignore=tests/integration"
+ "--ignore=tests/unit/botocore"
;; Flaky, something to do with PATH disappearing from os.environ?
;; Passes when run on its own, so maybe something else is
;; modifying this during the test run.
- "--ignore=unit/customizations/emr/test_emr_utils.py")
+ "--ignore=tests/unit/customizations/emr/test_emr_utils.py"
+ ;; TypeError: 'Mock' object is not subscriptable
+ "-k" "not test_no_groff_or_mandoc_exists")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'ignore-deprecations
@@ -5860,44 +6494,26 @@ Services (AWS) API.")
(string-append "cmdline = ['"
(search-input-file inputs "bin/groff")
"'")))))
- (replace 'check
- (lambda* (#:key tests? test-flags #:allow-other-keys)
- (when tests?
- (let ((skip-args
- (string-append
- "-k" "\""
- ;; No idea why this fails.
- "not test_no_groff_or_mandoc_exists"
- ;; Needs $HOME
- " and not test_attach_history_handler"
- ;; Complains about TLS certs.
- " and not test_command_returns_shutdown_exception"
- "\"")))
- (substitute* "scripts/ci/run-tests"
- (("--numprocesses=auto" m)
- (string-join (cons* m skip-args test-flags) " "))))
- (invoke "python" "scripts/ci/run-tests")))))))
+ (add-before 'check 'pre-check
+ (lambda _ (setenv "HOME" "/tmp"))))))
(inputs
(list groff
+ ;; less
nss-certs-for-test
- python-awscrt-for-awscli
+ python-awscrt
python-colorama
- python-botocore
- python-cryptography
python-dateutil
+ python-distro
python-docutils
python-jmespath
- python-jsonschema
python-prompt-toolkit
- python-ruamel.yaml-0.16
+ python-ruamel.yaml
python-ruamel.yaml.clib
python-urllib3))
(native-inputs
- (list python-distro
- python-flit
+ (list python-flit-core
python-pytest
- python-pytest-xdist
- python-wheel))))
+ python-pytest-xdist))))
;; This is not an official release of awscli version 2, so it should not be
;; named awscli.
@@ -5975,24 +6591,29 @@ file.")
(define-public python-webtest
(package
(name "python-webtest")
- (version "2.0.35")
+ (version "3.0.6")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "WebTest" version))
+ (uri (pypi-uri "webtest" version))
(sha256
- (base32 "11xhgdj251zkvz5w30fvspii08ki2vrpr1im9sph1wmlnasnihda"))))
- (build-system python-build-system)
+ (base32 "0jwl8i9xvm5xim1h2jrwfbqac1g3fpiazfdwfp2md3s4899gsmj2"))))
+ (build-system pyproject-build-system)
(arguments
;; Tests require python-pyquery, which creates a circular dependency.
`(#:tests? #f))
+ (native-inputs
+ (list python-setuptools))
(propagated-inputs
- (list python-waitress python-webob python-six python-beautifulsoup4))
+ (list python-beautifulsoup4
+ python-waitress
+ python-webob))
(home-page "https://docs.pylonsproject.org/projects/webtest/")
(synopsis "Helper to test WSGI applications")
- (description "Webtest allows you to test your Python web applications
-without starting an HTTP server. It supports anything that supports the
-minimum of WSGI.")
+ (description
+ "Webtest allows you to test your Python web applications without
+starting an HTTP server. It supports anything that supports the minimum of
+WSGI.")
(license license:expat)))
(define-public python-flask
@@ -6027,16 +6648,23 @@ presume or force a developer to use a particular tool or library.")
(define-public python-flask-compress
(package
(name "python-flask-compress")
- (version "1.13")
+ (version "1.18")
(source (origin
(method url-fetch)
- (uri (pypi-uri "Flask-Compress" version))
+ (uri (pypi-uri "flask_compress" version))
(sha256
(base32
- "178jzz6jxlxllcjqamzh5q7ahfh90m5cl1il9vmjs3xhz65z35pf"))))
+ "0fj1r0ixsjls7z3a2zzamxppjz4qcf8q4jcmn74gsk9kisyy3fpx"))))
(build-system pyproject-build-system)
- (propagated-inputs (list python-brotli python-flask))
- (native-inputs (list python-setuptools-scm python-setuptools python-wheel))
+ (native-inputs
+ (list python-flask-caching
+ python-pytest
+ python-setuptools
+ python-setuptools-scm))
+ (propagated-inputs
+ (list python-brotli
+ python-flask
+ python-pyzstd))
(home-page "https://github.com/colour-science/flask-compress")
(synopsis "Compress responses in a Flask app")
(description
@@ -6141,26 +6769,36 @@ library.")
(license license:asl2.0)))
(define-public python-grequests
- (package
- (name "python-grequests")
- (version "0.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "grequests" version))
- (sha256
- (base32
- "1j9icncllbkv7x5719b20mx670c6q1jrdx1sakskkarvx3pc8h8g"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-gevent python-requests))
- (native-inputs
- (list python-nose python-zope-interface python-zope-event))
- (home-page "https://github.com/kennethreitz/grequests")
- (synopsis "Python library for asynchronous HTTP requests")
- (description "GRequests is a Python library that allows you to use
-@code{Requests} with @code{Gevent} to make asynchronous HTTP Requests easily")
- (license license:bsd-2)))
+ (let ((commit "60f70e99e942a2df378b4e4f6202dcf862754c2d")
+ (revision "0"))
+ (package
+ (name "python-grequests")
+ (version (git-version "0.7.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kennethreitz/grequests")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0132yv1rr4pmrmwasrnasqbnd80pi6rgy52608731p7lidkmxz9a"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: Most failing tests seem to be caused by network access,
+ ;; but there is no easy/flag way to disable tests selectively.
+ #:tests? #f
+ #:test-backend #~'unittest
+ #:test-flags #~(list "tests.py")))
+ (propagated-inputs (list python-gevent python-requests))
+ (native-inputs (list python-setuptools))
+ (home-page "https://github.com/kennethreitz/grequests")
+ (synopsis "Python library for asynchronous HTTP requests")
+ (description
+ "GRequests is a Python library that allows you to use @code{Requests}
+with @code{Gevent} to make asynchronous HTTP Requests easily.")
+ (license license:bsd-2))))
(define-public python-gwebsockets
(package
@@ -6362,41 +7000,50 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients."
@code{httplib2} for use with @code{requests} session objects.")
(license license:asl2.0)))
-(define-public python-cachecontrol-0.11
- (package
- (inherit python-cachecontrol)
- (name "python-cachecontrol")
- (version "0.11.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "CacheControl" version))
- (sha256
- (base32
- "07jsfhlbcwgqg6ayz8nznzaqg5rmxqblbzxz1qvg5wc44pcjjy4g"))))
- (native-inputs (list python-setuptools python-wheel))))
-
(define-public python-betamax
(package
(name "python-betamax")
(version "0.9.0")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "betamax" version))
- (sha256
- (base32
- "152zil1j4gl1whnldi08zwjr4z2bnlbd061kr3ipjs5wg4b6wcc2"))))
- (build-system python-build-system)
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "betamax" version))
+ (sha256
+ (base32
+ "152zil1j4gl1whnldi08zwjr4z2bnlbd061kr3ipjs5wg4b6wcc2"))))
+ (build-system pyproject-build-system)
(arguments
- '(;; Many tests fail because they require networking.
- #:tests? #f))
+ (list
+ #:test-flags
+ #~(list "-k" (string-join
+ ;; Tests require network access to http://httpbin.org/get.
+ (list "not test_creates_new_cassettes"
+ "test_placeholders_work"
+ "test_post_start_hook"
+ "test_pre_stop_hook"
+ "test_preplayback_hook"
+ "test_prerecord_hook"
+ "test_prerecord_ignoring_hook"
+ "test_records_new_events_with_existing_cassette"
+ "test_records_new_interaction"
+ "test_records_new_interactions"
+ "test_replaces_old_interactions"
+ "test_replays_response_from_cassette"
+ "test_requests_with_json_body"
+ "test_saves_content_as_gzip"
+ "test_unicode_is_saved_properly")
+ " and not "))))
+ (native-inputs
+ (list nss-certs-for-test
+ python-pytest
+ python-setuptools))
(propagated-inputs
(list python-requests))
(home-page "https://github.com/sigmavirus24/betamax")
(synopsis "Record HTTP interactions with python-requests")
- (description "Betamax will record your test suite's HTTP interactions and
-replay them during future tests. It is designed to work with python-requests.")
+ (description
+ "Betamax will record your test suite's HTTP interactions and replay them
+during future tests. It is designed to work with python-requests.")
(license license:expat)))
(define-public python-betamax-matchers
@@ -6441,26 +7088,23 @@ Betamax that may possibly end up in the main package.")
(define-public python-s3fs
(package
(name "python-s3fs")
- (version "2024.12.0")
+ (version "2025.9.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "s3fs" version))
(sha256
- (base32 "0mpxk4xvg0gwzapdh9r3fvnjhi8ymf96f7c756xabk26b67kl3qv"))))
+ (base32 "0c5w09ryyfwlrqbhxgn1yl2kl1ksmz2481vjs1l4k9lyy5z2ai3d"))))
(build-system pyproject-build-system)
- ;; Many tests fail with "No such file or directory" raised by the HTTP
- ;; client.
+ ;; TODO: Many tests fail with "No such file or directory" raised by the
+ ;; HTTP client.
(arguments (list #:tests? #false))
- (propagated-inputs (list python-aiobotocore python-aiohttp python-fsspec))
(native-inputs
- (list python-flask ;for moto
- python-flask-cors
- python-moto
- python-pytest
- python-pytest-asyncio
- python-setuptools
- python-wheel))
+ (list python-setuptools))
+ (propagated-inputs
+ (list python-aiobotocore
+ python-aiohttp
+ python-fsspec))
(home-page "https://github.com/fsspec/s3fs/")
(synopsis "Convenient filesystem interface over S3")
(description "This package provides a convenient filesystem interface over
@@ -6485,16 +7129,11 @@ S3.")
;; Tests require networking.
"--ignore" "tests/integration")))
(native-inputs
- (list python-docutils
- python-mock
- python-nose
- python-pytest
+ (list python-pytest
python-pytest-xdist
- python-setuptools
- python-wheel))
+ python-setuptools))
(propagated-inputs
- (list python-botocore
- python-urllib3))
+ (list python-botocore))
(home-page "https://github.com/boto/s3transfer")
(synopsis "Amazon S3 Transfer Manager")
(description
@@ -6530,31 +7169,6 @@ S3.")
"This package contains a Flask module for creating REST APIs.")
(license license:bsd-3)))
-(define-public python-flask-htpasswd
- (package
- (name "python-flask-htpasswd")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flask-htpasswd" version))
- (sha256
- (base32
- "19arq4rn5nll0bbnsff1j10blm0ydp8nvs09c56s29kmlgj3r42x"))))
- (build-system pyproject-build-system)
- (arguments (list #:tests? #false)) ;none included
- (propagated-inputs
- (list python-flask python-passlib python-pyjwt python-tox))
- (native-inputs (list python-pytest
- python-setuptools
- python-wheel))
- (home-page "https://github.com/carsongee/flask-htpasswd")
- (synopsis "Basic authentication via htpasswd files in Flask applications")
- (description "This package provides Basic authentication via
-@file{htpasswd} files and access_token authentication in Flask
-applications.")
- (license license:bsd-3)))
-
(define-public python-flask-sqlalchemy
(package
(name "python-flask-sqlalchemy")
@@ -6782,43 +7396,25 @@ for Flask.")
(define-public python-webassets
(package
(name "python-webassets")
- (version "2.0")
+ (version "3.0.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "webassets" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/miracle2k/webassets")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1kc1042jydgk54xpgcp0r1ib4gys91nhy285jzfcxj3pfqrk4w8n"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-before 'check 'adjust-tests
- (lambda _
- ;; Fix for Python 3.9 compatibility.
- (substitute* "tests/test_script.py"
- (("self\\.t\\.isAlive")
- "self.t.is_alive"))
- ;; This test requires 'postcss' and 'babel' which are
- ;; not yet available in Guix.
- (delete-file "tests/test_filters.py")
- ;; These expect pytest, but when pytest is added to the
- ;; environment more tests fail.
- (delete-file "tests/test_cache.py")
- (delete-file "tests/test_bundle_build.py")
- (delete-file "tests/test_bundle_urls.py")))
- (replace 'check
- (lambda _
- (invoke "nosetests" "-vv"))))))
- (propagated-inputs
- (list python-pyyaml))
- (native-inputs
- (list python-jinja2 python-mock python-nose))
+ (base32 "11hxvdqw86q6r665iryjzwx21ys8jh2c63mw016ldr6j49l0zyyh"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-pyyaml python-zope-dottedname))
+ (native-inputs (list python-hatchling python-pytest))
(home-page "https://github.com/miracle2k/webassets")
(synopsis "Media asset management")
- (description "Merges, minifies and compresses Javascript and CSS files,
-supporting a variety of different filters, including YUI, jsmin, jspacker or
-CSS tidy. Also supports URL rewriting in CSS files.")
+ (description
+ "This package provides utilities to merge, minify and compress Javascript
+and CSS files,supporting a variety of different filters, including YUI, jsmin,
+jspacker or CSS tidy. It also supports URL rewriting in CSS files.")
(license license:bsd-2)))
(define-public python-cssmin
@@ -6838,10 +7434,67 @@ CSS tidy. Also supports URL rewriting in CSS files.")
(description "Python port of the YUI CSS Compressor.")
(license (list license:expat license:bsd-3))))
+(define-public python-elastic-transport
+ (package
+ (name "python-elastic-transport")
+ (version "9.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "elastic_transport" version))
+ (sha256
+ (base32 "0g879z8rqrfbwkxsm6xcycjha1swl7gdgs6m0y0j1zmh4m5f940m"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ ;; Deselect failing tests (mostly due to network not reachable)
+ #~(list "-k"
+ (string-append
+ "not .badssl.com"
+ " and not test_assert_fingerprint_in_cert_chain_failure"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-pytest-config
+ (lambda _
+ ;; Drop test coverage requirements.
+ (substitute* "setup.cfg"
+ (("--cov(-[^ ]*)?=[^ ]*") "\n")))))))
+ (propagated-inputs (list python-certifi python-urllib3))
+ (native-inputs (list nss-certs-for-test
+ python-aiohttp
+ ;; python-furo
+ python-httpx
+ python-opentelemetry-api
+ python-opentelemetry-sdk
+ python-orjson
+ python-pytest
+ python-pytest-asyncio
+ ;; python-pytest-cov
+ python-pytest-httpbin
+ python-pytest-httpserver
+ python-pytest-mock
+ python-requests
+ python-respx ;test
+ python-setuptools
+ ;; python-sphinx
+ ;; python-sphinx-autodoc-typehints
+ python-trustme
+ python-wheel))
+ (home-page "https://github.com/elastic/elastic-transport-python")
+ (synopsis "Common library for Python Elastic client libraries")
+ (description
+ "This library was lifted from @code{elasticsearch-py} and then transformed to
+be used across all Elastic services rather than only Elasticsearch. It
+provides transport classes and utilities shared among Python Elastic client
+libraries.")
+ ;; Apache-2.0 in setup.py and LICENSE file.
+ (license license:asl2.0)))
+
(define-public python-elasticsearch
(package
(name "python-elasticsearch")
- (version "7.17.12")
+ (version "9.1.1")
(source
(origin
(method git-fetch) ; no tests in PyPI release
@@ -6850,60 +7503,59 @@ CSS tidy. Also supports URL rewriting in CSS files.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0v3azgxh1nd0jyqhnb1w28ky3nfx8sjq5vlx2gp33v6vxmvqy1qr"))))
+ (base32 "015x73y84nyigcyg00lh32p2pfrqf834fr7clfnzymgzrrxa73jf"))))
(build-system pyproject-build-system)
- (arguments
- (list
- #:test-flags
- ;; Requiring network config.
- #~(list "--ignore=test_elasticsearch/test_connection.py"
- ;; All tests failed.
- "--ignore=test_elasticsearch/test_async")))
(native-inputs
- (list python-aiohttp
+ (list nss-certs-for-test
+ python-aiohttp
python-dateutil
python-mock
+ python-orjson
python-pytest
python-pytest-asyncio
python-pytest-cov
+ python-pytz
python-pyyaml
python-requests
- python-setuptools
- python-wheel))
+ python-hatchling))
(propagated-inputs
(list python-certifi
- python-urllib3-1.26))
+ python-elastic-transport))
(home-page "https://github.com/elastic/elasticsearch-py")
(synopsis "Low-level client for Elasticsearch")
(description "Official low-level client for Elasticsearch. Its goal is to
provide common ground for all Elasticsearch-related code in Python; because of
this it tries to be opinion-free and very extendable.")
- ;; Apache-2.0 in setup.py and LICENSE file for 11 years.
+ ;; Apache-2.0 in setup.py and LICENSE file.
(license license:asl2.0)))
(define-public python-engineio
(package
(name "python-engineio")
- (version "4.11.2")
+ (version "4.12.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python_engineio" version))
(sha256
(base32
- "0abijzn4srf89jlj0kqcd9xbhyxvglzxkciy5nxv815rrvdb0nql"))))
+ "1ynyf3n29biwkm6nwzzwzhr4m19lsir1x5azxq2nl7xyw7zi5rz7"))))
(build-system pyproject-build-system)
(arguments
(list
- ;; File not found.
- #:test-flags '(list "-k" "not test_static_files")))
+ #:test-flags
+ #~(list "-k"
+ "not test_static_file_routing and not test_static_files")))
+ (native-inputs
+ (list python-pytest
+ python-pytest-asyncio
+ python-setuptools
+ python-tornado))
(propagated-inputs
(list python-aiohttp
python-requests
python-simple-websocket
- python-tornado
python-websocket-client))
- (native-inputs (list python-pytest python-setuptools python-wheel))
(home-page "https://github.com/miguelgrinberg/python-engineio/")
(synopsis "Engine.IO server")
(description "This package provides a Python implementation of the
@@ -6916,13 +7568,17 @@ this it tries to be opinion-free and very extendable.")
(version "1.1.4")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "ephemeral_port_reserve" version))
+ (method git-fetch) ;no tests in PyPI archvie
+ (uri (git-reference
+ (url "https://github.com/Yelp/ephemeral-port-reserve")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32 "1chl9hil7ggz6l4sfhmp0l2j55qcskbc3pj9360b0309jwndmxxq"))))
+ (base32 "1ifmf5zcw7mhbm73awmf5jwc4rw8lhk81mn4zp797lwkysjm38s7"))))
(build-system pyproject-build-system)
(native-inputs
- (list python-setuptools
+ (list python-pytest
+ python-setuptools
python-wheel))
(home-page "https://github.com/Yelp/ephemeral-port-reserve/")
(synopsis "Find an unused port, reliably")
@@ -7172,23 +7828,15 @@ addon modules.")
(define-public python-bottle
(package
(name "python-bottle")
- (version "0.12.23")
+ (version "0.13.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "bottle" version))
(sha256
- (base32 "0rs1w293gp5bhxip2cci8mfkhld6n5qcznvlna3nxclz76mf6gb8"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (with-directory-excursion "test"
- (invoke "pytest" "-vvv"))))))))
- (native-inputs (list python-pytest))
+ (base32 "0irz5i3h73pqz0ssgp3yk12zx33q7lrlh8p0in9jgchjgqr7hzkq"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-pytest python-setuptools))
(home-page "https://bottlepy.org/")
(synopsis "WSGI framework for small web-applications")
(description "@code{python-bottle} is a WSGI framework for small web-applications.")
@@ -7398,7 +8046,8 @@ for URL parsing and changing.")
"1gg6h2w4bajsis35p7l5r6bx54h5j2nq16r90wq8fbb0d3gz3f6q"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-arrow python-pytz python-requests))
- (native-inputs (list python-requests-mock
+ (native-inputs (list python-pytest
+ python-requests-mock
python-setuptools
python-urllib3-1.26
python-wheel))
@@ -7414,21 +8063,21 @@ users, gradebooks, and more.")
(package
(name "python-google")
(version "3.0.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "google" version))
- (sha256
- (base32
- "1gncv3l11za0mpxvmpaf5n5j3jzp282rz62yml4ha4z55q930d8l"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; There are no tests.
- (propagated-inputs
- (list python-beautifulsoup4))
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "google" version))
+ (sha256
+ (base32 "1gncv3l11za0mpxvmpaf5n5j3jzp282rz62yml4ha4z55q930d8l"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:tests? #f)) ;There are no tests.
+ (native-inputs (list python-setuptools))
+ (propagated-inputs (list python-beautifulsoup4))
(home-page "https://breakingcode.wordpress.com/")
(synopsis "Python bindings to the Google search engine")
- (description "This package provides Python bindings for using the
-Google search engine. Its module is called @code{googlesearch}.")
+ (description
+ "This package provides Python bindings for using the Google search
+engine. Its module is called @code{googlesearch}.")
(license license:bsd-3)))
(define-public python-google-api-client
@@ -7461,17 +8110,21 @@ Google search engine. Its module is called @code{googlesearch}.")
(define-public python-google-auth-httplib2
(package
(name "python-google-auth-httplib2")
- (version "0.1.1")
+ (version "0.2.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "google-auth-httplib2" version))
(sha256
- (base32 "0agwwgw04nks7lzpm224fbvpnjfgzz67pkrfls77ipf6zmawajy6"))))
- (build-system python-build-system)
+ (base32 "018fckshilc6z2qpj1pclh8haanbq3lr85w6p4g4z5wgyjnppaiq"))))
+ (build-system pyproject-build-system)
(propagated-inputs
- (list python-google-auth python-httplib2 python-six))
+ (list python-google-auth python-httplib2))
(native-inputs
- (list python-flask python-mock python-pytest python-pytest-localserver))
+ (list python-pytest
+ python-pyparsing
+ python-pytest-localserver
+ python-flask
+ python-setuptools))
(home-page
"https://github.com/GoogleCloudPlatform/google-auth-library-python-httplib2")
(synopsis "Google Authentication Library: httplib2 transport")
@@ -7582,21 +8235,33 @@ underlies Mozilla Persona.")
(define-public python-pyfxa
(package
(name "python-pyfxa")
- (version "0.6.0")
+ (version "0.8.1")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "PyFxA" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mozilla/PyFxA")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "0axl16fyrz2r88gnw4b12mk7dpkqscv8c4wsc1y5hicl7bsbc4fm"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; 17 tests require network access
+ (base32 "11iaw50x5ic9cqp3jwkvhk8mz00dhg8xhl1kkx45zrb8nnrfw2vs"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; These tests require network access
+ #:test-flags #~(list "--ignore=fxa/tests/test_core.py")))
(propagated-inputs
- (list python-cryptography python-hawkauthlib python-pybrowserid
- python-requests python-six))
+ (list python-cryptography
+ python-pyjwt
+ python-parameterized
+ python-hawkauthlib
+ python-requests))
(native-inputs
- (list python-grequests python-mock python-responses python-unittest2))
+ (list python-grequests
+ python-hatchling
+ python-mock
+ python-pytest
+ python-responses))
(home-page "https://github.com/mozilla/PyFxA")
(synopsis "Firefox Accounts client library for Python")
(description
@@ -8104,45 +8769,44 @@ and fairly speedy.")
(define-public python-httptools
(package
(name "python-httptools")
- (version "0.1.1")
+ (version "0.6.4")
(source
(origin
;; PyPI tarball comes with a vendored http-parser and no tests.
(method git-fetch)
(uri (git-reference
- (url "https://github.com/MagicStack/httptools")
- (commit (string-append "v" version))))
+ (url "https://github.com/MagicStack/httptools")
+ (commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0g08128x2ixsiwrzskxc6c8ymgzs39wbzr5mhy0mjk30q9pqqv77"))))
- (build-system python-build-system)
+ (base32 "05zsa77jlm2h9z0vfj6gdqklj3pbzbijhk5s9b3q7iaxl347hwzc"))
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin (delete-file-recursively "vendor")))))
+ (build-system pyproject-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'preparations
- (lambda _
- ;; Skip a failing test (AssertionError). Bug report:
- ;; https://github.com/MagicStack/httptools/issues/10.
- (substitute* "tests/test_parser.py"
- ((" def test_parser_response_1")
- (string-append
- " @unittest.skip(\"Disabled.\")\n"
- " def test_parser_response_1")))
- ;; Use packaged http-parser.
- (substitute* "setup.py" (("self.use_system_http_parser = False")
- "self.use_system_http_parser = True"))
- ;; This path is hardcoded. Hardcode our own.
- (substitute* "httptools/parser/cparser.pxd"
- (("../../vendor/http-parser")
- (string-append (assoc-ref %build-inputs "http-parser")
- "/include")))
- ;; Don't force Cython version.
- (substitute* "setup.py" (("Cython==") "Cython>="))
- #t)))))
+ (list
+ #:test-flags
+ ;; XXX: AssertionError: HttpParserError not raised.
+ #~(list "-k" "not test_parser_response_leninent_headers_1")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'configure-build-ext
+ (lambda _
+ (with-output-to-file "setup.cfg"
+ (lambda ()
+ (display "\
+[build_ext]
+use_system_llhttp = true
+use_system_http_parser = true
+cython_always = true"))))))))
(native-inputs
- (list python-cython python-pytest))
+ (list python-cython
+ python-pytest
+ python-setuptools))
(inputs
- (list http-parser))
+ (list http-parser
+ llhttp))
(home-page "https://github.com/MagicStack/httptools")
(synopsis "Collection of framework independent HTTP protocol utils")
(description
@@ -8158,8 +8822,8 @@ and fairly speedy.")
;; PyPI tarball has no tests.
(method git-fetch)
(uri (git-reference
- (url "https://github.com/encode/uvicorn")
- (commit version)))
+ (url "https://github.com/encode/uvicorn")
+ (commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "05lkxnpzmr0kik81kdcvavjvvc4d1lgmw88mr4vbwsqk147wgqbc"))))
@@ -8186,7 +8850,7 @@ and fairly speedy.")
python-hatchling
python-httpx-bootstrap
python-pytest
- python-pytest-asyncio
+ python-pytest-asyncio-0.26
python-pytest-mock
python-requests
python-trustme
@@ -8212,27 +8876,26 @@ for HTTP/2 is planned.")
(define-public python-translation-finder
(package
(name "python-translation-finder")
- (version "1.7")
+ (version "2.22")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "translation-finder" version))
- (sha256
- (base32
- "1pcy9z8gmb8x41gjhw9x0lkr0d2mv5mdxcs2hwg6q8mxs857j589"))))
- (build-system python-build-system)
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "translation_finder" version))
+ (sha256
+ (base32 "1hav99ccijvk2w8wpvba2pc7ba1z150vja2wvaimd069mc08pjd2"))))
+ (build-system pyproject-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'remove-failing-test
- (lambda _
- (delete-file "translation_finder/test_api.py")
- #t)))))
- (propagated-inputs
- (list python-chardet python-pathlib2 python-ruamel.yaml python-six))
+ (list
+ #:test-flags
+ ;; AssertionError: 31 != 30 : Mismatched count of results
+ #~(list "--deselect=translation_finder/test_api.py::APITest::test_discover_file")))
(native-inputs
- (list python-codecov python-codacy-coverage python-pytest-cov
- python-pytest-runner python-twine))
+ (list python-pytest
+ python-setuptools))
+ (propagated-inputs
+ (list python-charset-normalizer
+ python-ruamel.yaml
+ python-weblate-language-data))
(home-page "https://weblate.org/")
(synopsis "Translation file finder for Weblate")
(description "This package provides a function to find translation file in
@@ -8372,17 +9035,20 @@ association.")
(define-public python-livereload
(package
(name "python-livereload")
- (version "2.6.3")
+ (version "2.7.1")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "livereload" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lepture/python-livereload")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "0scqjnhg3ap81v36ghp0pik774dnfdkwqsx5j1jfbzarbs32yvvp"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six python-tornado))
+ (base32 "19wkdd1grw6mcd4qi8iaw4jdr207h3m24951vgy69j7g904lynjq"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:test-backend #~'unittest))
+ (native-inputs (list python-django python-setuptools))
+ (propagated-inputs (list python-tornado))
(home-page "https://github.com/lepture/python-livereload")
(synopsis "Python LiveReload")
(description
@@ -8412,7 +9078,7 @@ and serve updated contents upon changes to the directory.")
(define-public python-httpcore
(package
(name "python-httpcore")
- (version "1.0.7")
+ (version "1.0.9")
(source
(origin
;; PyPI tarball does not contain tests.
@@ -8422,7 +9088,7 @@ and serve updated contents upon changes to the directory.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1wz54snks59m1mz2mv0i4p37zz2rrzd99gpg8sh3qkpck5h8lhc4"))))
+ (base32 "0yhm2n8qflpwjsjggyj757m0gw3n68al0my0ljybndwp933ipl32"))))
(build-system pyproject-build-system)
(native-inputs
(list nss-certs-for-test
@@ -8480,52 +9146,53 @@ Some things HTTP Core does do:
;; PyPI tarball does not contain tests.
(method git-fetch)
(uri (git-reference
- (url "https://github.com/encode/httpx")
- (commit version)))
+ (url "https://github.com/encode/httpx")
+ (commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "00d6rb21xwazwb0sj68zhra0qxxcwkd0vv7bg3k1jg94dmk2w7xl"))))
(build-system pyproject-build-system)
(arguments
(list
+ ;; 1401 passed, 1 skipped, 5 deselected
#:test-flags
- '(list "-vv" "-o" "asyncio_mode=auto"
- "-k"
- ;; These tests try to open an outgoing connection.
- (string-append
- "not test_connect_timeout"
- " and not test_that_send_cause_async_client_to_be_not_closed"
- " and not test_that_async_client_caused_warning_when_being_deleted"
- " and not test_that_send_cause_client_to_be_not_closed"
- " and not test_async_proxy_close"
- " and not test_sync_proxy_close"
- ;; This test is apparently incompatible with
- ;; python-click 8, fails with " AttributeError:
- ;; 'function' object has no attribute 'name'".
- " and not test_main"))))
+ #~(list "-o" "asyncio_mode=auto"
+ ;; CLI tests are broken.
+ "--ignore=tests/test_main.py"
+ "-k" (string-join
+ ;; These tests try to open an outgoing connection.
+ (list "not test_async_proxy_close"
+ "test_sync_proxy_clos"
+ "test_write_timeout")
+ " and not "))))
(native-inputs
(list nss-certs-for-test
+ python-chardet
python-cryptography
- python-hatchling
python-hatch-fancy-pypi-readme
+ python-hatchling
python-pytest
python-pytest-asyncio
python-pytest-trio
+ python-setuptools
python-trio
- python-trio-typing
python-trustme
- python-uvicorn
- python-setuptools
- python-wheel
- python-zstandard))
+ python-uvicorn))
(propagated-inputs
- (list python-charset-normalizer
- python-brotli
+ (list python-anyio
python-certifi
- python-chardet
python-httpcore
python-idna
- python-rfc3986
+ ;; [brotli]
+ python-brotli
+ ;; [http2]
+ python-h2
+ ;; [socks]
+ python-socksio
+ ;; [zstd]
+ python-zstandard
+ ;; For trio, see:
+ ;; <https://github.com/python-trio/trio/issues/2802>.
python-sniffio))
(home-page "https://www.python-httpx.org/")
(synopsis "HTTP client for Python")
@@ -8677,7 +9344,8 @@ files.")
"1dx3rf6fmg4ir9cfcn1fil446qz879cwrjq2rcz5zvl71xkw6hb3"))))
(build-system pyproject-build-system)
(arguments
- (list #:phases
+ (list #:test-backend #~'unittest
+ #:phases
#~(modify-phases %standard-phases
(add-before 'check 'extend-test-timeout
(lambda _
@@ -8901,25 +9569,26 @@ according to the standard set by PasteDeploy")
(define-public python-hupper
(package
(name "python-hupper")
- (version "1.10.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "hupper" version))
- (sha256
- (base32
- "1nbc648d110jx6ziji980cdmzsd14p8fqrcarsdvr1vm5jvm2vyd"))))
- (build-system python-build-system)
- (arguments '(#:test-target "pytest"))
+ (version "1.12.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "hupper" version))
+ (sha256
+ (base32 "1srj7sqxdgxr0nnhh9lw8jmp64chwgg8iwfm9b4g9v7l1wbm9gq6"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; RuntimeError: timeout waiting for change to
+ ;; file=/tmp/guix-build-python-hupper-1.12.1.drv-0/tmpm9n4697p
+ #:test-flags #~(list "--ignore=tests/test_it.py")))
(native-inputs
- (list python-mock
- python-pytest
+ (list python-pytest
python-pytest-cov
- python-pytest-runner
python-setuptools
- python-watchdog
python-wheel))
(propagated-inputs
- (list python-pytz))
+ (list python-watchdog))
(home-page "https://readthedocs.org/projects/hupper")
(synopsis "Integrated process monitor tracking changes to imported Python files")
(description
@@ -9033,40 +9702,47 @@ requests.")
(name "python-flask-restx")
(version "1.3.0")
(source
- ;; We fetch from the Git repo because there are no tests in the PyPI
- ;; archive.
(origin
- (method git-fetch)
+ (method git-fetch) ;no tests in PyPI archive
(uri (git-reference
- (url "https://github.com/python-restx/flask-restx")
- (commit version)))
+ (url "https://github.com/python-restx/flask-restx")
+ (commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1qmm3i1cdv0bvzsc1gn4ql2dsf1fbx85fk69vcmzpsdxzczmw508"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-aniso8601 python-flask python-jsonschema python-pytz))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; 1214 passed, 6 skipped, 16 deselected, 3 warnings
+ #:test-flags
+ #~(list "--benchmark-skip"
+ ;; ValueError: http://www.google.com is not a valid URL. Domain
+ ;; does not exists.
+ "--deselect=tests/test_inputs.py::URLTest::test_check"
+ "-k" (string-join
+ ;; See: <https://github.com/python-restx/flask-restx/issues/620>.
+ (list "not test_rfc822_value"
+ "test_iso8601_value"
+ ;; assert 404 == 2000
+ "test_specs_endpoint_host_and_subdomain"
+ ;; ValueError: test@gmail.com is not a valid email
+ "test_valid_value_check")
+ " and not "))))
(native-inputs
(list python-blinker
python-faker
python-pytest
python-pytest-benchmark
python-pytest-flask
- python-pytest-mock))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "--benchmark-skip" "-k"
- ;; Those tests need internet access
- (string-join
- '("not test_check"
- "not test_valid_value_check"
- "not test_override_app_level"
- "not test_redirect"
- "not test_swagger")
- " and ")))))))
+ python-pytest-mock
+ python-setuptools))
+ (propagated-inputs
+ (list python-aniso8601
+ python-flask
+ python-importlib-resources
+ python-jsonschema
+ python-pytz
+ python-werkzeug))
(home-page "https://github.com/python-restx/flask-restx")
(synopsis
"Framework for fast, easy and documented API development with Flask")
@@ -9107,17 +9783,18 @@ Swagger.")
(name "python-manuel")
(version "1.13.0")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "manuel" version))
- (sha256
- (base32
- "0nl8psji3fizbxw34gdg22dndlg9lf5f56mnh1vr4vgsx06i4qsx"))))
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "manuel" version))
+ (sha256
+ (base32 "0nl8psji3fizbxw34gdg22dndlg9lf5f56mnh1vr4vgsx06i4qsx"))))
(build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; FIXME: Tests are broken, see: <https://github.com/benji-york/manuel/pull/32>.
+ #:tests? #f))
(propagated-inputs
- (list python-setuptools))
- (native-inputs
- (list python-setuptools python-wheel python-zope-testing))
+ (list python-setuptools)) ;install requires
(home-page "https://pypi.org/project/manuel/")
(synopsis "Build tested documentation")
(description
@@ -9163,42 +9840,69 @@ framework, designed to be lean and fast, with few dependencies.")
(define-public python-persistent
(package
(name "python-persistent")
- (version "4.6.4")
+ (version "6.1.1")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "persistent" version))
- (sha256
- (base32
- "0imm9ji03lhkpcfmhid7x5209ix8g2rlgki9ik1qxks4b8sm8gzq"))))
- (build-system python-build-system)
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/persistent/")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "19qwqg49zql2c8l4vjxjb9haw0bzd6lk8p4v3hip2irch6a4578a"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src"
+ ;; XXX: Ignore doc tests.
+ "!persistent.tests.test_docs")
+ (format #t "test suite not run~%")))))))
(propagated-inputs
- (list python-cffi python-zope-interface))
+ (list python-cffi
+ python-zope-deferredimport
+ python-zope-interface
+ python-zope-testrunner))
(native-inputs
- (list python-manuel python-zope-testrunner))
+ (list python-manuel python-zope-testrunner python-setuptools))
(home-page "https://github.com/zopefoundation/persistent/")
(synopsis "Translucent persistent objects")
- (description "This package contains a generic persistence implementation for
-Python. It forms the core protocol for making objects interact
-\"transparently\" with a database such as the ZODB.")
+ (description
+ "This package contains a generic persistence implementation for Python.
+It forms the core protocol for making objects interact \"transparently\" with
+a database such as the ZODB.")
(license license:zpl2.1)))
(define-public python-btrees
(package
(name "python-btrees")
- (version "4.7.2")
+ (version "6.1")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "BTrees" version))
- (sha256
- (base32
- "0iiq0g9k1g6qgqq84q9h6639vlvzznk1rgdm0rfcnnqkbkmsbr3w"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-persistent python-zope-interface))
- (native-inputs
- (list python-persistent python-transaction python-zope-testrunner))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zopefoundation/BTrees")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0vcibmd725ddgsl5yzmi8d403day3796h82xlq84w91xbdrbd5d5"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (propagated-inputs (list python-persistent python-zope-interface))
+ (native-inputs (list python-persistent python-transaction
+ python-zope-testrunner python-setuptools))
(home-page "https://github.com/zopefoundation/BTrees")
(synopsis "Scalable persistent object containers")
(description
@@ -9211,19 +9915,19 @@ conflicts detected by that mechanism.")
(define-public python-transaction
(package
(name "python-transaction")
- (version "3.0.0")
+ (version "5.0")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "transaction" version))
- (sha256
- (base32
- "0bdaks31bgfh78wnj3sij24bfysmqk25crsis6amz8kzrc0d82iv"))))
- (build-system python-build-system)
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "transaction" version))
+ (sha256
+ (base32 "0x0i5graxb93aa8bwf5rmm9zq7d7r6q2b4pw358wph5whbbpnvhh"))))
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list python-pytest
+ python-setuptools))
(propagated-inputs
(list python-zope-interface))
- (native-inputs
- (list python-coverage python-mock python-nose))
(home-page "https://github.com/zopefoundation/transaction")
(synopsis "Transaction management for Python")
(description "This package contains a generic transaction implementation
@@ -9308,6 +10012,11 @@ using a pure Python implementation.")
(license license:bsd-3)))
(define-public python-pyjsparser
+ ;; XXX: This project is potentially abandonware, consider to remove in next
+ ;; refresh cycle, see:
+ ;; <https://github.com/PiotrDabkowski/pyjsparser/issues/28>,
+ ;; <https://github.com/PiotrDabkowski/pyjsparser/issues/39>, and
+ ;; <https://github.com/PiotrDabkowski/pyjsparser/issues/40>.
(package
(name "python-pyjsparser")
(version "2.7.1")
@@ -9317,11 +10026,14 @@ using a pure Python implementation.")
(uri (pypi-uri "pyjsparser" version))
(sha256
(base32 "0ycmf9fsvwliqmm1n6sfz7x71y7i2kbfgn39d8lsbiccfxmxlq5y"))))
- (build-system python-build-system)
+ (build-system pyproject-build-system)
+ (arguments
+ '(#:tests? #f)) ;no tests in PyPI
+ (native-inputs (list python-setuptools))
(home-page "https://github.com/PiotrDabkowski/pyjsparser")
(synopsis "Fast JavaScript parser")
- (description "This package provides a fast JavaScript parser (based on
-esprima.js)")
+ (description
+ "This package provides a fast JavaScript parser (based on esprima.js)")
(license license:expat)))
(define-public python-js2py
@@ -9338,12 +10050,10 @@ esprima.js)")
(arguments
(list #:tests? #f)) ; tests require Node
(native-inputs
- (list python-pytest
- python-setuptools
- python-wheel))
+ (list python-setuptools))
(propagated-inputs
- (list python-numpy
- python-pyjsparser
+ (list python-pyjsparser
+ python-six
python-tzlocal))
(home-page "https://github.com/PiotrDabkowski/Js2Py")
(synopsis "JavaScript to Python translator")
@@ -9564,36 +10274,43 @@ over IMAP:
(define-public python-giturlparse
(package
(name "python-giturlparse")
- (version "0.10.0")
+ (version "0.12.0")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "giturlparse" version))
- (sha256
- (base32 "0dxk7sqy8ibaqdl6jzxd0ac1p7shzp4p9f3lhkd7qw9h3llsp595"))))
- (build-system python-build-system)
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nephila/giturlparse")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1fdbxp176p17sn5xc1418mz2vk00hlcsd5qmi2fdcfphqal6raan"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-pytest python-setuptools))
(home-page "https://github.com/nephila/giturlparse")
(synopsis "Git URL parsing module")
- (description "This package provides a git URL parsing module which supports
-parsing and rewriting of remote git URLs from various hosting providers.")
+ (description
+ "This package provides a git URL parsing module which supports parsing
+and rewriting of remote git URLs from various hosting providers.")
(license license:asl2.0)))
(define-public python-hstspreload
(package
(name "python-hstspreload")
- (version "2020.10.20")
+ (version "2025.1.1")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "hstspreload" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sethmlarson/hstspreload")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1qah80p2xlib1rhivvdj9v5y3girxrj7dwp1mnh8mwaj5wy32y8a"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/sethmlarson/hstspreload")
- (synopsis
- "Chromium HSTS Preload list as a Python package")
+ (base32 "02mdzhgdz3sprgc26qb084zy639h2zw2yc8d2vm1r18ap9k51ayq"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:tests? #f)) ; tests require external resources.
+ (native-inputs (list python-setuptools))
+ (home-page "https://github.com/sethmlarson/hstspreload")
+ (synopsis "Chromium HSTS Preload list as a Python package")
(description
"@code{python-hstspreload} contains Chromium HSTS Preload list
as a Python package.")
@@ -9779,27 +10496,28 @@ realtime client and server.")
(define-public python-socks
(package
(name "python-socks")
- (version "2.6.1")
+ (version "2.7.2")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "python_socks" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/romis2012/python-socks")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "17pcyd1gg2a7k2i4lvnqi9095brhf7pbpkqfcjmhpzkgmfd94hwp"))))
+ (base32 "1alrfjkir69006qmr2ax3inrffk2bllpljwmprwczb44r0mya77m"))))
(build-system pyproject-build-system)
- (propagated-inputs
- (list python-trio))
+ (propagated-inputs (list python-trio))
(native-inputs
(list python-anyio
python-async-timeout
python-flask
python-pytest
python-pytest-asyncio
+ python-pytest-trio
python-setuptools
python-tiny-proxy
python-trustme
- python-wheel
python-yarl))
(home-page "https://github.com/romis2012/python-socks")
(synopsis
@@ -9819,7 +10537,11 @@ realtime client and server.")
(uri (pypi-uri "socksio" version))
(sha256
(base32 "1b64j45w35jzhjhnq44bnyad9ydh1iyyd7a6j2c8phxmllyyp2zq"))))
- (build-system python-build-system)
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list python-flit-core
+ python-pytest
+ python-pytest-cov))
(home-page "https://github.com/sethmlarson/socksio")
(synopsis "Sans-I/O implementation of SOCKS4, SOCKS4A, and SOCKS5")
(description "The @code{socksio} Python module is a client-side sans-I/O
@@ -9845,12 +10567,8 @@ SOCKS protocols. It can be paired with any I/O library.")
;; Requires Internet access to resolve example.com
(list #:test-flags '(list "--ignore=tests/test_client.py")))
(propagated-inputs (list python-wsproto))
- (native-inputs (list python-flake8
- python-pytest
- python-pytest-cov
- python-setuptools
- python-tox
- python-wheel))
+ (native-inputs (list python-pytest
+ python-setuptools))
(home-page "https://github.com/miguelgrinberg/simple-websocket")
(synopsis "Simple WebSocket server and client for Python")
(description "This package provides a simple @code{WebSocket} server and
@@ -9948,11 +10666,12 @@ SOCKS5(h), HTTP tunnel).")
(method url-fetch)
(uri (pypi-uri "azure-storage-nspkg" version))
(sha256
- (base32
- "049qcmgshz7dj9yaqma0fwcgbxwddgwyfcw4gmv45xfmaa3bwfvg"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-azure-nspkg))
+ (base32 "049qcmgshz7dj9yaqma0fwcgbxwddgwyfcw4gmv45xfmaa3bwfvg"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list #:tests? #f)) ;no tests in PyPI archive
+ (native-inputs (list python-setuptools))
+ (propagated-inputs (list python-azure-nspkg))
(home-page "https://github.com/Azure/azure-storage-python")
(synopsis "Microsoft Azure Storage Namespace package")
(description
@@ -10036,20 +10755,23 @@ Python.")
(define-public python-azure-storage-blob
(package
(name "python-azure-storage-blob")
- (version "12.22.0")
+ (version "12.26.0")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "azure-storage-blob" version))
+ (uri (pypi-uri "azure_storage_blob" version))
(sha256
- (base32 "0vkkngiybx5372j9vc9p4wn6hakpv99l0ipsf4kw7ccazss4p05k"))))
+ (base32 "07ypg1ny5rivy51f4q9h2xajd60wc19jf0zbpw0dxxr48a1dgmsx"))))
(build-system pyproject-build-system)
- ;; To activate tests python-pytest is required and missing
+ (arguments
+ ;; XXX: devtools_testutils is not provided as a proper package on PyPI,
+ ;; Git does not contains setup.py, setup.cfg or pyproject.toml which makes
+ ;; it hard to package in Guix.
;; <https://raw.githubusercontent.com/Azure/azure-sdk-for-python/refs/
- ;; heads/main/tools/azure-sdk-tools/devtools_testutils/README.md>
+ ;; heads/main/tools/azure-sdk-tools/devtools_testutils/README.md>.
+ (list #:tests? #f))
(native-inputs
- (list python-setuptools
- python-wheel))
+ (list python-setuptools))
(propagated-inputs
(list python-azure-core
python-cryptography
@@ -10061,35 +10783,16 @@ Python.")
Client Library for Python.")
(license license:expat)))
-(define-public python-google-crc32c
- (package
- (name "python-google-crc32c")
- (version "1.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "google-crc32c" version))
- (sha256
- (base32 "1ps4qaccij6cixs91772y9f9r1n702yfzy4qqmds6x5h7qkycv97"))))
- (build-system python-build-system)
- (native-inputs (list python-pytest))
- (home-page "https://github.com/googleapis/python-crc32c")
- (synopsis "Python wrapper of Google CRC32C")
- (description
- "This package provides a Python wrapper of the C library implementation
-of the CRC32C hashing algorithm.")
- (license license:asl2.0)))
-
(define-public python-google-auth
(package
(name "python-google-auth")
- (version "2.37.0")
+ (version "2.40.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "google_auth" version))
(sha256
- (base32 "002xvp1139lrw2c2s2yllg5499ghfxzg9lv35i4q770zpwx64m00"))))
+ (base32 "0xrvsqrqx89zkf13gjp328j2y5cfhl88sjzjkkm3dszdmllkl32h"))))
(build-system pyproject-build-system)
(arguments
(list
@@ -10097,7 +10800,7 @@ of the CRC32C hashing algorithm.")
;; This one test uses crypto.sign with an outdated calling convention.
'(list "--ignore=tests/transport/test__mtls_helper.py")))
(propagated-inputs
- (list python-cachetools
+ (list python-cachetools-5
python-pyasn1-modules
python-pyjwt
python-rsa))
@@ -10346,6 +11049,25 @@ library for Python.")
GCS, Azure Blob Storage, gzip, bz2, etc.)")
(license license:expat)))
+(define-public python-smart-open-6
+ (package
+ (inherit python-smart-open)
+ (name "python-smart-open")
+ (version "6.4.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/piskvorky/smart_open")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1vpx37b6lsb6iwi59776ywjrqk1czv8arlhaf9073lrsbilqvj3x"))))
+ (arguments
+ (list
+ ;; XXX: Tests need some older native inputs, disable for now.
+ #:tests? #f))))
+
(define-public python-w3lib
(package
(name "python-w3lib")
@@ -10409,19 +11131,44 @@ can be handled by the @code{colorsys} module in the Python standard library.")
(license license:bsd-3)))
(define-public python-woob
+ ;; TODO: woob requires backends which are currently installed on the fly in
+ ;; ~/.local/share/woob/modules/3.7/woob_modules/ , perhaps we should install
+ ;; them in the store instead. Many modules are included in the modules
+ ;; directory in the source tree, but it is unclear how to install them.
+ ;; Many modules require extra dependencies though, so maybe they should be
+ ;; packaged independently of woob itself.
(package
(name "python-woob")
- (version "3.0")
+ (version "3.7")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "woob" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/woob/woob.git")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32 "09hpxy5zhn2b8li0xjf3zd7s46lawb0315p5mdcsci3bj3s4v1j7"))))
- (build-system python-build-system)
- ;; A small number of tests for optional applications fails due to missing
- ;; inputs.
- (arguments `(#:tests? #f))
+ (base32 "1sy0aykff56xs4dnc7ak6m8is2zgz9fprf3i1pk8n861xz1z748i"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ ;; Deselect tests that require DNS lookup.
+ #~(list
+ "--deselect=tests/browser/adapters.py::TestAdapter::test_ciphers"
+ "--deselect=tests/browser/browsers.py::TestBrowser::test_verify")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'relax-requirements
+ (lambda _
+ ;; "packaging ~= 23.0",
+ (substitute* "pyproject.toml"
+ (("\"packaging .*\",")
+ "")))))))
+ (native-inputs
+ (list nss-certs-for-test
+ python-pytest
+ python-setuptools))
(propagated-inputs
(list python-babel
python-colorama
@@ -10430,19 +11177,20 @@ can be handled by the @code{colorsys} module in the Python standard library.")
python-feedparser
python-html2text
python-lxml
+ python-packaging
python-pillow
python-prettytable
- python-pyqt
+ python-pycountry
python-pyyaml
python-requests
- python-six
+ python-responses
+ python-rich
+ python-termcolor
python-unidecode))
- (native-inputs
- (list python-coverage python-flake8 python-nose python-selenium
- python-xunitparser))
(home-page "https://woob.tech/")
(synopsis "Woob, Web Outside Of Browsers")
- (description "Woob is a collection of applications able to interact with
+ (description
+ "Woob is a collection of applications able to interact with
websites, without requiring the user to open them in a browser. It also
provides well-defined APIs to talk to websites lacking one.")
(license license:lgpl3+)))
@@ -10506,16 +11254,18 @@ real-life projects with legacy data and diverse storage providers.")
(define-public python-mwparserfromhell
(package
(name "python-mwparserfromhell")
- (version "0.6.3")
+ (version "0.7.2")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "mwparserfromhell" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/earwig/mwparserfromhell")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32 "0zh9zaqbac18s7mivqk8am9xw97lfkgcj9hhxj0d4208pkqpkmqs"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-pytest-runner))
+ (base32 "083ir0nccm14431mmn243862gq731ww98fwpd95zm1yccvpzdy68"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-pytest python-setuptools))
(home-page "https://github.com/earwig/mwparserfromhell")
(synopsis "Python parser for MediaWiki wikicode")
(description
@@ -10653,11 +11403,26 @@ standard library and supported by default in Quart.")
(version "1.2.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "ajsonrpc" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pavlov99/ajsonrpc")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32 "17x1a4r4l428mhwn53abki9gzdzq3halyr4lj48fw3dzy0caq6vr"))))
- (build-system python-build-system)
+ (base32 "0c7jxfkv5q2m95j54dn650gcvdbpag2qcki7phvmrwsgb36w09kd"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-version
+ (lambda _
+ (substitute* "ajsonrpc/__init__.py"
+ (("^__version__ = .*")
+ (string-append "__version__ = \"" #$version "\"\n"))))))))
+ (native-inputs
+ (list python-pytest
+ python-setuptools))
(propagated-inputs
(list python-quart
python-sanic
@@ -10834,33 +11599,26 @@ characters in a smarter, more visually pleasing style.")
(define-public python-mf2py
(package
(name "python-mf2py")
- (version "1.1.2")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/microformats/mf2py")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "00pzfc5sl6ywlcr6f2k37n3f2bb7w488p2k95ixzjwx6w3yh747n"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv" "test")))))))
- (native-inputs (list python-mock python-pytest))
+ (version "2.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/microformats/mf2py")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0ajnf0zrh1l48fvix9fbs1qvgbqhiljqnrm51rx44p7dbarpw4ls"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-mock python-poetry-core python-pytest))
(propagated-inputs
(list python-beautifulsoup4 python-html5lib python-requests))
(home-page "https://github.com/microformats/mf2py")
(synopsis "Python Microformats2 parser")
- (description "This Python library provides a Microformats2 parser
-implementing the full Microformats2 (mf2) specification, including backward
-compatibility with Microformats1 (mf1).")
+ (description
+ "This Python library provides a Microformats2 parser implementing the
+full Microformats2 (mf2) specification, including backward compatibility with
+Microformats1 (mf1).")
(license license:expat)))
(define-public python-extruct
@@ -10915,14 +11673,27 @@ metadata from HTML markup. Currently, extruct supports:
(define-public python-wadllib
(package
(name "python-wadllib")
- (version "1.3.6")
+ (version "2.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "wadllib" version))
(sha256
- (base32 "1z65crvdsjxh9nahz1g6q021ijmv85ixmq88l96d61qh5imavndc"))))
- (build-system python-build-system)
+ (base32 "09vlfg4mzdmkqk6br7j8ms3116qk5am0nf4v1jkzwd7swhisznqy"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: Doctests are currently failing.
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "zope-testrunner" "--test-path=src")
+ (format #t "test suite not run~%")))))))
+ (native-inputs
+ (list python-multipart python-setuptools python-zope-testrunner))
(propagated-inputs (list python-lazr-uri))
(home-page "https://launchpad.net/wadllib")
(synopsis "Web Application Description Language (WADL) navigation library")
@@ -11153,6 +11924,26 @@ Interface) framework/toolkit for building async web services in Python.")
and FastAPI.")
(license license:expat)))
+(define-public python-whereismyip
+ (package
+ (name "python-whereismyip")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "whereismyip" version))
+ (sha256
+ (base32 "0psrlvax8249ccs2rvgdygpckzz22vxjcyzr2pql06d48k61gk54"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:tests? #false)) ; There are no tests.
+ (native-inputs (list python-setuptools))
+ (home-page "https://pypi.org/project/whereismyip/")
+ (synopsis "Queries multiple geolocation services until one succeeds")
+ (description
+ "This package provides a simple Python library that queries multiple geolocation
+services until one succeeds.")
+ (license license:gpl3)))
+
(define-public python-whitenoise
(package
(name "python-whitenoise")
@@ -11339,7 +12130,16 @@ return paginated responses to your clients.")
(arguments
(list
#:test-flags
- '(list "--unit-tests" "--ignore=tests/ext")
+ #~(list "--asyncio-mode=auto"
+ "--unit-tests"
+ "--ignore=tests/ext"
+ ;; Netwok access is required.
+ "-k" (string-join
+ (list "not test_optional_params[postgres-default]"
+ "test_optional_params[postgres-limit-offset]"
+ "test_optional_params[sqlite-default]"
+ "test_optional_params[sqlite-limit-offset]")
+ " and not "))
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'patch-tests
@@ -11442,19 +12242,23 @@ infer complex relations and structures.")
(package
(name "python-shopifyapi")
(version "12.0.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "ShopifyAPI" version))
- (sha256
- (base32
- "03np9mkycqbw5l5vk0srmq353q3vmbycbbarzv0cg3z703p81gnb"))))
- (build-system python-build-system)
- (native-inputs (list python-mock))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Shopify/shopify_python_api")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0qhs52yxwyasdigdsajsnqqb3jg78a3fm7cmx8dfq267l64xk465"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-mock python-setuptools))
(propagated-inputs (list python-pyactiveresource python-pyjwt
python-pyyaml python-six))
(home-page "https://github.com/Shopify/shopify_python_api")
(synopsis "Shopify API for Python")
- (description "This package provides the Shopify API for Python.
+ (description
+ "This package provides the Shopify API for Python.
The ShopifyAPI library allows Python developers to programmatically access the
admin section of stores using an ActiveResource-like interface similar the
@@ -11526,50 +12330,54 @@ Grid5000 resources interactively using the embedded shell.")
(package
(name "python-enoslib")
(version "8.0.1")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.inria.fr/discovery/enoslib")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- "0vs6b0bnlv95mzv0rjbxqwrhzkgjkn91gqipgwdf7y4ffpz8nybg")))
- (build-system python-build-system)
- (native-inputs (list python-wheel python-pytest python-ddt
- python-freezegun))
- (propagated-inputs (list ansible
- python-cryptography
- python-grid5000
- python-jsonschema
- python-netaddr
- python-packaging
- python-requests
- python-rich
- python-sshtunnel
- python-pytz))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.inria.fr/discovery/enoslib")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256 "0vs6b0bnlv95mzv0rjbxqwrhzkgjkn91gqipgwdf7y4ffpz8nybg")))
(arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Otherwise Ansible fails to create its config directory.
- (setenv "HOME" "/tmp")
- ;; Ignoring the tests requiring an extra dependency (iotlabcli)
- (invoke "pytest" "enoslib/tests/unit"
- "--ignore"
- "enoslib/tests/unit/infra/test_utils.py"
- "--ignore-glob"
- "enoslib/tests/unit/infra/enos_iotlab/*"))))
- ;; Disable the sanity check, which fails with the following error:
- ;;
- ;; ContextualVersionConflict(rich 12.4.1
- ;; (/gnu/store/...-python-rich-12.4.1/lib/python3.9/site-packages),
- ;; Requirement.parse('rich[jupyter]~=12.0.0'), {'enoslib'})
- ;;
- ;; The optional jupyter dependency of rich isn't critical for
- ;; EnOSlib to work
- (delete 'sanity-check))))
-
+ (list
+ #:test-flags
+ #~(list "enoslib/tests/unit"
+ "--ignore" "enoslib/tests/unit/infra/test_utils.py"
+ "--ignore-glob" "enoslib/tests/unit/infra/enos_iotlab/*")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'check 'pre-check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; Otherwise Ansible fails to create its config directory.
+ (setenv "HOME" "/tmp"))))
+ ;; Disable the sanity check, which fails with the following error:
+ ;;
+ ;; ContextualVersionConflict(rich 12.4.1
+ ;; (/gnu/store/...-python-rich-12.4.1/lib/python3.9/site-packages),
+ ;; Requirement.parse('rich[jupyter]~=12.0.0'), {'enoslib'})
+ ;;
+ ;; The optional jupyter dependency of rich isn't critical for
+ ;; EnOSlib to work
+ (delete 'sanity-check))))
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list python-ddt
+ python-freezegun
+ python-pytest
+ python-setuptools
+ python-wheel))
+ (propagated-inputs
+ (list ansible
+ python-cryptography
+ python-grid5000
+ python-jsonschema
+ python-netaddr
+ python-packaging
+ python-requests
+ python-rich
+ python-sshtunnel
+ python-pytz))
(home-page "https://discovery.gitlabpages.inria.fr/enoslib/index.html")
(synopsis "Deploy distributed testbeds on a variety of platforms")
(description
@@ -11628,3 +12436,30 @@ hardware on Grid'5000 or via OpenStack, to Vagrant, Chameleon, and more.")
"This package provides a library and a command-line tool that lets
you download the entire Wayback Machine archive for a given URL.")
(license license:expat)))
+
+(define-public python-xyzservices
+ (package
+ (name "python-xyzservices")
+ (version "2025.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "xyzservices" version))
+ (sha256
+ (base32 "1n096zg9bd4n6w6axcm16m9sxdkc6qy1mipva0scbyj86rqn9rvg"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags #~(list "-m" "not request")))
+ (native-inputs
+ (list python-pytest
+ python-mercantile
+ python-requests
+ python-setuptools
+ python-setuptools-scm))
+ (home-page "https://github.com/geopandas/xyzservices")
+ (synopsis "Source of XYZ tiles providers")
+ (description "@code{xyzservices} is a lightweight library providing a
+repository of available XYZ services offering raster basemap tiles. The
+repository is provided via Python API and as a compressed JSON file.")
+ (license license:bsd-3)))