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.scm616
1 files changed, 511 insertions, 105 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 5591210fce..a1e7ca1c0c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
 ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
@@ -118,6 +118,8 @@
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
 ;;; Copyright © 2022 drozdov <drozdov@portalenergy.tech>
+;;; Copyright © 2022 Peter Polidoro <peter@polidoro.io>
+;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1262,6 +1264,29 @@ and verifies that it matches the intended target hostname.")
 for working with bidirectional mappings in Python.")
     (license license:mpl2.0)))
 
+(define-public python-bip39
+  (package
+    (name "python-bip39")
+    (version "0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "bip39" version))
+       (sha256
+        (base32 "18m7d3gi7vj2zi0bl1z7m0nhcj6i8j9vj4vil276siagnpkv64ry"))))
+    (build-system python-build-system)
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/de-centralized-systems/python-bip39/")
+    (synopsis "Self-contained and simple BIP39 implementation in Python")
+    (description
+     "This package provides a self-contained and simple BIP39
+implementation written in Python.  It includes a @code{bip39.py} executable.
+
+BIP39 is a standardized mapping between binary data (the @emph{entropy}),
+and a list of words that are easier to remember for humans (the
+@emph{mnemonic}).")
+    (license license:expat)))
+
 (define-public python-bitarray
   (package
     (name "python-bitarray")
@@ -1349,14 +1374,14 @@ NetCDF files can also be read and modified.  Python-HDF4 is a fork of
 (define-public python-h5py
   (package
     (name "python-h5py")
-    (version "2.10.0")
+    (version "3.6.0")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "h5py" version))
       (sha256
        (base32
-        "0baipzv8n93m0dq0riyi8rfhzrjrfrfh8zqhszzp1j2xjac2fhc4"))))
+        "0afv805vqrm5071g7alwv41920nhh8kjv4m5nbia9awj9a0x4ll7"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; no test target
@@ -1364,16 +1389,7 @@ NetCDF files can also be read and modified.  Python-HDF4 is a fork of
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-hdf5-paths
           (lambda* (#:key inputs #:allow-other-keys)
-            (let ((prefix (assoc-ref inputs "hdf5")))
-              (substitute* "setup_build.py"
-                (("\\['/opt/local/lib', '/usr/local/lib'\\]")
-                 (string-append "['" prefix "/lib" "']"))
-                (("'/opt/local/include', '/usr/local/include'")
-                 (string-append "'" prefix "/include" "'")))
-              (substitute* "setup_configure.py"
-                (("\\['/usr/local/lib', '/opt/local/lib'\\]")
-                 (string-append "['" prefix "/lib" "']")))
-              #t))))))
+            (setenv "HDF5_DIR" (assoc-ref inputs "hdf5")))))))
     (propagated-inputs
      (list python-six python-numpy))
     (inputs
@@ -1388,10 +1404,21 @@ HDF5 library from Python.  The low-level interface is intended to be a
 complete wrapping of the HDF5 API, while the high-level component supports
 access to HDF5 files, datasets and groups using established Python and NumPy
 concepts.")
-    (license license:bsd-3)))
+    (license license:bsd-3)
+    (properties `((python2-variant . ,(delay python2-h5py))))))
 
 (define-public python2-h5py
-  (package-with-python2 python-h5py))
+  (let ((base (package-with-python2 (strip-python2-variant python-h5py))))
+    (package
+      (inherit base)
+      (version "2.10.0")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (pypi-uri "h5py" version))
+         (sha256
+          (base32
+           "0baipzv8n93m0dq0riyi8rfhzrjrfrfh8zqhszzp1j2xjac2fhc4")))))))
 
 (define-public python-hnswlib
   (package
@@ -3882,14 +3909,14 @@ environments and back.")
 (define-public python-pyyaml
   (package
     (name "python-pyyaml")
-    (version "5.4.1")
+    (version "6.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "PyYAML" version))
        (sha256
         (base32
-         "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0"))))
+         "18imkjacvpxfgg1lbpraqywx3j7hr5dv99d242byqvrh2jf53yv8"))))
     (build-system python-build-system)
     (inputs
      (list libyaml python-cython))
@@ -3900,10 +3927,33 @@ environments and back.")
 complete YAML 1.1 parser, Unicode support, pickle support, capable extension
 API, and sensible error messages.  PyYAML supports standard YAML tags and
 provides Python-specific tags that represent an arbitrary Python object.")
-    (license license:expat)))
+    (license license:expat)
+    (properties `((python2-variant . ,(delay python2-pyyaml))))))
+
+(define-public python-pyyaml-5
+  (package
+    (inherit python-pyyaml)
+    (version "5.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "PyYAML" version))
+       (sha256
+        (base32
+         "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0"))))))
 
 (define-public python2-pyyaml
-  (package-with-python2 python-pyyaml))
+  (let ((base (package-with-python2 (strip-python2-variant python-pyyaml))))
+    (package
+      (inherit base)
+      (version "5.4.1")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (pypi-uri "PyYAML" version))
+         (sha256
+          (base32
+           "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0")))))))
 
 (define-public python-vine
   (package
@@ -4671,7 +4721,7 @@ ecosystem, but can naturally be used also by other projects.")
 (define-public python-robotframework
   (package
     (name "python-robotframework")
-    (version "4.1.3")
+    (version "5.0")
     ;; There are no tests in the PyPI archive.
     (source
      (origin
@@ -4681,55 +4731,80 @@ ecosystem, but can naturally be used also by other projects.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0j71awmfkwk7prz82kr1zbcl3nrih3396sshrygnqlrdjmgivd3p"))
+        (base32 "0qcm36c8hachbv3bc05ky7cf63i3sj0y8dw3bwjvcln28i543f81"))
        (patches (search-patches
-                 "python-robotframework-source-date-epoch.patch"
-                 "python-robotframework-ug2html.patch"))))
+                 "python-robotframework-atest.patch"
+                 "python-robotframework-source-date-epoch.patch"))))
     (build-system python-build-system)
     (arguments
-     `(#:modules ((guix build python-build-system)
+     (list
+      #:modules '((guix build python-build-system)
                   (guix build utils)
                   (ice-9 ftw)
                   (ice-9 match)
                   (srfi srfi-26))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'build-and-install-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((doc (string-append (assoc-ref outputs "doc")
-                                       "/share/doc/robotframework")))
-               (invoke "invoke" "library-docs" "all")
-               (invoke "doc/userguide/ug2html.py" "dist") ;user guide
-               (mkdir-p doc)
-               (with-directory-excursion "dist"
-                 (define user-guide-dir
-                   (match (scandir "." (cut string-prefix?
-                                            "robotframework-userguide-" <>))
-                     ((dir) dir)
-                     (_ (error "could not find the user guide directory"))))
-                 (copy-recursively user-guide-dir doc)))))
-         (replace 'check
-           (lambda* (#:key native-inputs inputs tests?
-                     #:allow-other-keys)
-             (when tests?
-               ;; Some tests require timezone data.  Otherwise, they
-               ;; look up /etc/localtime, which doesn't exist, and
-               ;; fail with:
-               ;;
-               ;; OverflowError: mktime argument out of range
-               (setenv "TZDIR"
-                       (search-input-directory
-                        (or native-inputs inputs) "share/zoneinfo"))
-               (setenv "TZ" "Europe/Paris")
-               (invoke "python" "utest/run.py")))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'delete-problematic-tests
+            (lambda _
+              ;; Tests such as 'Tilde and username in path' rely on HOME and
+              ;; USER being set, on top of the user's /etc/passwd home
+              ;; 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")))
+          (add-before 'build 'build-and-install-doc
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((doc (string-append (assoc-ref outputs "doc")
+                                        "/share/doc/robotframework")))
+                (invoke "invoke" "library-docs" "all")
+                (invoke "doc/userguide/ug2html.py" "dist") ;user guide
+                (mkdir-p doc)
+                (with-directory-excursion "dist"
+                  (define user-guide-dir
+                    (match (scandir "." (cut string-prefix?
+                                             "robotframework-userguide-" <>))
+                      ((dir) dir)
+                      (_ (error "could not find the user guide directory"))))
+                  (copy-recursively user-guide-dir doc)))))
+          (replace 'check
+            (lambda* (#:key native-inputs inputs tests?
+                      #:allow-other-keys)
+              (when tests?
+                ;; Some tests require timezone data.  Otherwise, they
+                ;; look up /etc/localtime, which doesn't exist, and
+                ;; fail with:
+                ;;
+                ;; OverflowError: mktime argument out of range
+                (setenv "TZDIR"
+                        (search-input-directory
+                         (or native-inputs inputs) "share/zoneinfo"))
+                (setenv "TZ" "Europe/Paris")
+
+                (format #t "Running unit tests...~%")
+                (invoke "utest/run.py")
+
+                (format #t "Running acceptance tests...~%")
+                (invoke "xvfb-run" "atest/run.py")))))))
     (native-inputs
-     `(("python-docutils" ,python-docutils)
-       ("python-jsonschema" ,python-jsonschema)
-       ("python-invoke" ,python-invoke)
-       ("python-pygments" ,python-pygments)
-       ("python-rellu" ,python-rellu)
-       ("python:tk" ,python "tk")       ;used when building the HTML doc
-       ("tzdata" ,tzdata-for-tests)))
+     (list python-docutils
+           python-jsonschema
+           python-invoke
+           python-lxml
+           python-pygments
+           python-pyyaml
+           python-rellu
+           `(,python "tk")              ;used when building the HTML doc
+           python-xmlschema
+           scrot                        ;for taking screenshots
+           tzdata-for-tests
+           xvfb-run))
     (outputs '("out" "doc"))
     (home-page "https://robotframework.org")
     (synopsis "Generic automation framework")
@@ -4814,6 +4889,38 @@ data files in the CSV, XLS or XLSX formats.")
 utility, a static analysis tool (linter) for Robot Framework source files.")
       (license license:asl2.0))))
 
+(define-public python-robotframework-pabot
+  (package
+    (name "python-robotframework-pabot")
+    (version "2.5.2")
+    (source
+     (origin
+       ;; There are no tests in the PyPI archive.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mkorpela/pabot")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "14a8isq1f4lgfwjb84hhzg6jm7ns18dxa9bg6dy8k2ml8zl0qknk"))))
+    (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" "tests")))))))
+    (propagated-inputs
+     (list python-robotframework python-robotframework-stacktrace))
+    (native-inputs
+     (list python-pytest))
+    (home-page "https://pabot.org")
+    (synopsis "Parallel test runner for Robot Framework")
+    (description "Pabot is a parallel executor for Robot Framework tests.")
+    (license license:asl2.0)))
+
 (define-public python-robotframework-stacktrace
   (package
     (name "python-robotframework-stacktrace")
@@ -7250,17 +7357,17 @@ a general image processing tool.")
   (package
     (inherit python-pillow)
     (name "python-pillow-simd")
-    (version "9.0.0")
+    (version "9.0.0.post1")
     ;; The PyPI tarball does not include test files.
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/uploadcare/pillow-simd")
-             (commit version)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0pxvfyzxzgk18mhm7xh5n19s88bpwaah5cm60p4c239phspzprdb"))))
+        (base32 "1dnvsln451aw3qy2cxg2ndd5mcanf5nrhxw9l7mcam730635hdm9"))))
     (inputs
      (modify-inputs (package-inputs python-pillow)
        (prepend libraqm libimagequant)))
@@ -7561,7 +7668,17 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
               (uri (pypi-uri "PyWavelets" version))
               (sha256
                (base32
-                "13csbr6ls9q9ww53z2xwwsj0hpsz88rj2iwp623h0kmv8yq6kgbc"))))
+                "13csbr6ls9q9ww53z2xwwsj0hpsz88rj2iwp623h0kmv8yq6kgbc"))
+              (snippet
+               #~(begin
+                   (use-modules ((guix build utils)))
+                   (for-each delete-file
+                             (list
+                               "pywt/_extensions/_cwt.c"
+                               "pywt/_extensions/_dwt.c"
+                               "pywt/_extensions/_pywt.c"
+                               "pywt/_extensions/_pywt.h"
+                               "pywt/_extensions/_swt.c"))))))
     (build-system python-build-system)
     (arguments
      '(#:modules ((ice-9 ftw)
@@ -7579,7 +7696,8 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
                (with-directory-excursion (string-append cwd "/build/" libdir)
                  (invoke "pytest" "-vv"))))))))
     (native-inputs
-     (list python-matplotlib ;for tests
+     (list python-cython
+           python-matplotlib ;for tests
            python-pytest))
     (propagated-inputs
      (list python-numpy))
@@ -9811,6 +9929,58 @@ more advanced mathematics.")
 multiprecision arithmetic.")
     (license license:lgpl3+)))
 
+(define-public python-plac
+  (package
+    (name "python-plac")
+    (version "1.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "plac" version))
+       (sha256
+        (base32 "1410h6jw1ksi24kb55xzkwqzba2qqjwiga1s354bf3s5s1jdig9q"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tkinter
+           (lambda _
+             (substitute* "plac_tk.py"
+               (("from Tkinter import Tk")
+                "from tkinter import Tk")
+               (("from ScrolledText import ScrolledText")
+                "from tkinter.scrolledtext import ScrolledText")))))))
+    (native-inputs
+     `(("python-tkinter" ,python "tk")))
+    (home-page "https://github.com/ialbert/plac")
+    (synopsis "Command line arguments parser")
+    (description "This package can generate command line parameters from
+function signatures.")
+    (license license:bsd-3)))
+
+(define-public python-yte
+  (package
+    (name "python-yte")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "yte" version))
+       (sha256
+        (base32 "07hm1warpqi4ifqgkaz5sg887x4a44yhxafmpf835ywnpchg4s03"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-HOME
+           (lambda _ (setenv "HOME" "/tmp"))))))
+    (propagated-inputs (list python-plac python-pyyaml))
+    (home-page "https://github.com/koesterlab/yte")
+    (synopsis "YAML template engine with Python expressions")
+    (description
+     "This package provides a YAML template engine with Python expressions.")
+    (license license:expat)))
+
 (define-public python-sympy
   (package
     (name "python-sympy")
@@ -10677,6 +10847,34 @@ lints.")
 TODO notes checker plugin for flake8.")
     (license license:expat)))
 
+(define-public python-flake8-isort
+  (package
+    (name "python-flake8-isort")
+    (version "4.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "flake8-isort" version))
+        (sha256
+          (base32 "05r7z0j9rqgy0a9261bhisairrz6w8hy5hy5kf2mhvhfnx53056q"))))
+    (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")))))))
+    (propagated-inputs (list python-flake8 python-isort python-testfixtures))
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/gforcada/flake8-isort")
+    (synopsis "Flake8 plugin integrating isort")
+    (description "This package provides a flake8 plugin that integrates isort,
+extending flake8 so that it can warn about badly sorted Python import
+directives.")
+    (license license:gpl2+)))
+
 (define-public python-autoflake
   (package
     (name "python-autoflake")
@@ -10903,6 +11101,25 @@ output.")
     (description "This package contains a list of Python Standard Libraries.")
     (license license:expat)))
 
+(define-public python-stopit
+  (package
+    (name "python-stopit")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "stopit" version))
+       (sha256
+        (base32 "0vcrcvky249q4rbgmwf18mwmnypfk8jpn4h6knyjf86r7xc9rwzp"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ;there are none
+    (home-page "https://pypi.python.org/pypi/stopit")
+    (synopsis "Timeout control decorator and context managers")
+    (description
+     "Raise asynchronous exceptions in other threads, control the timeout of
+blocks or callables with two context managers and two decorators.")
+    (license license:expat)))
+
 (define-public python-straight-plugin
   (package
     (name "python-straight-plugin")
@@ -11231,6 +11448,17 @@ reading and writing MessagePack data.")
     (home-page "https://pypi.org/project/msgpack/")
     (license license:asl2.0)))
 
+(define-public python-msgpack-1.0.2
+  (package
+    (inherit python-msgpack)
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "msgpack" version))
+              (sha256
+               (base32
+                "1109s2yynrahwi64ikax68hx0mbclz8p35afmpphw5dwynb49q7s"))))))
+
 ;; This msgpack library's name changed from "python-msgpack" to "msgpack" with
 ;; release 0.5. Some packages like borg still call it by the old name for now.
 ;; <https://bugs.gnu.org/30662>
@@ -14080,13 +14308,12 @@ text.")
 (define-public python-moto
   (package
     (name "python-moto")
-    (version "2.2.12")
+    (version "3.1.4")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "moto" version))
               (sha256
-               (base32
-                "0pvay0jp119lzzwf5qj5h6311271yq0w2i6344ds20grpf6g6gz8"))))
+               (base32 "0dfnad1f9d5ybabs69dzc7x357z1r4jbhrhgw57gyic1qnmcw864"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -14109,7 +14336,9 @@ text.")
                         ;; These tests require Docker.
                         " and not test_terminate_job"
                         " and not test_invoke_function_from_sqs_exception"
-                        " and not test_rotate_secret_lambda_invocations"
+                        " and not test_create_custom_lambda_resource__verify_cfnresponse_failed"
+                        " and not test_lambda_function"
+
                         ;; These tests also require the network.
                         " and not test_put_record_batch_http_destination"
                         " and not test_put_record_http_destination"
@@ -14120,30 +14349,28 @@ text.")
      (list python-flask
            python-flask-cors
            python-freezegun
-           python-parameterized
+           python-graphql-core
            python-pytest
            python-sure))
     (inputs
      (list bash-minimal))
     (propagated-inputs
      (list python-aws-xray-sdk
-           python-boto
            python-boto3
            python-botocore
            python-cfn-lint
            python-cryptography
            python-dateutil
            python-docker
-           python-idna
+           python-importlib-metadata
            python-jinja2
            python-jose
            python-jsondiff
-           python-mock
+           python-markupsafe
            python-pytz
            python-pyyaml
            python-requests
            python-responses
-           python-six
            python-sshpubkeys
            python-werkzeug
            python-xmltodict))
@@ -14312,14 +14539,14 @@ servers.")
 (define-public python-jmespath
   (package
    (name "python-jmespath")
-   (version "0.9.4")
+   (version "1.0.0")
    (source
     (origin
      (method url-fetch)
      (uri (pypi-uri "jmespath" version))
      (sha256
       (base32
-       "0k0765x1mybcrzajh3hiqkl8sy9hs0bmn4900frxy0j3ykvaxqmx"))))
+       "0pmzfi230zfgiq2rz896kbb9f7mp0lnrjdl6x1npvxfixn0f5454"))))
    (build-system python-build-system)
    (native-inputs
     (list python-nose))
@@ -14462,14 +14689,14 @@ This software is unmaintained, and new projects should use @code{boto3} instead.
   ;; are compatible.
   (package
     (name "python-botocore")
-    (version "1.22.11")
+    (version "1.24.35")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "botocore" version))
        (sha256
         (base32
-         "1z7g2scyzvfq4yj9b4w911k7802ry1v6lqfnwq12l0ak7ywmsvrh"))))
+         "0rv8mvhq5s373zdjs2yb45hzvqcqdh2lp2rbb21jjc8ciwnl5d9n"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: Many tests are failing.
@@ -14488,7 +14715,7 @@ interface to the Amazon Web Services (AWS) API.")
 (define-public python-boto3
   (package
     (name "python-boto3")
-    (version "1.19.11")
+    (version "1.21.35")
     (home-page "https://github.com/boto/boto3")
     (source (origin
               (method git-fetch)
@@ -14496,14 +14723,18 @@ interface to the Amazon Web Services (AWS) API.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1wv0ci2z5ywvm63dh4mp64vqyyvkm4qxc8dxv8ncrqiiphpgr9aq"))))
+                "1kdyf238rpfldnpzs0rdh3nhjn6hwfym4faskyhzlgzkf1smmbg1"))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'delete-network-tests
            ;; Deleting integration tests because they are trying to connect to AWS.
            (lambda _
-             (delete-file-recursively "tests/integration"))))))
+             (delete-file-recursively "tests/integration")))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "pytest" "-v")))))))
     (build-system python-build-system)
     (native-inputs
      (list python-nose python-mock python-pytest))
@@ -18460,14 +18691,14 @@ multitouch applications.")
 (define-public python-pycountry
   (package
     (name "python-pycountry")
-    (version "18.5.26")
+    (version "22.3.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pycountry" version))
        (sha256
         (base32
-         "15q9j047s3yc9cfcxq1ch8b71f81na44cr6dydd5gxk0ki9a4akz"))))
+         "0ihnkh86zz01vi46gcwgq6h71jrpj7hq71zi13c98n2qdhj3l5mj"))))
     (build-system python-build-system)
     (home-page "https://bitbucket.org/flyingcircus/pycountry")
     (synopsis "ISO databases for languages, countries, currencies, etc.")
@@ -21898,15 +22129,15 @@ working with iterables.")
 (define-public python-latexcodec
   (package
     (name "python-latexcodec")
-    (version "1.0.7")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "latexcodec" version))
        (sha256
-        (base32 "0wnp3yqcgx0rpy8dz51vh75lbp2qif67da19zi7m3ca98n887hgb"))))
+        (base32 "16pynfnn8y8xp55yp06i721fccv5dlx9ba6k5bzcwq9j6wf5b8ia"))))
     (build-system python-build-system)
-    (inputs
+    (propagated-inputs
      (list python-six))
     (home-page "https://readthedocs.org/projects/latexcodec/")
     (synopsis "Work with LaTeX code in Python")
@@ -21916,17 +22147,17 @@ working with iterables.")
 (define-public python-pybtex
   (package
     (name "python-pybtex")
-    (version "0.22.2")
+    (version "0.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pybtex" version))
        (sha256
-        (base32 "070wfcmxrd7xg1si421mi9150gmx2qwx431nwf69sq3hhmgnx080"))))
+        (base32 "0ma7sc10hk6caq5zghbk865vrlaynz7x5z630z0facqpnqssx3l1"))))
     (build-system python-build-system)
     (native-inputs
-     (list python-nose))
-    (inputs
+     (list python-pytest))
+    (propagated-inputs
      (list python-latexcodec python-pyyaml python-six))
     (arguments
      (list
@@ -21934,7 +22165,7 @@ working with iterables.")
                    (replace 'check
                      (lambda* (#:key tests? #:allow-other-keys)
                        (when tests?
-                         (invoke "nosetests")))))))
+                         (invoke "pytest")))))))
     (home-page "https://pybtex.org/")
     (synopsis "BibTeX-compatible bibliography processor")
     (description "Pybtex is a BibTeX-compatible bibliography processor written
@@ -22337,7 +22568,7 @@ user-space file systems in Python.")
 (define-public pybind11
   (package
     (name "pybind11")
-    (version "2.6.2")
+    (version "2.8.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -22345,7 +22576,7 @@ user-space file systems in Python.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "1lsacpawl2gb5qlh0cawj9swsyfbwhzhwiv6553a7lsigdbadqpy"))
+                "10hrkrh78sk7k0ydw1ghmp7gvpwmkby0l2s0kf2iaj9sz0vijkhs"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (native-inputs
@@ -22869,7 +23100,7 @@ N-dimensional arrays for Python.")
 (define-public python-anndata
   (package
     (name "python-anndata")
-    (version "0.7.8")
+    (version "0.8.0")
     (source
      (origin
        ;; The tarball from PyPi doesn't include tests.
@@ -22880,18 +23111,12 @@ N-dimensional arrays for Python.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1rrr9xfdaf00ixj5gyym75bl78gkaj55yfw3wjhvx0pdwqpwp9py"))))
+         "0v7npqrg1rdm8jzw22a45c0mqrmsv05r3k88i3lhzi0pzzxca1i1"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (delete 'check)
-         (add-before 'build 'relax-dependency-requirements
-           (lambda _
-             ;; We need to upgrade python-pandas to avoid
-             ;; https://github.com/pandas-dev/pandas/issues/35446
-             (substitute* "pyproject.toml"
-               (("pandas>=1.1.1") "pandas>=1.0.5"))))
          (replace 'build
            (lambda _
              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version)
@@ -28188,13 +28413,13 @@ systems in Python.")
 (define-public python-dotenv
   (package
     (name "python-dotenv")
-    (version "0.19.2")
+    (version "0.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-dotenv" version))
        (sha256
-        (base32 "0pv5ygpr6syc6zkw21in4ysqs3k7qaxk9m1g5pzlafwm3silkpm5"))))
+        (base32 "13s9imfd0k4d7b1qy5wfqzw5vyj6rhmcrccsdz1l4g39b55b1qxp"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -28212,7 +28437,7 @@ systems in Python.")
      (list python-click))
     (native-inputs
      (list python-mock python-pytest python-sh))
-    (home-page "https://github.com/theskumar/python-dotenv")
+    (home-page "https://saurabh-kumar.com/python-dotenv/")
     (synopsis "Setup environment variables according to .env files")
     (description
      "This package provides the @code{python-dotenv} Python module to read
@@ -29095,6 +29320,42 @@ multipurpose analysis in Python.")
 static types.")
     (license license:asl2.0)))
 
+(define-public python-psycopg2-binary
+  (package
+    (name "python-psycopg2-binary")
+    (version "2.9.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "psycopg2-binary" version))
+              (sha256
+               (base32
+                "0kpaxg3lg5wg5ww5kxmzi2z2d7arsx13ci915d8a2pf17lqza7bn"))))
+    (build-system python-build-system)
+    (inputs (list postgresql))
+    (arguments
+     ;; Tests are disable because they need a live instance of PostgreSQL.
+     '(#:tests? #f))
+    (home-page "https://psycopg.org/")
+    (synopsis "PostgreSQL database adapter for Python")
+    (description
+     "Psycopg is a PostgreSQL database adapter for the Python programming
+language.  Its main features are the complete implementation of the Python DB
+API 2.0 specification and the thread safety (several threads can share the
+same connection).  It was designed for heavily multi-threaded applications
+that create and destroy lots of cursors and make a large number of concurrent
+@code{INSERT}s or @code{UPDATE}s.
+
+Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in
+being both efficient and secure.  It features client-side and
+server-side cursors, asynchronous communication and notifications,
+@code{COPY TO}/@code{COPY FROM} support.  Many Python types are supported
+out-of-the-box and adapted to matching PostgreSQL data types;
+adaptation can be extended and customized thanks to a flexible objects
+adaptation system.
+
+Psycopg 2 is both Unicode and Python 3 friendly.")
+    (license license:lgpl3+)))
+
 (define-public python-pyfuse3
   (package
     (name "python-pyfuse3")
@@ -29227,3 +29488,148 @@ writing STL files.  It supports both the text and binary forms of STL.")
     (description
      "This package provides a streaming multipart parser for Python.")
     (license license:asl2.0)))
+
+(define-public python-aiopg
+  (package
+    (name "python-aiopg")
+    (version "1.3.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "aiopg" version))
+              (sha256
+               (base32
+                "1mwmypsfzh8adjbyvf7kqv9h3k1kf5ykhi1g3ahw4wqdxaj6nz2l"))))
+    (build-system python-build-system)
+    (native-inputs (list python-sqlalchemy))
+    (propagated-inputs (list python-async-timeout python-psycopg2-binary))
+    (home-page "https://aiopg.readthedocs.io")
+    (synopsis "Postgres integration with asyncio")
+    (description
+     "aiopg is a library for accessing a PostgreSQL
+database from the asyncio (PEP-3156/tulip) framework.  It wraps
+asynchronous features of the Psycopg database driver.")
+    (license license:bsd-3)))
+
+(define-public python-verspec
+  (package
+    (name "python-verspec")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "verspec" version))
+              (sha256
+               (base32
+                "07n06wv85fm4vl1ird2mja0823js3x322wgs9gdnq1djjyk4ql64"))))
+    (build-system python-build-system)
+    (native-inputs (list python-coverage python-flake8 python-mypy
+                         python-pretend python-pytest))
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+                      (when tests?
+                        (add-installed-pythonpath inputs outputs)
+                        (invoke "touch" "test/__init__.py")
+                        (invoke "pytest")))))))
+    (home-page "https://github.com/jimporter/verspec")
+    (synopsis "Flexible version handling for Python")
+    (description
+     "This Python library handles software versions and specifiers.  It is
+adapted from the @code{packaging} package.")
+    (license (list license:bsd-2 license:asl2.0))))
+
+(define-public python-shtab
+  (package
+    (name "python-shtab")
+    (version "1.5.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "shtab" version))
+        (sha256
+          (base32 "127mymfm7r0hddk2vknqq34fj6dirj6ip990i3g4isx0lsd7pnsc"))))
+    (build-system python-build-system)
+    (native-inputs
+      (list bash
+            python-pytest
+            python-pytest-cov
+            python-pytest-timeout
+            python-setuptools-scm
+            python-wheel))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace
+             'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest")))))))
+    (home-page "https://github.com/iterative/shtab")
+    (synopsis "Automagic shell tab completion for Python CLI applications")
+    (description
+      "This package automatically generates shell tab completion scripts for
+Python CLI apps.")
+    (license license:asl2.0)))
+
+(define-public python-sre-yield
+  (package
+    (name "python-sre-yield")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sre_yield" version))
+       (sha256
+        (base32
+         "12kv3mvdr22g2v9wfr5aabh1f58s817dbh8mrlfzxzxs7hm1lkz9"))))
+    (build-system python-build-system)
+    (native-inputs (list python-nose))
+    (home-page "https://github.com/google/sre_yield")
+    (synopsis "Expands a regular expression to its possible matches")
+    (description
+     "The goal of sre_yield is to efficiently generate all values that can
+match a given regular expression, or count possible matches efficiently. It
+uses the parsed regular expression, so you get a much more accurate result
+than trying to just split strings.")
+    (license license:asl2.0)))
+
+(define-public python-hypy-utils
+  (package
+    (name "python-hypy-utils")
+    (version "1.0.6")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "hypy_utils" version))
+              (sha256
+               (base32
+                "05csk0x8ivavq88x457cq5hwjcdirfbkzj7bbg5qgnpnf2dxxhiw"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/hykilpikonna/HyPyUtils")
+    (synopsis "Python utility functions for HyDEV")
+    (description "This module provides Python utility functions for modifying
+and setting the color of terminal output, via HyDEV.")
+    (license license:expat)))
+
+(define-public python-mike
+  (package
+    (name "python-mike")
+    (version "1.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "mike" version))
+              (sha256
+               (base32
+                "0yxp816x7s948xsd0fifvq9shg01xdxlifd9rzf5y2rd9iwz3hsn"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-coverage python-flake8 python-shtab))
+    (propagated-inputs
+     (list python-jinja2 python-mkdocs python-pyyaml python-verspec))
+    (home-page "https://github.com/jimporter/mike")
+    (synopsis "Manage multiple versions of MkDocs-powered documentation")
+    (description
+     "This package provides a Python utility to easily deploy multiple
+versions of MkDocs-powered docs to a Git branch.  It is suitable for deploying
+to Github via gh-pages.")
+    (license license:bsd-3)))