summary refs log tree commit diff
path: root/gnu/packages/python-xyz.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r--gnu/packages/python-xyz.scm2117
1 files changed, 1487 insertions, 630 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6f092ab730..a2f1a9aed0 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -52,7 +52,7 @@
 ;;; Copyright © 2018-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019, 2021 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2018, 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2019, 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
 ;;; Copyright © 2015, 2018 Pjotr Prins <pjotr.guix@thebird.nl>
@@ -66,7 +66,7 @@
 ;;; Copyright © 2019, 2020, 2021 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2019, 2020, 2021, 2022 Tanguy Le Carrour <tanguy@bioneland.org>
-;;; Copyright © 2019, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
+;;; Copyright © 2019, 2021, 2022 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2020 Riku Viitanen <riku.viitanen@protonmail.com>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 sirgazil <sirgazil@zoho.com>
@@ -75,11 +75,11 @@
 ;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
 ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
 ;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com>
-;;; Copyright © 2020 Matthew James Kraai <kraai@ftbfs.org>
+;;; Copyright © 2020, 2022 Matthew James Kraai <kraai@ftbfs.org>
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
 ;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw>
 ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
-;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com>
@@ -104,7 +104,7 @@
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
 ;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr>
-;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
 ;;; Copyright © 2021, 2022 Pradana Aumars <paumars@courrier.dev>
@@ -130,6 +130,8 @@
 ;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
 ;;; Copyright © 2022 Mathieu Laparie <mlaparie@disr.it>
 ;;; Copyright © 2022 Garek Dyszel <garekdyszel@disroot.org>
+;;; Copyright © 2022 Baptiste Strazzulla <bstrazzull@hotmail.fr>
+;;; Copyright © 2022 Nicolas Graves <ngraves@ngraves.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -158,9 +160,11 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dbm)
+  #:use-module (gnu packages digest)
   #:use-module (gnu packages django)
   #:use-module (gnu packages djvu)
   #:use-module (gnu packages docker)
@@ -189,6 +193,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages java)
   #:use-module (gnu packages jupyter)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libevent)
@@ -197,6 +202,7 @@
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
+  #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages man)
   #:use-module (gnu packages markup)
   #:use-module (gnu packages maths)
@@ -258,6 +264,7 @@
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (srfi srfi-1)
@@ -318,6 +325,71 @@ asynchronous one follows
 design}.")
     (license license:asl2.0)))
 
+(define-public python-jupytext
+  (package
+    (name "python-jupytext")
+    (version "1.14.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mwouts/jupytext")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0gqpvphrp2ja9ggadx0rrk0sqbpz6kqqg62qqmw4k17469lphc8c"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              ;; some tests fail when HOME=/homeless-shelter.
+              (setenv "HOME" "/tmp")
+              ;; OSError: [Errno 18] Invalid cross-device link
+              (setenv "TMPDIR" "/tmp")
+              (when tests?
+                (let ((disabled-tests
+                       (list "test_create_header_with_set_formats"
+                             "test_pre_commit_hook"
+                             "test_sync_with_pre_commit_hook")))
+                  (invoke "pytest" "-vv" "-k"
+                          (string-append "not "
+                                         (string-join disabled-tests
+                                                      " and not "))))))))))
+    (native-inputs
+     (list git-minimal
+           python-autopep8
+           python-black
+           python-flake8
+           python-gitpython
+           python-isort
+           python-ipython-genutils
+           python-jupyter-server
+           python-pre-commit
+           python-pytest
+           python-pyaml))
+    (propagated-inputs
+     (list python-markdown-it-py
+           python-mdit-py-plugins
+           python-nbformat))
+    (home-page "https://github.com/mwouts/jupytext")
+    (synopsis
+     "Jupyter notebooks as Markdown documents, Julia, Python or R scripts")
+    (description
+     "Jupytext is a plugin for Jupyter that can save Jupyter notebooks as
+either Markdown files or scripts in many languages.  Common use cases for
+Jupytext are:
+
+@itemize
+@item version control on Jupyter Notebooks
+@item editing, merging or refactoring notebooks in your favorite text editor
+@item applying Q&A checks on notebooks.
+@end itemize
+")
+    (license license:expat)))
+
 (define-public python-logzero
   (package
     (name "python-logzero")
@@ -372,7 +444,7 @@ easy logging and rotating to a console or a file.")
                (invoke "pytest" "--cov=logbook" "-r" "s" "tests")))))))
     (native-inputs
      (list python-cython python-mock python-pytest python-pytest-cov
-           python-google-brotli))
+           python-brotli))
     (home-page "https://github.com/getlogbook/logbook")
     (synopsis "Logbook is a logging replacement for Python")
     (description
@@ -495,6 +567,43 @@ and variables you'll need already imported and created.
     (home-page "https://github.com/google/python-fire")
     (license license:asl2.0)))
 
+(define-public python-fit-nbinom
+  (package
+    (name "python-fit-nbinom")
+    (version "1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "fit_nbinom" version))
+              (sha256
+               (base32
+                "12v8l5i35vjbpvh5i4lw29ys6vpr3z7pysyrx33hxaq09zr015mx"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-numpy python-scipy))
+    (home-page "https://github.com/joachimwolff/fit_nbinom")
+    (synopsis "Negative binomial maximum likelihood estimator")
+    (description "This package provides an implementation in Python using
+scipy and numpy of negative binomial maximum likelihood estimation.")
+    (license license:gpl3+)))
+
+(define-public python-dotmap
+  (package
+    (name "python-dotmap")
+    (version "1.3.30")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "dotmap" version))
+              (sha256
+               (base32
+                "0s5kb2v7jd0narz6m6jcicak3h5pw290wz21cdsv8pq77y9sf8aq"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/drgrib/dotmap")
+    (synopsis "Ordered, dynamically-expandable dot-access dictionary")
+    (description
+     "DotMap is a dot-access dictionary subclass that has dynamic
+hierarchy creation, can be initialized with keys, can be initialized from a
+dictionary, can be convert to a dictionary, and is ordered by insertion.")
+    (license license:expat)))
+
 (define-public python-twodict
   (package
     (name "python-twodict")
@@ -554,22 +663,51 @@ decorators, including variants of the Python standard library's
 @code{lru_cache} function decorator.")
     (license license:expat)))
 
+(define-public python-cobib
+  (package
+    (name "python-cobib")
+    (version "3.5.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "cobib" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "16nbrbvascbf6cb7yvn9q793dy8zx703pqrmk3mswib9a19mnx3n"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-beautifulsoup4
+           python-bibtexparser
+           python-pylatexenc
+           python-requests
+           python-requests-oauthlib
+           python-ruamel.yaml))
+    (native-inputs
+     (list python-future
+           python-pyte
+           python-pytest))
+    (home-page "https://gitlab.com/mrossinek/cobib")
+    (synopsis "Terminal-based bibliography management tool")
+    (description
+     "@command{cobib} is a command-line based bibliography management tool.
+It uses a plain-text database, a location-independent library, and features
+git integration, command-line support, and a curses-based TUI.")
+    (license license:expat)))
+
 (define-public python-colorful
   (package
     (name "python-colorful")
     (version "0.5.4")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (pypi-uri "colorful" version))
+       (method git-fetch)   ; no tests data in PyPi package
+       (uri (git-reference
+             (url "https://github.com/timofurrer/colorful")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1sh7g2cn1fyz2hzmzs933razdxi2bna9i1lxa790r9pdwba8m146"))))
-    (build-system python-build-system)
-    ;; FIXME: tests cannot be computed:
-    ;; "Can't perform this operation for unregistered loader type"
-    (arguments
-     `(#:tests? #f))
+        (base32 "1fcz5v8b318a3dsdha4c874jsf3wmcw3f25bv2csixclyzacli98"))))
+    (build-system pyproject-build-system)
     (native-inputs
      (list python-coverage python-flake8 python-pytest))
     (propagated-inputs
@@ -624,6 +762,67 @@ It indexes documents and provides a search interface for retrieving documents
 that best match text queries.")
     (license license:expat)))
 
+(define-public python-mdit-py-plugins
+  (package
+    (name "python-mdit-py-plugins")
+    (version "0.3.1")
+    (source (origin
+              (method git-fetch)        ;for tests
+              (uri (git-reference
+                    (url "https://github.com/executablebooks/mdit-py-plugins")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "00ybbfb6dzn9q5qnvnm8bmhd84s215ik7pcdb4r35zhwiv2ikizz"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs
+     (list python-markdown-it-py
+           python-attrs))
+    (native-inputs
+     (list python-coverage
+           python-flit-core
+           python-pytest
+           python-pytest-cov
+           python-pytest-regressions))
+    (home-page "https://github.com/executablebooks/mdit-py-plugins")
+    (synopsis "Collection of plugins for markdown-it-py")
+    (description "This package contains a collection of plugins for
+@code{markdown-it-py} like:
+@enumerate
+@item amsmath,
+@item attrs,
+@item container,
+@item definition list,
+@item dollarmath,
+@item field list,
+@item footnote,
+@item textmath, and
+@item wordcount.
+@end enumerate")
+    (license license:expat)))
+
+(define-public python-mdurl
+  (package
+    (name "python-mdurl")
+    (version "0.1.2")
+    (source
+     (origin
+       (method git-fetch)   ; no tests data in PyPi package
+       (uri (git-reference
+             (url "https://github.com/executablebooks/mdurl")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0csc777q42jzv4zgdzxmwp8xqlb92ws1jvj09m2smh4klw67q5f3"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list python-flit python-pytest))
+    (home-page "https://github.com/executablebooks/mdurl")
+    (synopsis "Markdown URL utilities")
+    (description
+     "This package implements a Python port of the JavaScript @code{mdurl}.")
+    (license license:expat)))
+
 (define-public python-mrkd
   (package
     (name "python-mrkd")
@@ -722,6 +921,24 @@ template")
 variables into the markdown template")
     (license license:expat)))
 
+(define-public python-py4j
+  (package
+    (name "python-py4j")
+    (version "0.10.9.7")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "py4j" version))
+              (sha256
+               (base32
+                "1fwdx92cdaiviradksfyygg05g1fpc3x2lf65bv5rnispcam6vhb"))))
+    (build-system python-build-system)
+    (home-page "https://www.py4j.org/")
+    (synopsis "Dynamically access arbitrary Java objects from Python")
+    (description
+     "This package enables Python programs to dynamically access arbitrary
+Java objects.")
+    (license license:bsd-3)))
+
 (define-public python-pymdown-extensions
   (package
     (name "python-pymdown-extensions")
@@ -745,6 +962,36 @@ variables into the markdown template")
 Markdown.  All extensions are found under the module namespace of pymdownx.")
     (license license:expat)))
 
+(define-public python-pint
+  (package
+    (name "python-pint")
+    (version "0.20.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Pint" version))
+              (sha256
+               (base32
+                "0rv0cbala7ibjbaf6kkcn0mdhqdbajnvlcw0f15gwzfwg10g0z1q"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-pytest
+           python-pytest-cov
+           python-pytest-mpl
+           python-pytest-subtests
+           python-setuptools-scm
+           python-sparse
+           python-dask
+           python-xarray
+           python-distributed))
+    (home-page "https://github.com/hgrecco/pint")
+    (synopsis "Physical quantities module")
+    (description
+     "Pint is a Python package to define, operate and manipulate physical
+quantities: the product of a numerical value and a unit of measurement.  It
+allows arithmetic operations between them and conversions from and to
+different units.")
+    (license license:bsd-3)))
+
 (define-public python-plotille
   (package
     (name "python-plotille")
@@ -966,7 +1213,7 @@ of a loop structure or other iterative computation.")
 (define-public python-glymur
   (package
     (name "python-glymur")
-    (version "0.10.1")
+    (version "0.12.0")
     (source
      (origin
        (method git-fetch)   ; no tests data in PyPi package
@@ -975,8 +1222,8 @@ of a loop structure or other iterative computation.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1cq9r8vzwvds1kasy5gc2rxw034jh9l43rraps1n739072pfz6qg"))))
-    (build-system python-build-system)
+        (base32 "03nny8k42yxdyw7sjv43szmg23x3rqplbaf7m0a0lpvwla1dl78i"))))
+    (build-system pyproject-build-system)
     (arguments
      (list
       #:phases
@@ -997,29 +1244,14 @@ of a loop structure or other iterative computation.")
                   "    elif libname == \"c\":\n"
                   "        path = \""
                   (search-input-file inputs "/lib/libc.so.6") "\"\n")))))
-          ;; TODO: implement as a feature of python-build-system (PEP-621,
-          ;; PEP-631, PEP-660)
-          (replace 'build
+          (add-before 'check 'disable-failing-tests
             (lambda _
-              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)
-              ;; ZIP does not support timestamps before 1980.
-              (setenv "SOURCE_DATE_EPOCH" "315532800")
-              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
-          (replace 'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((whl (car (find-files "dist" "\\.whl$"))))
-                (invoke "pip" "--no-cache-dir" "--no-input"
-                        "install" "--no-deps" "--prefix" #$output whl))))
-          (replace 'check
-            (lambda* (#:key tests? #:allow-other-keys)
-              (when tests?
-                ;; Failing test due to inability of
-                ;; ctypes.util.find_library() to determine library path,
-                ;; which is patched above.
-                (delete-file "tests/test_config.py")
-                (invoke "python" "-m" "pytest" "-vv" "tests")))))))
+              ;; Failing test due to inability of
+              ;; ctypes.util.find_library() to determine library path,
+              ;; which is patched above.
+              (delete-file "tests/test_config.py"))))))
     (native-inputs
-     (list python-pypa-build python-pytest))
+     (list python-pytest))
     (inputs
      (list openjpeg  ; glymur/lib/openjp2.py
            libtiff)) ; glymur/lib/tiff.py
@@ -1444,14 +1676,24 @@ and a list of words that are easier to remember for humans (the
 (define-public python-bitarray
   (package
     (name "python-bitarray")
-    (version "1.4.0")
+    (version "2.6.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "bitarray" version))
               (sha256
                (base32
-                "177fj6wbw5jln54wpp6plcqy2329wjkwqwvgz7022rrg3xfrq49g"))))
+                "0c4jli872nzix81n1xirnrghlq2fdsxb570d9rnfvxi1694sah44"))))
     (build-system python-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     ;; Step out of the source directory to avoid interference.
+                     (with-directory-excursion "/tmp"
+                       (invoke "python" "-c"
+                               "import bitarray; bitarray.test()"))))))))
     (home-page "https://github.com/ilanschnell/bitarray")
     (synopsis "Efficient arrays of booleans")
     (description "This package provides an object type which efficiently
@@ -1528,21 +1770,14 @@ NetCDF files can also be read and modified.  Python-HDF4 is a fork of
 (define-public python-h5netcdf
   (package
     (name "python-h5netcdf")
-    (version "1.0.1")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "h5netcdf" version))
        (sha256
-        (base32 "1b2dcgf5rwy7pb7hr4prkc5vgcw9qc2was20dmnj90lbrpx08rvp"))))
-    (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" "h5netcdf/tests")))))))
+        (base32 "0mmzfr6k55zqxxpb64gvdqisak8s1zb2r04yzkmp0wzd7dbknb4k"))))
+    (build-system pyproject-build-system)
     (native-inputs
      (list python-netcdf4
            python-pytest
@@ -1551,9 +1786,11 @@ NetCDF files can also be read and modified.  Python-HDF4 is a fork of
      (list python-h5py python-packaging))
     (home-page "https://h5netcdf.org")
     (synopsis "Python interface for the netCDF4 file-format based on h5py")
-    (description "This package provides Python interface for the netCDF4
-file-format that reads and writes local or remote HDF5 files directly via h5py
-or h5pyd, without relying on the Unidata netCDF library")
+    (description "This package provides a Python interface for the netCDF4
+file-format that reads and writes local or remote HDF5 files directly via
+@url{h5py, https://www.h5py.org/} or @url{h5pyd,
+https://github.com/HDFGroup/h5pyd}, without relying on the Unidata netCDF
+library.")
     (license license:bsd-3)))
 
 (define-public python-h5py
@@ -1619,6 +1856,25 @@ concepts.")
 approximate nearest neighbor search with Python bindings.")
     (license license:asl2.0)))
 
+(define-public python-pylatexenc
+  (package
+    (name "python-pylatexenc")
+    (version "2.10")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pylatexenc" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1ls09z47b5md71gkxcj7fd87ynpvv2walgp2w6z31p26xf2gvn1x"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/phfaist/pylatexenc")
+    (synopsis "LaTeX parser for Unicode/LaTeX conversion")
+    (description
+     "@code{python-pylatexenc} is a LaTeX parser providing LaTeX-to-Unicode and
+Unicode-to-LaTeX conversion.")
+    (license license:expat)))
+
 (define-public python-pyls-black
   (package
     (name "python-pyls-black")
@@ -1973,46 +2229,6 @@ Because only safe literals are encoded, it is safe to send serpent data to
 other machines, such as over the network.")
     (license license:expat)))
 
-(define-public python-setuptools
-  (package
-    (name "python-setuptools")
-    (version "64.0.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "setuptools" version))
-       (sha256
-        (base32
-         "1sllqf0bhsl2yilf1w0xnlz0r4yaksmwaj0ap91zdc6kgbigdjiv"))
-       (modules '((guix build utils)))
-       (snippet
-        ;; Remove included binaries which are used to build self-extracting
-        ;; installers for Windows.
-        ;; TODO: Find some way to build them ourself so we can include them.
-        '(for-each delete-file (find-files "setuptools"
-                                           "^(cli|gui).*\\.exe$")))))
-    (build-system python-build-system)
-    ;; FIXME: Tests require pytest, which itself relies on setuptools.
-    ;; One could bootstrap with an internal untested setuptools.
-    (arguments (list #:tests? #f))
-    (home-page "https://pypi.org/project/setuptools/")
-    (synopsis "Library designed to facilitate packaging Python projects")
-    (description "Setuptools is a fully-featured, stable library designed to
-facilitate packaging Python projects, where packaging includes:
-@itemize
-@item Python package and module definitions
-@item distribution package metadata
-@item test hooks
-@item project installation
-@item platform-specific details.
-@end itemize")
-    ;; TODO: setuptools now bundles the following libraries:
-    ;; packaging, pyparsing, six and appdirs. How to unbundle?
-    (license (list license:psfl         ;setuptools itself
-                   license:expat        ;six, appdirs, pyparsing
-                   license:asl2.0       ;packaging is dual ASL2/BSD-2
-                   license:bsd-2))))
-
 (define-public python-setuptools-declarative-requirements
   (package
     (name "python-setuptools-declarative-requirements")
@@ -2660,15 +2876,15 @@ standard.")
              ;; getprotobyname is called.  Thankfully there is an environment
              ;; variable to disable the greendns import, so use it:
              (setenv "EVENTLET_NO_GREENDNS" "yes")))
-         (add-after 'unpack 'delete-broken-tests
-           (lambda _
-             (delete-file "tests/greendns_test.py")
-             (delete-file "tests/socket_test.py")))
-         ;; See https://github.com/eventlet/eventlet/issues/562#issuecomment-714183009
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
-               (invoke "nosetests" "-v" "tests/")))))))
+               (invoke
+                "nosetests"
+                "-v" "tests/"
+                "-I" "greendns_test.py"
+                "-I" "socket_test.py"
+                "-e" "test_018b_http_10_keepalive_framing")))))))
     (home-page "https://eventlet.net")
     (synopsis "Concurrent networking library for Python")
     (description
@@ -2819,6 +3035,25 @@ after Andy Lester’s Perl module WWW::Mechanize.")
 audio playback capability for Python 3 on OSX, Windows, and Linux.")
     (license license:expat))) ; MIT license
 
+(define-public python-jsonalias
+  (package
+    (name "python-jsonalias")
+    (version "0.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "jsonalias" version))
+              (sha256
+               (base32
+                "0sd7c3vyvfhhpnan77ax4f0x1whjcb5iz7jhjky7kmcpaf9lvw34"))))
+    (build-system python-build-system)
+    (arguments (list #:tests? #f)) ; There are no tests.
+    (home-page "https://github.com/kevinheavey/jsonalias/")
+    (synopsis "JSON type alias for Python")
+    (description
+     "This package provides a microlibrary that defines a JSON type alias for
+Python.")
+    (license license:expat)))
+
 (define-public python-simplejson
   (package
     (name "python-simplejson")
@@ -2849,6 +3084,29 @@ the optional C extension for speedups.  Simplejson is also supported on
 Python 3.3+.")
     (license license:x11)))
 
+(define-public python-simple-rlp
+  (package
+    (name "python-simple-rlp")
+    (version "0.1.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/SamuelHaidu/simple-rlp")
+             ;; Upstream doesn't tag the git repo.
+             (commit "342ea269d84da1ddc4a7630cdebc90159261391c")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1nv92sphpkyrncak4qgj50qmgkmj4ycl2szbnv9c7ihgl5df4div"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/SamuelHaidu/simple-rlp")
+    (synopsis
+     "Python implementation of RLP (Recursive Length Prefix) encoding")
+    (description
+     "@code{simple-rlp} is a python implementation of RLP (Recursive Length \
+Prefix) - Encode and decode data structures.")
+    (license license:expat)))
 
 (define-public python-pyicu
   (package
@@ -2901,12 +3159,12 @@ Python 3.3+.")
     (propagated-inputs
      (list python-pygobject python-pycairo python-pyatspi))
     (native-inputs
-     `(("python-nose" ,python-nose)
-       ("gtk+" ,gtk+)
-       ("xvfb" ,xorg-server)
-       ("dbus" ,dbus)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gobject-introspection" ,gobject-introspection)))
+     (list python-nose
+           gtk+
+           xorg-server-for-tests
+           dbus
+           gsettings-desktop-schemas
+           gobject-introspection))
     (home-page "https://gitlab.com/dogtail/dogtail/")
     (synopsis "GUI test tool and automation framework written in Python")
     (description
@@ -2916,6 +3174,41 @@ applications. dogtail scripts are written in Python and executed like any
 other Python program.")
     (license license:gpl2+)))
 
+(define-public python-doxyqml
+  (package
+    (name "python-doxyqml")
+    (version "0.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "doxyqml" version))
+              (sha256
+               (base32
+                "1f0jjqvamly4hn7f1palvq27z6yr694rfzyxrb6g0ysbbawxkvq9"))))
+    (build-system python-build-system)
+    (home-page "http://agateau.com/projects/doxyqml")
+    (synopsis "Doxygen input filter for QML files")
+    (description
+     "This package provides a Doxygen input filter for QML files.")
+    (license license:bsd-3)))
+
+(define-public python-doxypypy
+  (package
+    (name "python-doxypypy")
+    (version "0.8.8.6")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "doxypypy" version))
+              (sha256
+               (base32
+                "06z0vbh975g42z5szbfvn9i3bif3xwr5pncqd4fvjzjkbi2p2xb2"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f))          ;no test suite
+    (home-page "https://github.com/Feneric/doxypypy")
+    (synopsis "Doxygen filter for Python")
+    (description
+     "This package provides a Doxygen filter for Python.")
+    (license license:gpl2+)))
+
 (define-public python-empy
   (package
     (name "python-empy")
@@ -2946,25 +3239,6 @@ system is highly configurable via command line options and embedded
 commands.")
     (license license:lgpl2.1+)))
 
-(define-public python-enum34
-  (package
-    (name "python-enum34")
-    (version "1.1.6")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (pypi-uri "enum34" version))
-      (sha256
-       (base32
-        "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
-    (build-system python-build-system)
-    (home-page "https://pypi.org/project/enum34/")
-    (synopsis "Backported Python 3.4 Enum")
-    (description
-     "Enum34 is the new Python stdlib enum module available in Python 3.4
-backported for previous versions of Python from 2.4 to 3.3.")
-    (license license:bsd-3)))
-
 (define-public python-parse-type
   (package
     (name "python-parse-type")
@@ -3053,6 +3327,46 @@ existing ones.")
 a certain expected condition.")
     (license license:expat)))
 
+(define-public python-pomegranate
+  (package
+    (name "python-pomegranate")
+    (version "0.14.8")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pomegranate" version))
+              (sha256
+               (base32
+                "0gb9srkbxzlkjyfizvxkw5y0bvnfcyiaxapz0hrdaba8j096b5i2"))
+              (modules '((guix build utils)))
+              ;; Delete generated Cython C files.
+              (snippet
+               '(for-each delete-file (find-files "." "\\.c$")))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      '(modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "python" "setup.py" "test")))))))
+    (propagated-inputs
+     (list python-joblib
+           python-networkx
+           python-numpy
+           python-pyyaml
+           python-scipy))
+    (native-inputs
+     (list python-cython
+           python-nose
+           python-pandas))
+    (home-page "https://pypi.python.org/pypi/pomegranate/")
+    (synopsis "Graphical models library for Python")
+    (description
+     "Pomegranate is a graphical models library for Python, implemented in
+Cython for speed.")
+    (license license:expat)))
+
 (define-public python-poyo
   (package
     (name "python-poyo")
@@ -3494,18 +3808,6 @@ with sensible defaults out of the box.")
         (base32 "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj"))))
     (arguments `())))
 
-(define-public python-click-5
-  (package (inherit python-click)
-    (name "python-click")
-    (version "5.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "click" version))
-       (sha256
-        (base32 "0njsm0wn31l21bi118g5825ma5sa3rwn7v2x4wjd7yiiahkri337"))))
-    (arguments `())))
-
 (define-public python-cligj
   (package
     (name "python-cligj")
@@ -3631,6 +3933,8 @@ compare, diff, and patch JSON and JSON-like structures in Python.")
 (define-public python-jsonschema-next
   (package
     (inherit python-jsonschema)
+    ;; XXX: Update to the latest version requires new build system - Hatch
+    ;; https://hatch.pypa.io/
     (version "4.5.1")
     (source
      (origin
@@ -3638,25 +3942,9 @@ compare, diff, and patch JSON and JSON-like structures in Python.")
        (uri (pypi-uri "jsonschema" version))
        (sha256
         (base32 "1z0x22691jva7lwfcfh377jdmlz68zhiawxzl53k631l34k8hvbw"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments python-jsonschema)
-       ((#:phases phases)
-        #~(modify-phases #$phases
-            ;; XXX: PEP 517 manual build/install procedures copied from
-            ;; python-isort.
-            (replace 'build
-              (lambda _
-                ;; ZIP does not support timestamps before 1980.
-                (setenv "SOURCE_DATE_EPOCH" "315532800")
-                (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
-            (replace 'install
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((whl (car (find-files "dist" "\\.whl$"))))
-                  (invoke "pip" "--no-cache-dir" "--no-input"
-                          "install" "--no-deps" "--prefix" #$output whl))))))))
-    (native-inputs (list python-pypa-build
-                         python-setuptools-scm
-                         python-twisted))
+    (build-system pyproject-build-system)
+    (native-inputs
+     (list python-setuptools-scm python-twisted))
     (propagated-inputs
      (list python-attrs
            python-importlib-metadata
@@ -3793,23 +4081,22 @@ memory usage and transliteration quality.")
 (define-public python-pyjwt
   (package
     (name "python-pyjwt")
-    (version "2.4.0")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "PyJWT" version))
        (sha256
         (base32
-         "1fmbcwfw1463wjzwbcgg3s16rad6kfb1mc5y7jbkp6v9ihh0hafl"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (replace 'check
-                    (lambda* (#:key tests? #:allow-other-keys)
-                      (when tests?
-                        (invoke "pytest" "-vv")))))))
+         "1z85kwr945rbzrn5wabrsmck5x8disa9wc7b3y5gci7w65z5qa39"))))
+    (build-system pyproject-build-system)
     (native-inputs
-     (list python-cryptography python-pytest))
+     (list python-coverage
+           python-cryptography
+           python-pre-commit
+           python-pytest
+           python-sphinx
+           python-sphinx-rtd-theme))
     (home-page "https://github.com/progrium/pyjwt")
     (synopsis "JSON Web Token implementation in Python")
     (description
@@ -3986,6 +4273,116 @@ e.g. filters, callbacks and errbacks can all be promises.")
      "Virtualenv is a tool to create isolated Python environments.")
     (license license:expat)))
 
+(define-public python-crossenv
+  (package
+    (name "python-crossenv")
+    (version "1.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "crossenv" version))
+       (sha256
+        (base32
+         "07rv4650n19740ixmnsf4qbxyqlgi7f5m1cy8cq0gl01q3r6hps4"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:tests? #f)) ; tests not distributed on pypi
+    (home-page "https://github.com/benfogle/virtualenv")
+    (synopsis "Cross-compiling virtualenv for Python")
+    (description "This package is a tool for cross-compiling extension
+modules.  It creates a special virtual environment such that @command{pip} or
+@file{setup.py} will cross compile packages for you, usually with no further
+work on your part.")
+    (license license:expat)))
+
+(define-public python-uc-micro-py
+  (package
+    (name "python-uc-micro-py")
+    (version "1.0.1")
+    (source (origin
+              (method git-fetch)        ;for tests
+              (uri (git-reference
+                    (url "https://github.com/tsutsu3/uc.micro-py")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "17f55gi55rg47nm88fn3f8851ph03dgykdp011lxr3j6hk18lyfv"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/tsutsu3/uc.micro-py")
+    (synopsis "Unicode data files for linkify-it-py projects")
+    (description "This package contains a micro subset of Unicode data files
+for linkify-it-py projects.")
+    (license license:expat)))
+
+(define-public python-linkify-it-py
+  (package
+    (name "python-linkify-it-py")
+    (version "2.0.0")
+    (source (origin
+              (method git-fetch)        ;for tests
+              (uri (git-reference
+                    (url "https://github.com/tsutsu3/linkify-it-py")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0fg0a1lc8xbb62y9krxcp708ll58dxcwm8i7rrwpkd5sh2229f6x"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-uc-micro-py))
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/tsutsu3/linkify-it-py")
+    (synopsis "Links recognition library with full Unicode support")
+    (description "This is Python port of
+@url{https://github.com/markdown-it/linkify-it, linkify-it}, which is a links
+recognition library with full Unicode support.  It has features like:
+@itemize
+@item Full unicode support, with @i{astral} characters
+@item International domains support
+@item Allows rules extension and custom normalizers.
+@end itemize")
+    (license license:expat)))
+
+(define-public python-markdown-it-py
+  (package
+    (name "python-markdown-it-py")
+    (version "2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "markdown-it-py" version))
+              (sha256
+               (base32
+                "1nh75i72584r70alhqc479gys04s5m5g3vq601yf2njbs7z5jzng"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;pypi source does not contains tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'build
+            (lambda _ (invoke "flit" "build")))
+          (replace 'install
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (add-installed-pythonpath inputs outputs)
+              (for-each
+               (lambda (wheel)
+                 (invoke "python" "-m" "pip" "install"
+                         wheel (string-append "--prefix=" #$output)))
+               (find-files "dist" "\\.whl$")))))))
+    (native-inputs (list python-flit))
+    (propagated-inputs
+     (list python-mdurl
+           python-typing-extensions))
+    (home-page "https://github.com/executablebooks/markdown-it-py")
+    (synopsis "Python port of markdown-it")
+    (description
+     "This is a Python port of @code{markdown-it}, and some of its associated
+plugins.  The driving design philosophy of the port has been to change as
+little of the fundamental code structure (file names, function name, etc) as
+possible.")
+    (license license:expat)))
+
 (define-public python-markupsafe
   (package
     (name "python-markupsafe")
@@ -4362,6 +4759,73 @@ accessible for novices, as well as a scripting interface offering the full
 flexibility and power of the Python language.")
     (license license:gpl3+)))
 
+(define-public python-dm-tree
+  (package
+    (name "python-dm-tree")
+    (version "0.1.7")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "dm-tree" version))
+              (sha256
+               (base32 "0apxfxgmqh22qpk92zmmf3acqkavhwxz78lnwz026a5rlnncizih"))))
+    (build-system python-build-system)
+    (inputs (list pybind11 abseil-cpp python))
+    (propagated-inputs (list python-wheel
+                             python-absl-py
+                             python-attrs
+                             python-numpy
+                             python-wrapt))
+    (arguments
+     (list #:tests? #f
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'build-shared-lib
+                 (lambda _
+                   (let* ((pybind11   #$(this-package-input "pybind11"))
+                          (python     #$(this-package-input "python"))
+                          (version    (python-version python))
+                          (abseil-cpp #$(this-package-input "abseil-cpp")))
+                     ;; Delete default cmake build.
+                     (substitute* "setup.py"
+                       (("ext_modules.*") "")
+                       (("cmdclass.*") ""))
+                     ;; Actual build phase.
+                     (mkdir-p "build/temp/tree/")
+                     (invoke
+                      "gcc" "-pthread" "-Wno-unused-result" "-Wsign-compare"
+                      "-DNDEBUG" "-g" "-fwrapv" "-O3" "-Wall"
+                      "-fno-semantic-interposition" "-fPIC"
+                      "-I" (string-append pybind11
+                                          "/lib/python" version
+                                          "/site-packages/pybind11/include")
+                      "-I" (string-append python "/include/python"
+                                          version)
+                      "-I" (string-append abseil-cpp "/include")
+                      "-c" "tree/tree.cc"
+                      "-o" "build/temp/tree/tree.o"
+                      "-fvisibility=hidden" "-g0")
+                     (mkdir-p "build/lib/tree")
+                     (invoke
+                      "g++" "-pthread" "-shared"
+                      (string-append "-Wl," "-rpath=" python "/lib")
+                      "-fno-semantic-interposition"
+                      "build/temp/tree/tree.o"
+                      "-L" (string-append python "/lib")
+                      "-L" (string-append abseil-cpp "/lib")
+                      "-l" "absl_int128"
+                      "-l" "absl_raw_hash_set"
+                      "-l" "absl_raw_logging_internal"
+                      "-l" "absl_strings"
+                      "-l" "absl_throw_delegate"
+                      "-o" "build/lib/tree/_tree.so")))))))
+    (home-page "https://github.com/deepmind/tree")
+    (synopsis "Work with nested data structures in Python")
+    (description "Tree is a python library for working with nested data
+structures.  In a way, @code{tree} generalizes the builtin @code{map} function
+which only supports flat sequences, and allows you to apply a function to each
+leaf preserving the overall structure.")
+    (license license:asl2.0)))
+
 (define-public python-docutils
   (package
     (name "python-docutils")
@@ -4421,6 +4885,31 @@ via commands such as @command{rst2man}, as well as supporting Python code.")
     ;; tests contain Python 2 syntax.
     (arguments '(#:tests? #false))))
 
+(define-public python-docx
+  (package
+    (name "python-docx")
+    (version "0.8.11")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "python-docx" version))
+              (sha256
+               (base32
+                "1i7bxghb7knlyjain101qg1jmmz2b6qj03bi3vfxhvcml0rx418i"))))
+    (build-system pyproject-build-system)
+    (native-inputs
+     (list behave
+           python-flake8
+           python-mock
+           python-pyparsing
+           python-pytest))
+    (propagated-inputs
+     (list python-lxml))
+    (home-page "https://github.com/python-openxml/python-docx/")
+    (synopsis "Python library to create and modify Microsoft Word documents")
+    (description "This Python library can be used to create and update
+Microsoft Word (.docx) documents.")
+    (license license:expat)))
+
 (define-public python-restructuredtext-lint
   (package
     (name "python-restructuredtext-lint")
@@ -4559,6 +5048,23 @@ text styles of documentation.")
     (description "This package installs Github custom lexers to Pygments.")
     (license license:bsd-3)))
 
+(define-public python-pygtrie
+  (package
+    (name "python-pygtrie")
+    (version "2.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pygtrie" version))
+              (sha256
+               (base32
+                "1qm4xdmzd4q5pc9h5gjdpr5m7lg06k8dvqnjn7d07d3fhani8d90"))))
+    (build-system pyproject-build-system)
+    (home-page "https://github.com/mina86/pygtrie")
+    (synopsis "Pure Python trie data structure implementation")
+    (description
+     "This package provides a pure Python trie data structure implementation.")
+    (license license:asl2.0)))
+
 (define-public python-bump2version
   (package
     (name "python-bump2version")
@@ -4693,7 +5199,7 @@ ecosystem, but can naturally be used also by other projects.")
 (define-public python-robotframework
   (package
     (name "python-robotframework")
-    (version "5.0")
+    (version "5.0.1")
     ;; There are no tests in the PyPI archive.
     (source
      (origin
@@ -4703,7 +5209,7 @@ ecosystem, but can naturally be used also by other projects.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0qcm36c8hachbv3bc05ky7cf63i3sj0y8dw3bwjvcln28i543f81"))
+        (base32 "0jjr71npzrm5mv16pya3m2dqaqgf6sc45yca5kfmc5lfislig5b8"))
        (patches (search-patches
                  "python-robotframework-atest.patch"
                  "python-robotframework-source-date-epoch.patch"))))
@@ -4724,13 +5230,7 @@ ecosystem, but can naturally be used also by other projects.")
               ;; directory not being '/', as is the case in the Guix build
               ;; container.
               (delete-file "atest/robot/standard_libraries/\
-operating_system/path_expansion.robot")
-              ;; FIXME: The test 'Process.Sending Signal.By default signal
-              ;; is not sent to process running in shell' fails for unknown
-              ;; reason (see:
-              ;; https://github.com/robotframework/robotframework/issues/4292).
-              (delete-file "atest/robot/standard_libraries/\
-process/sending_signal.robot")))
+operating_system/path_expansion.robot")))
           (add-before 'build 'build-and-install-doc
             (lambda* (#:key outputs #:allow-other-keys)
               (let ((doc (string-append (assoc-ref outputs "doc")
@@ -4766,7 +5266,7 @@ process/sending_signal.robot")))
                 (invoke "xvfb-run" "atest/run.py")))))))
     (native-inputs
      (list python-docutils
-           python-jsonschema
+           python-jsonschema-next
            python-invoke
            python-lxml
            python-pygments
@@ -4788,13 +5288,13 @@ process automation (RPA).")
 (define-public python-robotframework-datadriver
   (package
     (name "python-robotframework-datadriver")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "robotframework-datadriver" version))
        (sha256
-        (base32 "0qa2vry8jr49k5rbrvmkgggzsmis1wv06dp5dvwmp7afm7vjc51k"))))
+        (base32 "0mcyr3v98nvfnvffy096qp3jqslas7l8hh0j00lpi0mp12cd0qk9"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -4864,7 +5364,7 @@ utility, a static analysis tool (linter) for Robot Framework source files.")
 (define-public python-robotframework-pabot
   (package
     (name "python-robotframework-pabot")
-    (version "2.5.2")
+    (version "2.7.0")
     (source
      (origin
        ;; There are no tests in the PyPI archive.
@@ -4875,7 +5375,7 @@ utility, a static analysis tool (linter) for Robot Framework source files.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "14a8isq1f4lgfwjb84hhzg6jm7ns18dxa9bg6dy8k2ml8zl0qknk"))))
+         "0246vvyaxax0nzlrffvp9vg6mh5jmvbbm87azignf0gakjidr7nn"))))
     (build-system python-build-system)
     (arguments
      (list
@@ -6780,6 +7280,8 @@ as the original project seems to have been abandoned circa 2007.")
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))                  ; Tests try to access the network.
+    (propagated-inputs
+     (list python-six))
     (home-page "http://pagekite.net/wiki/Floss/PySocksipyChain/")
     (synopsis "Python SOCKS module with chained proxies support")
     (description
@@ -6919,33 +7421,16 @@ run simple @code{argparse} parsers from function signatures.")
               (sha256
                (base32
                 "169ixll1ncm2a2pcc86665ikjv2lrzs10p6c1w4yj55p3gk3xgh1"))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
      (list
       #:phases
       #~(modify-phases %standard-phases
-          ;; Do a manual PEP 517 style build/install procedure until the
-          ;; python-build-system overhaul is merged.
-          (replace 'build
-            (lambda _
-              ;; ZIP does not support timestamps before 1980.
-              (let ((circa-1980 (* 10 366 24 60 60)))
-                (setenv "SOURCE_DATE_EPOCH" (number->string circa-1980))
-                (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))))
           (add-before 'check 'disable-e2e-tests
             (lambda _
               ;; These tests rely on KeyboardInterrupts which do not
               ;; work in the build container.
-              (delete-file "autopage/tests/test_end_to_end.py")))
-          (replace 'check
-            (lambda* (#:key tests? #:allow-other-keys)
-              (when tests?
-                (invoke "pytest" "-vv"))))
-          (replace 'install
-            (lambda _
-              (let ((whl (car (find-files "dist" "\\.whl$"))))
-                (invoke "pip" "--no-cache-dir" "--no-input"
-                        "install" "--no-deps" "--prefix" #$output whl)))))))
+              (delete-file "autopage/tests/test_end_to_end.py"))))))
     (native-inputs
      (list python-pypa-build
            python-setuptools
@@ -7302,6 +7787,30 @@ buffer transformation, compression, and decompression functions for use in the
 tifffile, czifile, and other scientific image input/output modules.")
     (license license:bsd-3)))
 
+(define-public python-property-manager
+  (package
+    (name "python-property-manager")
+    (version "3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "property-manager" version))
+       (sha256
+        (base32 "0m3w4spr8f39xnm65naw29ncal4r453kn7ndqb63rwbsmslnvrwk"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-pytest-cov))
+    (propagated-inputs
+     (list python-verboselogs
+           python-humanfriendly
+           python-coloredlogs))
+    (home-page "https://github.com/xolox/python-property-manager")
+    (synopsis "Useful property variants for Python programming")
+    (description "The @code{property-manager} package defines several custom
+property variants for Python programming including required properties,
+writable properties, cached properties, etc.")
+    (license license:expat))) ; MIT license
+
 (define-public python-executing
   (package
     (name "python-executing")
@@ -7323,6 +7832,32 @@ tifffile, czifile, and other scientific image input/output modules.")
 currently doing, particularly the AST node being executed.")
     (license license:expat)))
 
+(define-public python-executor
+  (package
+    (name "python-executor")
+    (version "23.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "executor" version))
+       (sha256
+        (base32 "0g83yr54j0vcwhy6h7n0jsd7q0q630kwa6v9kqzlzrm9xj6c3ip1"))))
+    (build-system python-build-system)
+    (arguments
+    `(#:tests? #f)) ; TODO: tests require root/sudo
+    (propagated-inputs
+     (list python-six
+           python-property-manager
+           python-fasteners
+           python-virtualenv))
+    (home-page "https://github.com/xolox/python-executor")
+    (synopsis "Programmer friendly subprocess wrapper")
+    (description "The @code{executor} package is a simple wrapper for Python’s
+subprocess module that makes it very easy to handle subprocesses on UNIX
+systems with proper escaping of arguments and error checking currently doing,
+particularly the AST node being executed.")
+    (license license:expat))) ; MIT license
+
 (define-public python-roifile
   (package
     (name "python-roifile")
@@ -7439,13 +7974,13 @@ data, and scientific formats.")
 (define-public python-pyvips
   (package
     (name "python-pyvips")
-    (version "2.2.0")
+    (version "2.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyvips" version))
        (sha256
-        (base32 "0lq71iiic4pc8qhxr60gi141w25pjnn4vsh05d5l0fjkgjsv137b"))))
+        (base32 "1dfbwwvnnsk4g2kj1pw654z9jq3mb72l1m8ma29858jpn12vn7dm"))))
     (build-system python-build-system)
     (arguments
      (list #:phases
@@ -9503,13 +10038,13 @@ interfaces in an easy and portable manner.")
 (define-public python-networkx
   (package
     (name "python-networkx")
-    (version "2.6.2")
+    (version "2.8.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "networkx" version))
        (sha256
-        (base32 "1fqrq7gc0nn4rd4zqibw96cap75vb5nlixapkajwawp71jaz21i3"))))
+        (base32 "19h18f5j79l7kmwm5cvm75fadjgmkzw5m3pyvb9cnq0860q7faxx"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -9879,40 +10414,37 @@ SVG, EPS, PNG and terminal output.")
 (define-public python-seaborn
   (package
     (name "python-seaborn")
-    (version "0.11.2")
+    (version "0.12.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "seaborn" version))
               (sha256
                (base32
-                "1xpl3zb945sihsiwm9q1yyx84sakk1phcg0fprj6i0j0dllfjifg"))
-              (patches (search-patches "python-seaborn-kde-test.patch"
-                                       "python-seaborn-2690.patch"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'patch-more-tests
-                    (lambda _
-                      (substitute* "seaborn/tests/test_distributions.py"
-                        (("get_contour_color\\(ax\\.collections\\[0\\]\\)")
-                         "get_contour_color(ax.collections[0])")
-                        (("c\\.get_color\\(\\)") "get_contour_color(c)")
-                        (("def test_hue_ignores_cmap")
-                         "def skip_test_hue_ignores_cmap")
-                        (("def test_fill_artists")
-                         "def skip_test_fill_artists")
-                        (("def test_with_rug") "def skip_test_with_rug"))))
-                  (add-before 'check 'start-xserver
-                    (lambda _
-                      (system "Xvfb :1 &")
-                      (setenv "DISPLAY" ":1")))
-                  (replace 'check
-                    (lambda* (#:key tests? #:allow-other-keys)
-                      (when tests?
-                        (invoke "pytest" "seaborn")))))))
+                "08vvnp4ps86857imxz2l5xi2vir5xdcdp3apq4badb4b5llifgw9"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:modules '((guix build python-build-system)
+                       (guix build utils)
+                       (ice-9 match))
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'build
+                          (lambda _
+                            (invoke "python" "-m" "build" "--wheel"
+                                    "--no-isolation" ".")))
+                        (replace 'install
+                          (lambda _
+                            (match (find-files "dist" "\\.whl$")
+                              ((wheel _ ...)
+                               (invoke "python" "-m" "pip" "install"
+                                       (string-append "--prefix=" #$output)
+                                       wheel)))))
+                        (replace 'check
+                          (lambda* (#:key tests? #:allow-other-keys)
+                            (when tests?
+                              (invoke "pytest" "-vv")))))))
     (propagated-inputs (list python-pandas python-matplotlib python-numpy
                              python-scipy))
-    (native-inputs (list python-pytest xorg-server-for-tests))
+    (native-inputs (list python-flit-core python-pypa-build python-pytest))
     (home-page "https://seaborn.pydata.org/")
     (synopsis "Statistical data visualization")
     (description
@@ -9982,16 +10514,18 @@ more advanced mathematics.")
 (define-public python-bigfloat
   (package
     (name "python-bigfloat")
-    (version "0.3.0")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "bigfloat" version))
        (sha256
-        (base32 "0xd7q4l7v0f463diznjv4k9wlaks80pn9drdqmfifi7zx8qvybi6"))))
+        (base32 "1f0c1hdr39bbl5rds5r1waa1papjmjiyp0ixs64mkjiahzg6pfaq"))))
     (build-system python-build-system)
     (inputs
      (list mpfr))
+    (propagated-inputs
+     (list python-six))
     (home-page "https://github.com/mdickinson/bigfloat")
     (synopsis "Arbitrary precision floating-point arithmetic for Python")
     (description
@@ -10625,6 +11159,32 @@ file (e.g. @file{PKG-INFO}).")
 cyclomatic complexity of Python source code.")
     (license license:expat)))
 
+(define-public python-autoflake8
+  (package
+    (name "python-autoflake8")
+    (version "0.4.0")
+    (source (origin
+              (method git-fetch)        ;for tests
+              (uri (git-reference
+                    (url "https://github.com/fsouza/autoflake8")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0jx7bkslbhr24yvq60pl39faz2r6g93f1zm1gygswl0rzr5zmgnh"))))
+    (build-system pyproject-build-system)
+    (native-inputs
+     (list python-aiofiles
+           python-poetry-core
+           python-pytest
+           python-pytest-xdist))
+    (propagated-inputs (list python-pyflakes))
+    (home-page "https://github.com/fsouza/autoflake8")
+    (synopsis "Automatically fix issues reported by flake8")
+    (description "Tool to automatically fix some issues reported by
+@command{flake8}.")
+    (license license:expat)))
+
 (define-public python-flake8
   (package
     (name "python-flake8")
@@ -10986,14 +11546,22 @@ Python.")
   (package
     (inherit python-mistune)
     (name "python-mistune-next")
-    (version "2.0.0rc1")
+    (version "2.0.4")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "mistune" version))
               (sha256
                (base32
-                "1nd7iav1ixh9hlj4hxn6lmpava88d86ys8rqm30wgvr7gjlxnas5"))))
-    (native-inputs (list python-nose))))
+                "024q9l6mgd37wa25w7dhskv1m3zsj5lf0w9cfyx7l9p2adhadq4y"))))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "pytest" "-vv")))))))
+    (native-inputs (list python-pytest))))
 
 (define-public python-markdown
   (package
@@ -11222,6 +11790,23 @@ checksums.  It implement more than a hundred checksum routines.")
 blocks or callables with two context managers and two decorators.")
     (license license:expat)))
 
+(define-public python-timeout-decorator
+  (package
+    (name "python-timeout-decorator")
+    (version "0.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "timeout-decorator" version))
+              (sha256
+               (base32
+                "1mxk2qyydhzncm93z08kvj5ssxq3fr2n7pkrrji28nqwvdc2ybva"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/pnpnpn/timeout-decorator")
+    (synopsis "Timeout decorator")
+    (description "This package provides a decorator that raises an error
+when an operation takes longer than expected.")
+    (license license:expat)))
+
 (define-public python-straight-plugin
   (package
     (name "python-straight-plugin")
@@ -11894,6 +12479,23 @@ independent alignment of columns (left or right justified or centred) and
 printing of sub-tables by specifying a row range.")
     (license license:bsd-3)))
 
+(define-public python-rtf-tokenize
+  (package
+    (name "python-rtf-tokenize")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "rtf_tokenize" version))
+              (sha256
+               (base32
+                "026njb9iwznycda83bln3gfivcnzdz6vy8y86xvbsy84s28g6gaw"))))
+    (build-system python-build-system)
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/benoit-pierre/rtf_tokenize")
+    (synopsis "Simple RTF tokenizer")
+    (description "This package is a simple RTF tokenizer.")
+    (license license:gpl2+)))
+
 (define-public python-curio
   (package
     (name "python-curio")
@@ -12457,25 +13059,10 @@ domains support.")
         (uri (pypi-uri "path" version))
         (sha256
          (base32 "0lig13gxnfv98v790db1smvsbd3mnj7y8rwyiwhfi6xiqibygwms"))))
-     (build-system python-build-system)
+     (build-system pyproject-build-system)
      (arguments
-      (list
-       #:tests? #f
-       #:phases
-       #~(modify-phases %standard-phases
-           ;; XXX: PEP 517 manual build/install procedures copied from
-           ;; python-isort.
-           (replace 'build
-             (lambda _
-               ;; ZIP does not support timestamps before 1980.
-               (setenv "SOURCE_DATE_EPOCH" "315532800")
-               (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((whl (car (find-files "dist" "\\.whl$"))))
-                 (invoke "pip" "--no-cache-dir" "--no-input"
-                         "install" "--no-deps" "--prefix" #$output whl)))))))
-     (native-inputs (list python-pypa-build python-setuptools-scm))
+      (list #:tests? #f))
+     (native-inputs (list python-setuptools-scm))
      (home-page "https://github.com/jaraco/path")
      (synopsis "Object-oriented file system path manipulation library")
      (description "@code{path} (formerly @code{path.py}) implements path
@@ -12491,18 +13078,15 @@ invoked on those path objects directly.")
          (package-arguments python-path-bootstrap)
        ((#:tests? _ #f)
         (not (%current-target-system)))
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (replace 'check
-              (lambda* (#:key tests? #:allow-other-keys)
-                (when tests?
-                  ;; Do not test the myproject.toml build as it tries to pull
-                  ;; dependencies from the Internet.
-                  (invoke "pytest" "-vv" "-k"
-                          (string-append
-                           "not project "
-                           ;; This tests assumes a root user exists.
-                           "and not test_get_owner")))))))))
+       ((#:test-flags flags #~'())
+        #~(append (list "-k"
+                        (string-append
+                         ;; Do not test the myproject.toml build as it tries
+                         ;; to pull dependencies from the Internet.
+                         "not project "
+                         ;; This tests assumes a root user exists.
+                         "and not test_get_owner"))
+                  #$flags))))
     (native-inputs
      (modify-inputs (package-native-inputs python-path-bootstrap)
        (append python-appdirs
@@ -12543,27 +13127,6 @@ fakes, or doubles.  Basically, a stub is an object that returns pre-canned
 responses, rather than doing any computation.")
     (license license:bsd-3)))
 
-(define-public python-pip
-  (package
-    (name "python-pip")
-    (version "22.2.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "pip" version))
-       (sha256
-        (base32
-         "0jwac0bhfp48w4fqibf1ysrs2grksdv92hwqm7bmdw2jn2fr5l9z"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:tests? #f))          ; there are no tests in the pypi archive.
-    (home-page "https://pip.pypa.io/")
-    (synopsis "Package manager for Python software")
-    (description
-     "Pip is a package manager for Python software, that finds packages on the
-Python Package Index (PyPI).")
-    (license license:expat)))
-
 ;;; Variant used to break a dependency cycle with
 ;;; python-pytest-perf-bootstrap.
 (define-public python-pip-run-bootstrap
@@ -13648,8 +14211,8 @@ Jupyter kernels such as IJulia and IRKernel.")
                (("def test_other_output") "def _test_other_output")))))))
     (propagated-inputs
      (list python-ipykernel python-ipython-genutils python-jupyter-client
-           python-jupyter-core python-pygments python-pyqt python-pyzmq
-           python-qtpy python-traitlets))
+           python-jupyter-core python-pygments python-pyqt-without-qtwebkit
+           python-pyzmq python-qtpy python-traitlets))
     (native-inputs
      (list python-flaky python-pytest python-pytest-qt))
     (home-page "https://jupyter.org")
@@ -13951,6 +14514,46 @@ config files.")
     (home-page "https://github.com/DiffSK/configobj")
     (license license:bsd-3)))
 
+(define-public python-omegaconf
+  (package
+    (name "python-omegaconf")
+    (version "2.2.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/omry/omegaconf")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (modules '((guix build utils)))
+              (snippet #~(begin
+                           (delete-file-recursively "build_helpers/bin")
+                           (substitute* "build_helpers/build_helpers.py"
+                             (("java") "antlr4")
+                             (("\"-jar\",") "")
+                             (("str\\(build_dir / \"bin\" / \"antlr.*\"\\),") ""))))
+              (sha256
+               (base32
+                "00rw1rkjycn0jdg3jmar6jdxb1pcb21jclm5g1921s9z8f5ii5dh"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'loosen-requirements
+                 (lambda _
+                   (substitute* "requirements/base.txt"
+                     (("antlr4-python3-runtime==")
+                      "antlr4-python3-runtime>=")))))))
+    (propagated-inputs (list java-antlr4-runtime-python
+                             python-pydevd
+                             python-pyyaml))
+    (native-inputs (list icedtea antlr4 python-pytest python-pytest-mock))
+    (home-page "https://github.com/omry/omegaconf")
+    (synopsis "Flexible configuration system")
+    (description "OmegaConf is a hierarchical configuration system and
+supports merging configurations from multiple sources.  It provides a
+consistent API regardless of how the configuration was created.")
+    (license license:bsd-3)))
+
 (define-public python-configargparse
   (package
     (name "python-configargparse")
@@ -14377,7 +14980,7 @@ with a new public API, and RPython support.")
 (define-public python-hy
   (package
     (name "python-hy")
-    (version "0.20.0")
+    (version "0.25.0")
     (source
      (origin
        (method git-fetch)               ; no tests in PyPI release
@@ -14386,7 +14989,7 @@ with a new public API, and RPython support.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1g7djra9z7b0wyqyfrk2n4z3zamp2xkahv00jwdv35xmwwn09hq4"))))
+        (base32 "1am6z9m0s9svysj0wrfz069rpvbqqimphqll3912q4bvdlz6vrjp"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -14396,13 +14999,14 @@ with a new public API, and RPython support.")
              (when tests?
                (invoke "python" "-m" "pytest" "-k"
                        (string-append   ; skip some failed tests
-                        "not test_bin_hy_sys_executable"
-                        " and not test_bin_hy_circular_macro_require"
-                        " and not test_macro_from_module"))))))))
+                        "not test_sys_executable"
+                        " and not test_circular_macro_require"
+                        " and not test_macro_require"
+                        " and not test_requires_pollutes_core"))))))))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest-7.1 python-wheel))
     (propagated-inputs
-     (list python-astor python-colorama python-funcparserlib python-rply))
+     (list python-colorama python-funcparserlib))
     (home-page "https://docs.hylang.org/en/stable/")
     (synopsis "Lisp frontend to Python")
     (description
@@ -14931,7 +15535,10 @@ enhancements to optimization and data fitting problems.")
                (delete-file "tests/unit/bokeh/models/test_sources.py")
                (delete-file "tests/unit/bokeh/embed/test_bundle.py")
 
-               (invoke "pytest" "-v")))))))
+               ;; XXX: This one test transforms a gif of a red box.  It
+               ;; transforms it all right but the base64 doesn't look as
+               ;; expected, probably because of a change in pillow.
+               (invoke "pytest" "-v" "-k" "not test_transform_PIL")))))))
     (propagated-inputs
      (list node-lts
            python-jinja2
@@ -15280,8 +15887,8 @@ fast xml and html manipulation.")
        ;; whatever) so this transformation needs to be done before the tests
        ;; can be run.  Maybe we could add a build step to transform beforehand
        ;; but it could be annoying/difficult.
-       ;; We can enable tests for the Python 2 version, though, and do below.
        #:tests? #f))
+    (native-inputs (list python-setuptools-57)) ;for use_2to3 support
     (home-page "https://bitbucket.org/runeh/anyjson/")
     (synopsis
      "Wraps best available JSON implementation in a common interface")
@@ -15712,6 +16319,20 @@ way.")
               (sha256
                (base32
                 "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w"))))
+    (arguments
+     (list
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'disable-test
+           (lambda _
+             ;; See https://github.com/bmc/munkres/issues/40
+             (substitute* "test/test_munkres.py"
+               (("^def test_profit_float" m)
+                (string-append "\
+import platform
+@pytest.mark.skipif(platform.architecture()[0] == \"32bit\",
+  reason=\"Fails on 32 bit architectures\")
+" m))))))))
     (build-system python-build-system)
     (native-inputs (list python-pytest))
     (home-page "https://software.clapper.org/munkres/")
@@ -15970,6 +16591,49 @@ is made as zipfile like as possible.")
 syntax highlighting, markdown and more to the terminal.")
     (license license:expat)))
 
+(define-public python-textual
+  (package
+    (name "python-textual")
+    (version "0.1.18")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "textual" version))
+              (sha256
+               (base32
+                "08yg5a51hz1axfj5hx28hx31gq5apcj6vpkkmawmiplisa73z25j"))))
+    (build-system python-build-system)
+    (arguments
+     (let ((tests
+            ;; The release on pypi comes without tests.  We can't build
+            ;; from this checkout, though, because installation requires
+            ;; an invocation of poetry.
+            (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Textualize/textual")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0b3ycwqhp21mg9fvmadgxhgbvkwq6fd784l2xcmvy77rravrnnax")))))
+       (list #:phases
+             #~(modify-phases %standard-phases
+                 (replace 'check
+                   (lambda* (#:key tests? #:allow-other-keys)
+                     (when tests?
+                       (copy-recursively #$(file-append tests "/tests")
+                                         "tests")
+                       (invoke "python" "-m" "pytest" "-vv"))))))))
+    (propagated-inputs
+     (list python-rich python-typing-extensions))
+    (native-inputs
+     (list python-pytest))
+    (home-page "https://github.com/Textualize/textual")
+    (synopsis "Build text user interfaces in Python")
+    (description "Textual is a @acronym{TUI, Text User Interface} framework
+for Python inspired by modern web development.")
+    (license license:expat)))
+
 (define-public python-magic
   (package
     (name "python-magic")
@@ -16023,6 +16687,42 @@ modules, which are different and were developed separately, both serve
 the same purpose: to provide Python bindings for libmagic.")
     (license license:expat)))
 
+(define-public s3cmd
+  (package
+    (name "s3cmd")
+    (version "2.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/s3tools/s3cmd")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0rdgwwmmp8mdxc84bxq6k9a7v7z2qgc3df47djzs2b84gw81dglx"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'hide-wrapping
+                 (lambda _
+                   (substitute* "S3/MultiPart.py"
+                     (("sys\\.argv\\[0\\]") "\"s3cmd\""))
+                   (substitute* "s3cmd"
+                     (("optparser\\.get_prog_name\\(\\)") "\"s3cmd\"")))))))
+    (inputs
+     (list python-dateutil
+           python-magic))
+    (home-page "https://s3tools.org/s3cmd")
+    (synopsis "Command line tool for S3-compatible storage services")
+    (description
+     "S3cmd is a command line tool for uploading, retrieving and managing data
+in storage services that are compatible with the Amazon Simple Storage
+Service (S3) protocol, including S3 itself.  It supports rsync-like backup,
+GnuPG encryption, and more.  It also supports management of Amazon's
+CloudFront content delivery network.")
+    (license license:gpl2+)))
+
 (define-public python-pkgconfig
   (package
     (name "python-pkgconfig")
@@ -16296,13 +16996,13 @@ library.  It can be used to act both as a TFTP client or TFTP server.")
 (define-public python-greenlet
   (package
     (name "python-greenlet")
-    (version "1.1.2")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "greenlet" version))
-              (sha256
-               (base32
-                "0jkln5bf6rq7dbvpv7ypin3pp9jqd2jr91yyxlnfcii3msj5w3z3"))))
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "greenlet" version))
+       (sha256
+        (base32 "0rqgxp1fai0fcyv46nd1389mxvk3ccixgdkwws70xnk08ib05rj2"))))
     (build-system python-build-system)
     (home-page "https://greenlet.readthedocs.io/")
     (synopsis "Lightweight in-process concurrent programming")
@@ -16339,13 +17039,13 @@ graphviz.")
 (define-public python-gevent
   (package
     (name "python-gevent")
-    (version "21.12.0")
+    (version "22.10.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "gevent" version))
               (sha256
                (base32
-                "0kh9mmq811mzfgj60n64icybjp4ryjmfmy1vg7x92yrniibn92zl"))
+                "0ijwwm2yr7jgz8xs1rbvzj6gp7xw1pagf0i7g99b6dzffshiv80w"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -16905,12 +17605,11 @@ strings require only one extra byte in addition to the strings themselves.")
               (sha256
                (base32
                 "1n0h25gj6zd02kqyl040xpdvg4hpy1j92716sz0rg019xjqqijqb"))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
      (list
       #:phases
       #~(modify-phases %standard-phases
-          ;; XXX: PEP 517 manual build copied from python-isort.
           (add-after 'unpack 'adjust-for-older-attrs
             ;; Our older attrs package is using the 'attr' rather than 'attrs'
             ;; namespace.
@@ -16919,14 +17618,6 @@ strings require only one extra byte in addition to the strings themselves.")
               (substitute* (find-files "." "\\.py$")
                 (("from attrs\\b")
                  "from attr"))))
-          (replace 'build
-            (lambda _
-              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
-          (replace 'install
-            (lambda _
-              (let ((whl (car (find-files "dist" "\\.whl$"))))
-                (invoke "pip" "--no-cache-dir" "--no-input"
-                        "install" "--no-deps" "--prefix" #$output whl))))
           (replace 'check
             (lambda* (#:key tests? #:allow-other-keys)
               (when tests?
@@ -16944,7 +17635,6 @@ strings require only one extra byte in addition to the strings themselves.")
            python-msgpack
            python-poetry-core
            python-pymongo               ;for the bson module
-           python-pypa-build
            python-pytest
            python-pytest-xdist))
     (propagated-inputs
@@ -17229,8 +17919,10 @@ It supports TSIG authenticated messages and EDNS0.")
            (lambda _
              (substitute* "setup.py"
                (("import DNS") "")
-               (("DNS.__version__") (string-append "\"" ,version "\"")))
-             #t)))
+               (("DNS.__version__") (string-append "\"" ,version "\"")))))
+         ;; For the same reason, drop the sanity check because the library
+         ;; fails to load without /etc/resolv.conf.
+         (delete 'sanity-check))
        #:tests? #f)) ; Also skip the tests.
     (home-page "https://launchpad.net/py3dns")
     (synopsis "Python 3 DNS library")
@@ -17449,7 +18141,7 @@ characters, mouse support, and auto suggestions.")
              (setenv "HOME" "/tmp"))))))
     (propagated-inputs
      (list python-click python-future python-six))
-    (home-page "https://github.com/amperser/proselint")
+    (home-page "http://proselint.com/")
     (synopsis "Linter for prose")
     (description "@code{python-proselint} is a linter for English prose, that
 scans through a file and detects issues.")
@@ -17512,13 +18204,13 @@ as well.")
 (define-public ptpython
   (package
     (name "ptpython")
-    (version "3.0.17")
+    (version "3.0.20")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "ptpython" version))
               (sha256
                (base32
-                "1phk1grcvn456igjg8gwjjg8bf4kszddq5nd5sdlz3hslg62a7ci"))))
+                "1mjfyr5gwrs1qbizh6nki0nv6hahmg8mhhqxi1qc6pfa4znlrzga"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f)) ;there are no tests
@@ -17529,9 +18221,9 @@ as well.")
     (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
     (description
      "ptpython is a Python read-eval-print loop with IDE-like features.
-     It supports syntax highlighting, multiline editing, autocompletion, mouse,
-     color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
-     etc.")
+It supports syntax highlighting, multiline editing, autocompletion, mouse,
+color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
+etc.")
     (license license:bsd-3)))
 
 (define-public python-easyprocess
@@ -17669,13 +18361,13 @@ as well.")
 (define-public python-pyserial-asyncio
   (package
     (name "python-pyserial-asyncio")
-    (version "0.5")
+    (version "0.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyserial-asyncio" version))
        (sha256
-        (base32 "0cwd2cjz859v6jrm3y6hikfqjyhyfj5vhfjb8vvflvl6791yah8n"))))
+        (base32 "0bx3syngmq2j9mh81byzka1x4ilw8ac9mbx52zn7b7ayw0ijj0xn"))))
     (build-system python-build-system)
     (propagated-inputs (list python-pyserial))
     (home-page "https://github.com/pyserial/pyserial-asyncio")
@@ -18014,7 +18706,7 @@ without requiring an event loop, useful for creative responsive GUIs.")
 (define-public binwalk
   (package
     (name "binwalk")
-    (version "2.3.2")
+    (version "2.3.3")
     (source
      (origin
        (method git-fetch)
@@ -18023,7 +18715,13 @@ without requiring an event loop, useful for creative responsive GUIs.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01dalxw07c42ka4fqpixcacvy42h04ya909lzpmsblr9s2xdgwcm"))))
+        (base32 "0phqyqv34vhh80dgipiggs4n3iq2vfjk9ywx2c5d8g61vzgbd2g8"))
+       (modules '((guix build utils)))
+       (snippet
+        #~(begin
+            (for-each delete-file
+                      (list "testing/tests/input-vectors/firmware.zip"
+                            "testing/tests/test_firmware_zip.py"))))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -18254,13 +18952,13 @@ numbers, real numbers, mixed types and more, and comes with a shell command
 (define-public glances
   (package
   (name "glances")
-  (version "3.1.7")
+  (version "3.3.0.4")
   (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "Glances" version))
       (sha256
-        (base32 "020vb38qrb0m3sdr7xjr43cmcfxpnyg4hmb97wgxsa9zvwsjwa5x"))
+        (base32 "0klyyxqc7cbrf1i741304i3rrwan19qm2v58xmrlgqsmxac542la"))
       (modules '((guix build utils)))
       (snippet
        '(begin
@@ -18274,7 +18972,7 @@ numbers, real numbers, mixed types and more, and comes with a shell command
           #t))))
   (build-system python-build-system)
   (propagated-inputs
-   (list python-future python-psutil))
+   (list python-defusedxml python-future python-packaging python-psutil))
   (home-page "https://github.com/nicolargo/glances")
   (synopsis "Cross-platform curses-based monitoring tool")
   (description
@@ -18556,35 +19254,6 @@ working with Portable Executable (PE) files.  It makes to most information
 from the header, as well as section details and data available.")
     (license license:expat)))
 
-(define-public python-pyev
-  (package
-    (name "python-pyev")
-    (version "0.9.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "pyev" version))
-        (sha256
-         (base32
-          "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f ; no test suite
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((libev (search-input-file inputs "/lib/libev.so.4")))
-               (substitute* "setup.py"
-                 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
-                  (string-append "libev_dll_name = \"" libev "\"")))))))))
-    (inputs
-     (list libev))
-    (home-page "https://github.com/gabrielfalcao/pyev")
-    (synopsis "Python libev interface")
-    (description "Pyev provides a Python interface to libev.")
-    (license license:gpl3)))
-
 (define-public python-imagesize
   (package
     (name "python-imagesize")
@@ -18884,8 +19553,6 @@ from the header, as well as section details and data available.")
          (replace 'check
            (lambda _
              (invoke "python" "test/test_pbkdf2.py"))))))
-    (propagated-inputs
-     (list python-pycrypto))  ; optional
     (home-page "https://www.dlitz.net/software/python-pbkdf2/")
     (synopsis "Password-based key derivation")
     (description "This module implements the password-based key derivation
@@ -19241,6 +19908,27 @@ from the header, as well as section details and data available.")
      and bit flag values.")
     (license license:expat)))
 
+(define-public python-attrdict
+  (package
+    (name "python-attrdict")
+    (version "2.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "attrdict" version))
+              (sha256
+               (base32
+                "0w3vsz64j9npxfgh83hghsh161wwkrx1fxqi1533js2wnnc0dj9m"))))
+    (build-system python-build-system)
+    ;; The package is no longer maintained and tests need some work.
+    (arguments '(#:tests? #f))
+    (propagated-inputs (list python-six))
+    (home-page "https://github.com/bcj/AttrDict")
+    (synopsis "Attribute-style access dictionaries")
+    (description
+     "This package provides mapping objects whose elements can be accessed
+both as keys and as attributes.")
+    (license license:expat)))
+
 (define-public python-attrs
   (package
     (name "python-attrs")
@@ -19337,7 +20025,7 @@ from the header, as well as section details and data available.")
          (add-before 'build 'check
            (lambda _ (invoke "make" "check"))))))
     (home-page "https://liw.fi/ttystatus/")
-    (synopsis "Python library for showing progress reporting and
+    (synopsis "Python library for progress reporting and
      status updates on terminals")
     (description "@code{ttystatus} is a Python library for showing progress
      reporting and status updates on terminals, for command line programs.
@@ -19862,19 +20550,6 @@ while only declaring the test-specific fields.")
     ;; licenses.
     (license (list license:asl2.0 license:bsd-2))))
 
-;; TODO(staging): merge with python-packaging-bootstrap.
-(define-public python-packaging-next
-  (package
-    (inherit python-packaging)
-    (version "21.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "packaging" version))
-       (sha256
-        (base32
-         "1sygirdrqgv4f1ckh9nhpcw1yfidrh3qjl86wq8vk6nq4wlw8iyx"))))))
-
 (define-public python-relatorio
   (package
     (name "python-relatorio")
@@ -20317,24 +20992,29 @@ while only declaring the test-specific fields.")
 (define-public python-marshmallow
   (package
     (name "python-marshmallow")
-    (version "3.9.1")
+    (version "3.19.0")
     (source
      (origin
-      (method url-fetch)
-      (uri (pypi-uri "marshmallow" version))
-      (sha256
-       (base32
-        "0kizhh3mnhpa08wfnsv1gagy22bpxzxszgbiylkhpz1d8qvwrykk"))))
-    (build-system python-build-system)
+       (method url-fetch)
+       (uri (pypi-uri "marshmallow" version))
+       (sha256
+        (base32
+         "0y6vpq2p5841kcw2qil68la0rx9z1vmxzj3dxjv99kjhsq7jq0wh"))))
+    (build-system pyproject-build-system)
     (propagated-inputs
-     (list python-dateutil python-simplejson))
+     (list python-packaging))
     (native-inputs
-     (list python-pytest python-pytz))
+     (list python-flake8
+           python-flake8-bugbear
+           python-mypy
+           python-pre-commit
+           python-pytest
+           python-pytz
+           python-simplejson))
     (home-page "https://github.com/marshmallow-code/marshmallow")
-    (synopsis "Convert complex datatypes to and from native
-     Python datatypes")
-    (description "@code{marshmallow} provides a library for converting
-     complex datatypes to and from native Python datatypes.")
+    (synopsis "Convert complex datatypes to and from native Python datatypes")
+    (description "@code{marshmallow} provides a library for converting complex
+datatypes to and from native Python datatypes.")
     (license license:expat)))
 
 (define-public python-marshmallow-jsonapi
@@ -20370,39 +21050,70 @@ while only declaring the test-specific fields.")
 (define-public python-apispec
   (package
     (name "python-apispec")
-    (version "4.0.0")
+    (version "6.0.2")
     (source
      (origin
-      (method url-fetch)
-      (uri (pypi-uri "apispec" version))
-      (sha256
+       (method url-fetch)
+       (uri (pypi-uri "apispec" version))
+       (sha256
         (base32
-          "12n4w5zkn4drcn8izq68vmixmqvz6abviqkdn4ip0kaax3jjh3in"))))
-    (build-system python-build-system)
+         "11vqxwdxmm7qmyhdbxk4gnx37nbzmn266ah92gi4pvzd76vq0vg7"))))
+    (build-system pyproject-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (replace 'check
-                    (lambda _
-                      (invoke "pytest" "-vv"
-                              ;; Disable validation tests since they require
-                              ;; the optional 'prance' library which is not
-                              ;; yet in Guix.
-                              "-k" "not openapi_tools_validate"))))))
+     (list
+      ;; Disable validation tests since they require
+      ;; the optional 'prance' library which is not
+      ;; yet in Guix.
+      #:test-flags '(list "-k" "not openapi_tools_validate")))
     (propagated-inputs
-     (list python-pyyaml))
+     (list python-packaging))
     (native-inputs
-     (list python-pytest python-marshmallow))
+     (list python-flake8
+           python-flake8-bugbear
+           python-marshmallow
+           python-mypy
+           python-pre-commit
+           python-pytest
+           python-pyyaml))
     (home-page "https://github.com/marshmallow-code/apispec")
     (synopsis "Swagger/OpenAPI specification generator")
     (description "@code{python-apispec} is a pluggable API specification
-     generator.  It currently supports the OpenAPI specification, formerly known
-     as Swagger.")
+generator.  It currently supports the OpenAPI specification, formerly known as
+Swagger.")
+    (license license:expat)))
+
+(define-public python-apispec-webframeworks
+  (package
+    (name "python-apispec-webframeworks")
+    (version "0.5.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "apispec-webframeworks" version))
+              (sha256
+               (base32
+                "1wyw30402xq2a8icrsjmy9v43jyvawcjd85ccb2zicqlg4k5pcqd"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-apispec))
+    (native-inputs
+     (list python-bottle
+           python-flake8
+           python-flake8-bugbear
+           python-flask
+           python-mock
+           python-pre-commit
+           python-pytest
+           python-tornado
+           python-tox))
+    (home-page "https://github.com/marshmallow-code/apispec-webframeworks")
+    (synopsis "Web framework plugins for apispec")
+    (description "This package provides plugins for using @code{apispec} with
+web frameworks.")
     (license license:expat)))
 
 (define-public python-flasgger
   (package
     (name "python-flasgger")
-    (version "0.6.3")
+    (version "0.9.5")
     (source
       (origin
         (method git-fetch)
@@ -20411,29 +21122,35 @@ while only declaring the test-specific fields.")
               (commit version)))
         (file-name (git-file-name name version))
         (sha256
-          (base32 "0yydxsyjnc0clbrjqb1n7587l6cdqvwdagwxk5hkx01qwdfbkvpn"))))
-    (build-system python-build-system)
+          (base32 "0a2djgfq905a4in16068qz0ikg88dm4nbckaamhaz2v9khllr0bi"))))
+    (build-system pyproject-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (substitute* "Makefile"
-               (("flake8 flasgger --ignore=F403")
-                "flake8 flasgger --ignore=E731,F403"))
-             (invoke "py.test"))))))
+     (list
+      ;; This test fails due to missing fixtures
+      #:test-flags '(list "-k" "not test_swag")
+      #:phases
+      '(modify-phases %standard-phases
+        (add-after 'unpack 'prepare-check
+          (lambda _
+            ;; This requires a dummy package "flasgger_package" to be installed.
+            (delete-file "examples/package_example.py")
+            ;; These fail with an internal server error
+            (for-each delete-file '("examples/marshmallow_apispec.py"
+                                    "examples/validation.py")))))))
     (propagated-inputs
      (list python-flask python-pyyaml python-jsonschema python-mistune
            python-six))
     (native-inputs
-     (list python-decorator
+     (list python-apispec
+           python-apispec-webframeworks
+           python-decorator
            python-flake8
+           python-flask-jwt
            python-flask-restful
            python-flex
-           python-pytest
-           python-pytest-cov
            python-marshmallow
-           python-apispec))
+           python-pytest
+           python-pytest-cov))
     (home-page "https://github.com/rochacbruno/flasgger/")
     (synopsis "Extract Swagger specs from your Flask project")
     (description "@code{python-flasgger} allows extracting Swagger specs
@@ -21058,30 +21775,13 @@ particularly convenient for use in tests.")
        (uri (pypi-uri "tempora" version))
        (sha256
         (base32 "09wirlk5vmxlhl9rnxp7g5qz2nsd6b0gnzk5fczbz0s8lsbz386b"))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
-     (list
-      #:phases
-      #~(modify-phases %standard-phases
-          ;; XXX: PEP 517 manual build copied from python-isort.
-          (replace 'build
-            (lambda _
-              (setenv "SOURCE_DATE_EPOCH" "315532800")
-              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
-          (replace 'install
-            (lambda _
-              (let ((whl (car (find-files "dist" "\\.whl$"))))
-                (invoke "pip" "--no-cache-dir" "--no-input"
-                        "install" "--no-deps" "--prefix" #$output whl))))
-          (replace 'check
-            (lambda* (#:key tests? #:allow-other-keys)
-              (when tests?
-                ;; Do not test the myproject.toml build as it tries to pull
-                ;; dependencies from the Internet.
-                (invoke "pytest" "-k" "not project")))))))
+     ;; Do not test the myproject.toml build as it tries to pull
+     ;; dependencies from the Internet.
+     (list #:test-flags #~'("-k" "not project")))
     (native-inputs
-     (list python-pypa-build
-           python-freezegun
+     (list python-freezegun
            python-pytest
            python-pytest-black
            python-pytest-checkdocs
@@ -21368,14 +22068,14 @@ style guide, even if the original code didn't violate the style guide.")
 (define-public python-yq
   (package
     (name "python-yq")
-    (version "2.11.1")
+    (version "3.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "yq" version))
        (sha256
         (base32
-         "1q4rky0a6n4izmq7slb91a54g8swry1xrbfqxwc8lkd3hhvlxxkl"))))
+         "1wklgs3d9si475nffw9agq5kgk8bdicbsmlj4sx4kiw64ji4ma1h"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -21390,9 +22090,9 @@ style guide, even if the original code didn't violate the style guide.")
                  "/bin/jq")))
              #t)))))
     (inputs
-     (list python-argcomplete python-pyyaml python-xmltodict jq))
+     (list python-argcomplete python-pyyaml python-xmltodict python-toml jq))
     (native-inputs
-     (list python-coverage python-flake8 python-wheel))
+     (list python-coverage python-flake8 python-setuptools-scm python-wheel))
     (home-page "https://github.com/kislyuk/yq")
     (synopsis "Command-line YAML/XML processor")
     (description
@@ -21402,8 +22102,8 @@ filters can be used to process the data as it passes through.")
     (license license:asl2.0)))
 
 (define-public python-gyp
-  (let ((commit "5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f")
-        (revision "0"))
+  (let ((commit "9d09418933ea2f75cc416e5ce38d15f62acd5c9a")
+        (revision "1"))
     (package
       (name "python-gyp")
       ;; Google does not release versions,
@@ -21420,8 +22120,9 @@ filters can be used to process the data as it passes through.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0fr7nxcrk292djmxzpcjaphnsd123k31gp8jnd91vwknhq6snmv9"))))
+           "0ay99rc5msqjpjl7fy1l69f8mvn08wnh2pgr08ijdih9z88xaa5x"))))
       (build-system python-build-system)
+      (propagated-inputs (list python-six))
       (home-page "https://gyp.gsrc.io/")
       (synopsis "GYP is a Meta-Build system")
       (description
@@ -21443,13 +22144,7 @@ files, and Makefiles.")
        (file-name (git-file-name name version))
        (sha256
         (base32 "1q7ajgqjfivxqsqgnhp4lc4p6jxyh4zprcsdbpd6dw54inaf0av5"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-        (replace 'check
-          (lambda _
-            (invoke "py.test"))))))
+    (build-system pyproject-build-system)
     (native-inputs
      (list python-pytest))
     (home-page "https://github.com/Suor/whatever")
@@ -21471,13 +22166,7 @@ functions by partial application of operators.")
        (sha256
         (base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw"))
        (file-name (git-file-name name version))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "py.test"))))))
+    (build-system pyproject-build-system)
     (native-inputs
      (list python-pytest python-whatever))
     (home-page "https://github.com/Suor/funcy")
@@ -21667,60 +22356,42 @@ based on the CPython 2.7 and 3.7 parsers.")
        (file-name (git-file-name name version))
        (sha256
         (base32 "1knv353qhkl2imav3jfp6bgq47m8wkkqhq1dzmqg2sv8rsy7zgl7"))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
-     `(#:phases
-       ,#~(modify-phases %standard-phases
-            ;; Unfortunately, this doesn't seem to be enough to fix these two
-            ;; tests, but we'll patch this anyway.
-            (add-after 'unpack 'patch-shell-reference
-              (lambda _
-                (substitute* "tests/test_completion/test_completion.py"
-                  (("\"bash\"") (string-append "\"" (which "bash") "\""))
-                  (("\"/bin/bash\"")
-                   (string-append "\"" (which "bash") "\"")))))
-            (replace 'build
-              (lambda _
-                (invoke "flit" "build")))
-            (replace 'install
-              (lambda* (#:key inputs outputs #:allow-other-keys)
-                (add-installed-pythonpath inputs outputs)
-                (for-each
-                 (lambda (wheel)
-                   (format #true wheel)
-                   (invoke "python" "-m" "pip" "install"
-                           wheel (string-append "--prefix=" #$output)))
-                 (find-files "dist" "\\.whl$"))))
-            (replace 'check
-              (lambda* (#:key tests? #:allow-other-keys)
-                (when tests?
-                  (setenv "HOME" "/tmp") ; some tests need it
-
-                  ;; This is for completion tests
-                  (with-output-to-file "/tmp/.bashrc"
-                    (lambda _ (display "# dummy")))
-
-                  (setenv "GUIX_PYTHONPATH"
-                          (string-append (getcwd) ":"
-                                         (getenv "GUIX_PYTHONPATH")))
-                  (let ((disabled-tests (list "test_show_completion"
-                                              "test_install_completion")))
-                    (invoke "python" "-m" "pytest" "tests/"
-                            "-k"
-                            (string-append "not "
-                                           (string-join disabled-tests
-                                                        " and not "))))))))))
+     (list
+      #:test-flags
+      '(let ((disabled-tests (list "test_show_completion"
+                                   "test_install_completion")))
+         (list "-k" (string-append "not "
+                                   (string-join disabled-tests
+                                                " and not "))))
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Unfortunately, this doesn't seem to be enough to fix these two
+          ;; tests, but we'll patch this anyway.
+          (add-after 'unpack 'patch-shell-reference
+            (lambda _
+              (substitute* "tests/test_completion/test_completion.py"
+                (("\"bash\"") (string-append "\"" (which "bash") "\""))
+                (("\"/bin/bash\"")
+                 (string-append "\"" (which "bash") "\"")))))
+          (add-before 'check 'pre-check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (setenv "HOME" "/tmp")  ; some tests need it
+                ;; This is for completion tests
+                (with-output-to-file "/tmp/.bashrc"
+                  (lambda _ (display "# dummy")))))))))
     (propagated-inputs
      (list python-click))
     (native-inputs
      (list python-coverage python-flit python-pytest python-rich
            python-shellingham))
     (home-page "https://github.com/tiangolo/typer")
-    (synopsis
-     "Typer builds CLI based on Python type hints")
+    (synopsis "Typer builds CLI based on Python type hints")
     (description
-     "Typer is a library for building CLI applications.  It's based on
-Python 3.6+ type hints.")
+     "Typer is a library for building CLI applications.  It's based on Python
+3.6+ type hints.")
     ;; MIT license
     (license license:expat)))
 
@@ -21827,13 +22498,13 @@ Included are implementations of:
 (define-public bpython
   (package
     (name "bpython")
-    (version "0.21")
+    (version "0.23")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "bpython" version))
        (sha256
-        (base32 "11wlf12nm6ggn9512y4yqs26s8gdgpx0h9ls94k7fsjgjy4rpal8"))))
+        (base32 "0ah5giynavyh70yc0jqgmjaajv3xg5j2y7k9i3q8mi47r2mph04z"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -21942,6 +22613,25 @@ working with iterables.")
     (description "Lexer and codec to work with LaTeX code in Python.")
     (license license:expat)))
 
+(define-public python-pybloom-live
+  (package
+    (name "python-pybloom-live")
+    (version "4.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pybloom_live" version))
+              (sha256
+               (base32
+                "040i6bjqvl33j30v865shsk30s3h7f16pqwiaj5kig857dfmqm4r"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-bitarray python-xxhash))
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/joseph-fox/python-bloomfilter")
+    (synopsis "Bloom filter")
+    (description "This package provides a scalable Bloom filter implemented in
+Python.")
+    (license license:expat)))
+
 (define-public python-pybtex
   (package
     (name "python-pybtex")
@@ -22660,6 +23350,32 @@ environments.")
      "PyNamecheap is a Namecheap API client in Python.")
     (license license:expat)))
 
+(define-public python-pynixutil
+  (package
+    (name "python-pynixutil")
+    (version "0.5.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/nix-community/pynixutil")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              ;; Derivation test uses nix.
+              (modules '((guix build utils)))
+              (snippet '(delete-file "tests/test_drv.py"))
+              (sha256
+               (base32
+                "1lnspcai7mqpv73bbd8kgyw63fxwgkwvfkl09b2bl5y2g2v7np6m"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list poetry python-pytest))
+    (home-page "https://github.com/nix-community/pynixutil")
+    (synopsis "Utility functions for working with data from Nix in Python")
+    (description
+     "@code{pynixutil} provides functions for base32 encoding/decoding and
+derivation parsing, namingly @code{b32decode()}, @code{b32encode()} and
+@code{drvparse()}.")
+    (license license:expat)))
+
 (define-public python-dns-lexicon
   (package
     (name "python-dns-lexicon")
@@ -22795,14 +23511,14 @@ tool).")
 (define-public python-numcodecs
   (package
     (name "python-numcodecs")
-    (version "0.6.4")
+    (version "0.10.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "numcodecs" version))
        (sha256
         (base32
-         "0kbfr8pl3x9glsypbq8hzim003f16ml1b1cvgrh4w1sdvgal6j7g"))
+         "1i2rvm1f23dapcf6w3mj4877jzq5f24bhfa0fafbv1nr7xmqr0r2"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -22812,11 +23528,11 @@ tool).")
                                    "numcodecs/lz4.c"
                                    "numcodecs/vlen.c"
                                    "numcodecs/zstd.c"))))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
-     `(#:tests? #false ; TODO: unclear why numcodecs.* are not found
-       #:phases
-       (modify-phases %standard-phases
+     (list
+      #:phases
+      '(modify-phases %standard-phases
          (add-after 'unpack 'disable-avx2
            (lambda _
              (setenv "DISABLE_NUMCODECS_AVX2" "1")))
@@ -22833,16 +23549,18 @@ tool).")
                 "'numcodecs.lz4', libraries=['lz4'], ")
                (("'numcodecs.blosc',")
                 "'numcodecs.blosc', libraries=['blosc'], "))))
-         (replace 'check
-           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (invoke "pytest" "-vv")))))))
+         (add-before 'check 'build-extensions
+           (lambda _
+             ;; Cython extensions have to be built before running the tests.
+             (invoke "python" "setup.py" "build_ext" "--inplace"))))))
     (inputs
      (list c-blosc lz4 zlib
            `(,zstd "lib")))
     (propagated-inputs
-     (list python-numpy python-msgpack))
+     (list python-entrypoints
+           python-numpy
+           python-msgpack
+           python-typing-extensions))
     (native-inputs
      (list python-cython python-pytest python-setuptools-scm))
     (home-page "https://github.com/zarr-developers/numcodecs")
@@ -22872,14 +23590,14 @@ codecs for use in data storage and communication applications.")
 (define-public python-zarr
   (package
     (name "python-zarr")
-    (version "2.4.0")
+    (version "2.13.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zarr" version))
        (sha256
         (base32
-         "026n3sjzjv2gmwx6y72b8ij0hk42bc8zdbvfj5gdqzd4i6wj3ajk"))))
+         "135ls2q7zc98pk61a5cnh88j4hnnavcwasrswdjqyqvcc68b096v"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -22921,29 +23639,26 @@ N-dimensional arrays for Python.")
        (sha256
         (base32
          "0v7npqrg1rdm8jzw22a45c0mqrmsv05r3k88i3lhzi0pzzxca1i1"))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'check)
-         (replace 'build
-           (lambda _
-             (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version)
-             (substitute* "anndata/_metadata.py"
-               (("__version__ =.*")
-                (string-append "__version__ = \"" ,version "\"\n")))
-             ;; ZIP does not support timestamps before 1980.
-             (setenv "SOURCE_DATE_EPOCH" "315532800")
-             (invoke "flit" "build")))
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (add-installed-pythonpath inputs outputs)
-             (let ((out (assoc-ref outputs "out")))
-               (for-each (lambda (wheel)
-                           (format #true wheel)
-                           (invoke "python" "-m" "pip" "install"
-                                   wheel (string-append "--prefix=" out)))
-                         (find-files "dist" "\\.whl$"))))))))
+     (list
+      #:test-flags
+      '(list "-k" "not concatenation.rst")
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Doctests require scanpy from (gnu packages bioinformatics)
+          (add-after 'unpack 'disable-doctests
+            (lambda _
+              (substitute* "pyproject.toml"
+                (("--doctest-modules") ""))))
+          (add-before 'build 'set-version
+            (lambda _
+              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)
+              (substitute* "anndata/_metadata.py"
+                (("__version__ =.*")
+                 (string-append "__version__ = \"" #$version "\"\n")))
+              ;; ZIP does not support timestamps before 1980.
+              (setenv "SOURCE_DATE_EPOCH" "315532800"))))))
     (propagated-inputs
      (list python-h5py
            python-importlib-metadata
@@ -22952,9 +23667,14 @@ N-dimensional arrays for Python.")
            python-packaging
            python-pandas
            python-scipy
+           python-scikit-learn
            python-zarr))
     (native-inputs
-     (list python-joblib python-pytest python-toml python-flit
+     (list python-boltons
+           python-joblib
+           python-pytest
+           python-toml
+           python-flit
            python-setuptools-scm))
     (home-page "https://github.com/theislab/anndata")
     (synopsis "Annotated data for data analysis pipelines")
@@ -24235,7 +24955,7 @@ time-or-computationally-expensive properties quick and easy and works in Python
 (define-public python-folium
   (package
     (name "python-folium")
-    (version "0.12.1")
+    (version "0.13.0")
     (source
      (origin
        ;; PyPI has a ".whl" file but not a proper source release.
@@ -24246,7 +24966,7 @@ time-or-computationally-expensive properties quick and easy and works in Python
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1q05pzca3wfwgnbg03l3bagnhh348yx68w4aa91rg3g8zlviwjz1"))))
+        (base32 "00adpdi1890zzzg7ffp04hmx59igdcdpyqa129vnmwqh54b5a006"))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-branca python-jinja2 python-numpy python-requests))
@@ -25001,16 +25721,27 @@ scripts to load entry points more quickly.")
 (define-public python-funcparserlib
   (package
     (name "python-funcparserlib")
-    (version "1.0.0")
+    (version "1.0.1")
     (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "funcparserlib" version))
-       (sha256
-        (base32 "0swbqf53x7lfnczvi566s1g3nkf5mfrxz7sbpyymricz57a3vlvx"))))
-    (build-system python-build-system)
+      (origin
+        ;; Source tarball on PyPi lacks tests.
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/vlasovskikh/funcparserlib")
+              (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0dw3i4fyf3j9h1l7xfgs99fc2w2axk6xqk0sdag43k444ss4hkrc"))))
+    (build-system pyproject-build-system)
     (arguments
-     `(#:tests? #f))              ; no tests in PyPI and no setup.py in GitHub
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "python" "-m" "unittest" "discover" "-v")))))))
+    ;; ModuleNotFoundError: No module named 'poetry'
+    (native-inputs (list python-poetry-core))
     (home-page "https://github.com/vlasovskikh/funcparserlib")
     (synopsis
      "Recursive descent parsing library based on functional combinators")
@@ -25176,17 +25907,33 @@ also be usable with other GSSAPI mechanisms.")
 (define-public python-check-manifest
   (package
     (name "python-check-manifest")
-    (version "0.37")
+    (version "0.48")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "check-manifest" version))
         (sha256
          (base32
-          "0lk45ifdv2cpkl6ayfyix7jwmnxa1rha7xvb0ih5999k115wzqs4"))))
-    (build-system python-build-system)
+          "0my6ammldi8mddrbq798qxbl90qr8nlk7gzliq3v7gp7mlfmymrv"))))
+    (build-system pyproject-build-system)
+    (arguments
+     '(;; This test requires setting up a venv which does not work
+       ;; properly in the build environment.
+       #:test-flags '("-k" "not test_build_sdist_pep517_isolated")
+       #:phases
+       (modify-phases %standard-phases
+         ;; Tests use git submodule commands over the file transport, which
+         ;; has been disabled in git, see CVE-2022-39253. Enable these
+         ;; commands to allow checks to succeed.
+         (add-before 'check 'allow-git-submodule-add
+           (lambda _
+             (setenv "HOME" "/tmp")
+             (invoke "git" "config" "--global"
+                     "protocol.file.allow" "always"))))))
     (native-inputs
-     (list python-mock git))
+     (list git-minimal/fixed python-pytest))
+    (propagated-inputs
+     (list python-pypa-build python-setuptools python-tomli))
     (home-page "https://github.com/mgedmin/check-manifest")
     (synopsis "Check MANIFEST.in in a Python source package for completeness")
     (description "Python package can include a MANIFEST.in file to help with
@@ -25723,15 +26470,15 @@ library.  Only the high-level API is bound.")
 (define-public python-frozendict
   (package
     (name "python-frozendict")
-    (version "1.2")
+    (version "2.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "frozendict" version))
        (sha256
-        (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp"))))
+        (base32 "0y3zn57i1q5192f7l4w2z2zsy3rrx50g563msaq954r58s1v3d0m"))))
     (build-system python-build-system)
-    (home-page "https://github.com/slezica/python-frozendict")
+    (home-page "https://github.com/Marco-Sulla/python-frozendict")
     (synopsis "Simple immutable mapping for Python")
     (description
      "@dfn{frozendict} is an immutable wrapper around dictionaries that
@@ -25812,14 +26559,39 @@ information for your operating system.")
 (define-public python-canonicaljson
   (package
     (name "python-canonicaljson")
-    (version "1.4.0")
+    (version "1.6.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "canonicaljson" version))
        (sha256
-        (base32 "0c86g0vvzdcg3nrcsqnbzlfhpprc2i894p8i14hska56yl27d6w9"))))
+        (base32 "0j5lq191jkd483q6xzc16c9fahxf15lrv03mvah9ka3lq85pcnfa"))))
     (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'loosen-requirements
+           (lambda _
+             ;; Permit newer versions of setuptools_scm
+             (substitute* "pyproject.toml"
+               ((">= 2.0.0, <3") ">= 2.0.0"))))
+          (replace 'build
+            (lambda _
+              ;; ZIP does not support timestamps before 1980.
+              (setenv "SOURCE_DATE_EPOCH" "315532800")
+              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "pytest"))))
+          (replace 'install
+            (lambda _
+              (let ((whl (car (find-files "dist" "\\.whl$"))))
+                (invoke "pip" "--no-cache-dir" "--no-input"
+                        "install" "--no-deps" "--prefix" #$output whl)))))))
+    (native-inputs
+     (list python-pypa-build python-pytest python-setuptools python-setuptools-scm))
     (propagated-inputs
      (list python-six python-frozendict python-simplejson))
     (home-page "https://github.com/matrix-org/python-canonicaljson")
@@ -26250,17 +27022,17 @@ accessor layer.")
 (define-public pyzo
   (package
     (name "pyzo")
-    (version "4.12.3")
+    (version "4.12.4")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pyzo/pyzo.git")
+             (url "https://github.com/pyzo/pyzo")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0v6rgp52bf9za2spxx9c1yc6wmskvlsj81iw0gipjy7y8vpypgn2"))))
+         "10qqilbh7n4z2656qbr9gllvgi7xq11xcm2bv64h02jmkb7m4m6n"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -26387,6 +27159,12 @@ be necessary when using @code{cmd}.")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-queue-import
+           (lambda _
+             ;; Adjust Queue import for Python 3.  Remove for versions >=0.4.0.
+             (substitute* "tests/threadsafety.py"
+               (("from Queue import Queue")
+                "from queue import Queue"))))
          (add-before 'build 'qualify-libtidy
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((libtidy (search-input-file inputs "/lib/libtidy.so")))
@@ -26782,31 +27560,37 @@ It adds a simple and readable way to print stuff during development.")
 (define-public python-dateparser
   (package
     (name "python-dateparser")
-    (version "0.7.6")
+    (version "1.1.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "dateparser" version))
        (sha256
         (base32
-         "1ypbyqxlk7n6zibk90js3ybz37xmin3kk0i35g8c51bwqpcfyxg8"))))
-    (build-system python-build-system)
+         "19fbgq1zrwx10kljmdbs3p0y2m2xsgww20pqzw4kv6161zipsymf"))))
+    (build-system pyproject-build-system)
     (propagated-inputs
      (list python-dateutil python-pytz python-regex python-ruamel.yaml
            python-tzlocal))
     (native-inputs
-     (list python-mock python-parameterized tzdata-for-tests))
+     (list python-flake8 python-pytest python-parameterized tzdata-for-tests))
     (arguments
-     `(;; TODO: Of 23320 tests, 6 fail and 53 error.
-       #:tests? #f
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-before 'check 'set-check-environment
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "TZ" "UTC")
              (setenv "TZDIR"
                      (search-input-directory inputs
-                                             "share/zoneinfo")))))))
+                                             "share/zoneinfo"))))
+         (add-before 'check 'delete-failing-tests
+           (lambda _
+             (with-directory-excursion "tests"
+               (for-each delete-file
+                         '("test_dateparser_data_integrity.py"
+                           "test_hijri.py"
+                           "test_jalali.py"
+                           "test_language_detect.py"))))))))
     (home-page "https://github.com/scrapinghub/dateparser")
     (synopsis
      "Date parsing library designed to parse dates from HTML pages")
@@ -26942,14 +27726,14 @@ and pandoc-citeproc.")
 (define-public python-rnc2rng
   (package
     (name "python-rnc2rng")
-    (version "2.6.4")
+    (version "2.6.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "rnc2rng" version))
        (sha256
         (base32
-         "1kmp3iwxxyzjsd47j2sprd47ihhkwhb3yydih3af5bbfq0ibh1w8"))))
+         "1wbqvz2bhq2f5kqi7q2q3m9y5vs9rj970zhnjh502pvvhmbx20as"))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-rply))
@@ -27146,6 +27930,8 @@ module patches @code{asyncio} to allow nested use of @code{asyncio.run} and
          "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7"))))
     (native-inputs
      (list unzip))
+    (propagated-inputs
+     (list python-six))
     (build-system python-build-system)
     (arguments '(#:tests? #f))  ; No test suite.
     (home-page "https://www.parallelpython.com")
@@ -27687,7 +28473,7 @@ used to retry a function a given number of times.")
             libice
             soqt
             glew
-            coin3D-4))
+            coin3D))
     (home-page "https://github.com/coin3d/pivy")
     (synopsis "Python bindings to Coin3D")
     (description
@@ -27750,7 +28536,7 @@ and frame grabber interface.")
        (uri (pypi-uri "scikit-build" version))
        (sha256
         (base32 "1wx1m9vnxnnz59lyaisgyxldp313kciyd4af8lf112vb8vbjy9yk"))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
      (list
       #:phases
@@ -27761,11 +28547,6 @@ and frame grabber interface.")
                 (("^(CMAKE_DEFAULT_EXECUTABLE = ).*" _ head)
                  (format #f "~a ~s~%" head
                          (search-input-file inputs "bin/cmake"))))))
-          ;; XXX: PEP 517 manual build copied from python-isort.
-          (replace 'build
-            (lambda _
-              (setenv "SOURCE_DATE_EPOCH" "315532800")
-              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
           (replace 'check
             (lambda* (#:key tests? #:allow-other-keys)
               (when tests?
@@ -27791,31 +28572,24 @@ and frame grabber interface.")
                               ;; nondeterministically (see:
                               ;; https://github.com/scikit-build/scikit-build/issues/711).
                               "and not test_generator_cleanup "
-                              "and not test_generator_selection ")))))
-          (replace 'install
-            (lambda _
-              (let ((whl (car (find-files "dist" "\\.whl$"))))
-                (invoke "pip" "--no-cache-dir" "--no-input"
-                        "install" "--no-deps" "--prefix" #$output whl)))))))
+                              "and not test_generator_selection "))))))))
     (native-inputs
      (list cmake-minimal
            gfortran
-           git-minimal
+           git-minimal/fixed                      ;for tests
            ninja
            python-coverage
            python-cython
            python-mock
            python-packaging
            python-path
-           python-pypa-build
            python-pytest
            python-pytest-cov
            python-pytest-mock
            python-pytest-virtualenv
            python-pytest-xdist
            python-requests
-           python-setuptools-scm
-           python-wheel))
+           python-setuptools-scm))
     (propagated-inputs
      (list python-distro python-packaging python-wheel))
     (home-page "https://github.com/scikit-build/scikit-build")
@@ -27929,6 +28703,39 @@ characteristics. These measures are basically linear regressions based on the
 number of words, syllables, and sentences.")
     (license license:asl2.0)))
 
+(define-public python-readability-lxml
+  (package
+    (name "python-readability-lxml")
+    (version "0.8.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/buriy/python-readability")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "13nfy2v0pbbf62jn9qwgi489gg97hbb22q6w3f78mnvjxd2m19rh"))
+              (snippet
+               #~(begin (delete-file "readability/compat/two.py")))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "python" "-m" "pytest" "-v" "tests/")))))))
+    (propagated-inputs (list python-chardet python-cssselect python-lxml))
+    (native-inputs (list python-timeout-decorator python-pytest))
+    (home-page "http://github.com/buriy/python-readability")
+    (synopsis "HTML to text parser")
+    (description
+     "This package provides classes and function that strip gratuitous markup
+from web pages to make them easier to read.")
+    (license license:asl2.0)))
+
 (define-public python-listparser
   (package
     (name "python-listparser")
@@ -29001,9 +29808,9 @@ simple mock/record and a complete capture/replay framework.")
              (when tests?
                (invoke "pytest" "-vv")))))))
     (inputs
-     ;; libyajl is optional, but compiling with it makes faster
+     ;; yajl is optional, but compiling with it makes faster
      ;; backends available to ijson:
-     (list libyajl))
+     (list yajl))
     (native-inputs
      (list python-pytest))
     (build-system python-build-system)
@@ -29136,13 +29943,13 @@ development, testing, production]};
 (define-public python-pudb
   (package
     (name "python-pudb")
-    (version "2022.1.2")
+    (version "2022.1.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pudb" version))
               (sha256
                (base32
-                "03a7zalgdxfd2z2k6050ng087gwqgqis544n2083gdfxbf0ap0vb"))))
+                "0jk61qgacvwy6zkz1f55jawax4ggb1aawy6w3wnfkzqrkvd3ms2q"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -29153,7 +29960,7 @@ development, testing, production]};
                     (lambda* (#:key tests? #:allow-other-keys)
                       (when tests?
                         (invoke "pytest" "-vv")))))))
-    (native-inputs (list python-pytest python-pytest-mock))
+    (native-inputs (list python-pytest python-pytest-mock python-numpy))
     (propagated-inputs (list python-jedi python-pygments python-urwid
                              python-urwid-readline))
     (home-page "https://documen.tician.de/pudb/")
@@ -30130,34 +30937,17 @@ object, which can be useful if you want to force your objects into a table.")
        (uri (pypi-uri "deepmerge" version))
        (sha256
         (base32 "06hagzg8ccmjzqvszdxb52jgx5il8a1jdz41n4dpkyyjsfg7fi2b"))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
      (list
       #:phases
       #~(modify-phases %standard-phases
           (add-before 'build 'set-version
             (lambda _
-              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)
-              ;; ZIP does not support timestamps before 1980.
-              (setenv "SOURCE_DATE_EPOCH" "315532800")))
-          (replace 'build
-            (lambda _
-              (invoke "python" "-m" "build" "--wheel"
-                      "--no-isolation" ".")))
-          (replace 'check
-            (lambda* (#:key tests? #:allow-other-keys)
-              (when tests?
-                (invoke "pytest"))))
-          (replace 'install
-            (lambda _
-              (let ((whl (car (find-files "dist" "\\.whl$"))))
-                (invoke "pip" "--no-cache-dir" "--no-input"
-                        "install" "--no-deps" "--prefix" #$output whl)))))))
+              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))))))
     (native-inputs
-     (list python-pypa-build
-           python-setuptools-scm
-           python-pytest
-           python-wheel))
+     (list python-setuptools-scm
+           python-pytest))
     (home-page "https://deepmerge.readthedocs.io/en/latest/")
     (synopsis "Merge nested data structures")
     (description
@@ -30709,7 +31499,7 @@ window managers.")
 (define-public i3-autotiling
   (package
     (name "i3-autotiling")
-    (version "1.6.1")
+    (version "1.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -30718,7 +31508,7 @@ window managers.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1m8k3g83n2n1xws89dh20f3sy6753wvip9dzf6bssv2cz9ll7406"))))
+                "1nsm0gd45ys4ghlzrvjrf0lvcyhvpx58lz8gg325a762wn5a4a72"))))
     (build-system python-build-system)
     (arguments (list #:tests? #f))      ;no tests
     (native-inputs (list python-wheel))
@@ -30856,7 +31646,7 @@ platform using the ActivityPub protocol.")
 (define-public python-lief
   (package
     (name "python-lief")
-    (version "0.12.1")
+    (version "0.12.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -30865,7 +31655,7 @@ platform using the ActivityPub protocol.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1xzbh3bxy4rw1yamnx68da1v5s56ay4g081cyamv67256g0qy2i1"))))
+                "11i6hqmcjh56y554kqhl61698n9v66j2qk1c1g63mv2w07h2z661"))))
     (build-system python-build-system)
     (native-inputs (list cmake))
     (arguments
@@ -30885,6 +31675,73 @@ platform using the ActivityPub protocol.")
 and abstract ELF, PE and MachO formats.")
     (license license:asl2.0)))
 
+(define-public python-eris
+  (package
+    (name "python-eris")
+    (version "0.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "eris" version))
+              (sha256
+               (base32
+                "16wbmahmfzdzrsjbn8jzi79vhghrzvvlcgnym20q0v3p3i4x47pq"))))
+    (build-system python-build-system)
+    (propagated-inputs (list python-pycryptodome))
+    (home-page "https://codeberg.org/eris/python-eris")
+    (synopsis "Python implementation of ERIS")
+    (description
+"Python implementation of the @acronym{ERIS, Encoding for Robust Immutable
+Storage}.")
+    (license license:lgpl3+)))
+
+(define-public shrinkwrap
+  (package
+    (name "shrinkwrap")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/fzakaria/shrinkwrap")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (modules '((guix build utils)))
+              (snippet '(substitute* "pyproject.toml"
+                          (("lief = \"0\\.12\\.0\"") "lief = \"*\"")))
+              (sha256
+               (base32
+                "1f3qrygj16y767q2c7pn9j6m95ggcmj9s5cx9v92ygygly4mr3jp"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "pytest" "-v" "tests"))))
+          ;; XXX: PEP 517 manual build copied from python-isort.
+          (replace 'build
+            (lambda _
+              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
+          (replace 'install
+            (lambda _
+              (let ((whl (car (find-files "dist" "\\.whl$"))))
+                (invoke "pip" "--no-cache-dir" "--no-input"
+                        "install" "--no-deps" "--prefix" #$output whl)))))))
+    (native-inputs
+     (list python-click
+           python-poetry-core
+           python-pypa-build
+           python-pytest))
+    (inputs (list python-lief python-sh))
+    (home-page "https://github.com/fzakaria/shrinkwrap")
+    (synopsis "Emboss needed dependencies on the top level executable")
+    (description
+     "@code{shrinkwrap} is a tool which will discover all transitive dynamic
+shared objects, and lift them up to the executable referenced by absolute
+path.")
+    (license license:expat)))
+
 (define-public python-pymonad
   (package
     (name "python-pymonad")