Subject: Re: [bug#51222] [PATCH 0/25] Package python-pantalaimon

From: Lars-Dominik Braun <[email-masked]>
Date: Sat, 16 Oct 2021 17:42:28 +0200

Hi Sébastien,

thanks for your contribution!

> This patchset packages the pantalaimon E2EE proxy for Matrix clients.
> It's the first time I'm sending a full-fledged patchset, and all
> comments are super welcome!
I was going to package python-matrix-nio anyway, so I picked up this
patchset and made some modifications:

- Removed python2-atomicwrites-1.4 (we’re trying to get rid of Python 2).
- Moved some matrix-related packages to gnu/packages/matrix.scm, which seems more appropriate. YMMV.
- Renamed python-pantalaimon to pantalaimon, because it’s an application, not a library.
- Upgraded python-olm to inherit from libolm.
- Updated the hash for python-pycryptodomex, because it inherits from python-pycryptodome and fails to build otherwise.

See attachments for a v2. Does this look good to you?

Cheers,
Lars

PS: Could you please add new packages at the bottom of a file? I feel
adding them at the top makes rebasing very difficult. 
>From 873a54cd6239f1ca2227c0edd3888baae241e755 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:12 +0900
Subject: [PATCH v2 01/26] gnu: Add python-hypothesis-6.23.

* gnu/packages/check.scm (python-hypothesis-6.23): New variable.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/check.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 4701d61a9e..1f9cc26913 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -2154,6 +2154,17 @@ (define-public python-hypothesis-5.23
                 "0sy1v6nyxg4rjcf3rlr8nalb7wqd9nccpb2lzkchbj5an13ysf1h"))))
     (home-page "https://github.com/HypothesisWorks/hypothesis")))
 
+(define-public python-hypothesis-6.23
+  (package
+    (inherit python-hypothesis)
+    (version "6.23.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "hypothesis" version))
+              (sha256
+               (base32
+                "0lqhfrqsd81apchz93pdqfn85kx0p790w8hhd9qq85692rwja6xp"))))))
+
 ;; This is the last version of Hypothesis that supports Python 2.
 (define-public python2-hypothesis
   (let ((hypothesis (package-with-python2
-- 
2.32.0

>From aa0c48ec37eb1fd09d0a5f4506e51ba45972ded5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:13 +0900
Subject: [PATCH v2 02/26] gnu: python-peewee: Update to 3.14.4.

* gnu/packages/databases.scm (python-peewee): Update to 3.14.4.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/databases.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 4869e1ced3..0da6c2d1be 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -2586,13 +2586,13 @@ (define-public libpqxx
 (define-public python-peewee
   (package
     (name "python-peewee")
-    (version "3.14.0")
+    (version "3.14.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "peewee" version))
        (sha256
-        (base32 "1yl49gxrg0c2x3n3r60z3lixw9am8b61s0477l9vjabhhx1yziar"))))
+        (base32 "18jidir2wid0cp8a61m9vf9mf0pdvm6nzspc8bfwdbifghr6ndcy"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))                    ; fails to import test data
-- 
2.32.0

>From 7f37a52092915060d840cf37777d1707634635ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:14 +0900
Subject: [PATCH v2 03/26] gnu: python-pycryptodome: Update to 3.11.0.

* gnu/packages/python-crypto.scm (python-pycryptodome): Update to 3.11.0.
(python-pycryptodomex)[source]: Update hash since it inherits from
python-pycryptodome.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-crypto.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 1cddc56f1b..e62fc04c0f 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -924,14 +924,14 @@ (define pycryptodome-unbundle-tomcrypt-snippet
 (define-public python-pycryptodome
   (package
     (name "python-pycryptodome")
-    (version "3.9.9")
+    (version "3.11.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pycryptodome" version))
        (sha256
         (base32
-         "1i4m74f88qj9ci8rpyzrbk2slmsdj5ipmwdkq6qk24byalm203li"))
+         "1l3a80z3lxcj1q0hzj1d3plavy2d51y4vzcd85zj0zm7yyxrd022"))
        (modules '((guix build utils)))
        (snippet pycryptodome-unbundle-tomcrypt-snippet)))
     (build-system python-build-system)
@@ -990,7 +990,7 @@ (define-public python-pycryptodomex
        (method url-fetch)
        (uri (pypi-uri "pycryptodomex" version))
        (sha256
-        (base32 "0lbx4qk3xmwqiidhmkj8qa7bh2lf8bwzg0xjpsh2w5zqjrc7qnvv"))
+        (base32 "0vcd65ylri2a4pdqcc1897jasj7wfmqklj8x3pdynmdvark3d603"))
        (modules '((guix build utils)))
        (snippet pycryptodome-unbundle-tomcrypt-snippet)))
     (description
-- 
2.32.0

>From f92dd6601b12dd0909cdefd7728ea6a4cd2de0d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:15 +0900
Subject: [PATCH v2 04/26] gnu: python-aiohttp-socks: Update to 0.6.0.

* gnu/packages/python-web.scm (python-aiohttp-socks): Update to 0.6.0.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-web.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index dcb84d0b67..8e723b02fd 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -239,14 +239,14 @@ (define-public python-aiohttp
 (define-public python-aiohttp-socks
   (package
     (name "python-aiohttp-socks")
-    (version "0.5.5")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "aiohttp_socks" version))
        (sha256
         (base32
-         "0jmhb0l1w8k1nishij3awd9zv8zbyb5l35a2pdalrqxxasbhbcif"))))
+         "04w010bvi719ifpc3sshav95k10hf9nq8czn9yglkj206yxcypdr"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-aiohttp" ,python-aiohttp)
-- 
2.32.0

>From 818d354be7b9fb87955f1aff8995bf6c46df8ef4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:16 +0900
Subject: [PATCH v2 05/26] gnu: python-hyperframe: Update to 6.0.1.

* gnu/packages/python-web.scm (python-hyperframe): Update to 6.0.1.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-web.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 8e723b02fd..f61509986c 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -844,13 +844,13 @@ (define-public python-mechanicalsoup
 (define-public python-hyperframe
   (package
     (name "python-hyperframe")
-    (version "5.2.0")
+    (version "6.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "hyperframe" version))
        (sha256
-        (base32 "07xlf44l1cw0ghxx46sbmkgzil8vqv8kxwy42ywikiy35izw3xd9"))))
+        (base32 "055951gyhnjqpa2al52rj34g8yrls9inyn56n7nfkj0x4d300ldf"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.32.0

>From d83d79f8b61bcef1d0fecaba870aa6e202aa9ccf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:17 +0900
Subject: [PATCH v2 06/26] gnu: python-h11: Update to 0.12.0.

* gnu/packages/python-web.scm (python-h11): Update to 0.12.0.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-web.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index f61509986c..3439b9339f 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -908,13 +908,13 @@ (define-public python-hpack
 (define-public python-h11
   (package
     (name "python-h11")
-    (version "0.9.0")
+    (version "0.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "h11" version))
        (sha256
-        (base32 "1qfad70h59hya21vrzz8dqyyaiqhac0anl2dx3s3k80gpskvrm1k"))))
+        (base32 "0hk0nll6qazsambp3kl8cxxsbl4gv5y9252qadyk0jky0sv2q8j7"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.32.0

>From 97dc500ab921fcb590044562149c8e2f9ca564d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:18 +0900
Subject: [PATCH v2 07/26] gnu: python-socks: Update to 1.2.4.

* gnu/packages/python-web.scm (python-socks): Update to 1.2.4.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-web.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 3439b9339f..eec554a182 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -6139,14 +6139,14 @@ (define-public python-socketio
 (define-public python-socks
   (package
     (name "python-socks")
-    (version "1.1.2")
+    (version "1.2.4")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "python-socks" version))
         (sha256
          (base32
-          "06mgv3icsyglv50w3sb71x6cpbskza20pqd93l5xk59x574i6xgs"))))
+          "1n6xb18jy41ybgkmamakg6psp3qididd45qknxiggngaiibz43kx"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f  ; tests not included
-- 
2.32.0

>From 14df51e1c1d169cdb4f4dd8da3a616fe8cb1f239 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:19 +0900
Subject: [PATCH v2 08/26] gnu: python-hpack: Update to 4.0.0.

* gnu/packages/python-web.scm (python-hpack): Update to 4.0.0
[arguments]: Reactivate skipped test in 'check phase.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-web.scm | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index eec554a182..11bb834ef9 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -873,7 +873,7 @@ (define-public python-hyperframe
 (define-public python-hpack
   (package
     (name "python-hpack")
-    (version "3.0.0")
+    (version "4.0.0")
     (source
      (origin
        ;; PyPI tarball is missing some files necessary for the tests.
@@ -883,7 +883,7 @@ (define-public python-hpack
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0w8hkz50a6lzkmgi41ryicm0mh9ca9cx29pm3s0xlpn0vs29xrmd"))))
+        (base32 "11qdayvz5a8zlzdcdm37f2z1fgnl67pz6j8xj2dz5rfa5lds29yq"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -892,10 +892,7 @@ (define-public python-hpack
            (lambda* (#:key tests? inputs outputs #:allow-other-keys)
              (when tests?
                (add-installed-pythonpath inputs outputs)
-               (invoke "pytest" "-vv" "test" "-k"
-                       ;; This test will be fixed in the next version. See:
-                       ;; https://github.com/python-hyper/hpack/issues/168.
-                       "not test_get_by_index_out_of_range")))))))
+               (invoke "pytest" "-vv" "test")))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)))
     (home-page "https://hyper.rtfd.org")
-- 
2.32.0

>From 5b6d8c1e35160d1635f8984b8c50e84e60bd6c0a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:20 +0900
Subject: [PATCH v2 09/26] gnu: python-h2: Update to 4.1.0.

* gnu/packages/python-web.scm (python-h2): Update to 4.1.0.
[native-inputs]: Add python-hypothesis-6.23.
[arguments]: Invoke pytest through `python -m` so it finds the newer
python-hypothesis-6.23.
[home-page]: Update to current url.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-web.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 11bb834ef9..f3f7afd80c 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -934,13 +934,13 @@ (define-public python-h11
 (define-public python-h2
   (package
     (name "python-h2")
-    (version "3.2.0")
+    (version "4.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "h2" version))
        (sha256
-        (base32 "051gg30aca26rdxsmr9svwqm06pdz9bv21ch4n0lgi7jsvml2pw7"))))
+        (base32 "1fraip114fm1ha5w37pdc0sk8dn9pb0ck267zrwwpap7zc4clfm8"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -949,13 +949,14 @@ (define-public python-h2
            (lambda* (#:key tests? inputs outputs #:allow-other-keys)
              (when tests?
                (add-installed-pythonpath inputs outputs)
-               (invoke "pytest" "-vv" "test")))))))
+               (invoke "python" "-m" "pytest" "-vv" "test")))))))
     (native-inputs
-     `(("python-pytest" ,python-pytest)))
+     `(("python-hypothesis" ,python-hypothesis-6.23)
+       ("python-pytest" ,python-pytest)))
     (propagated-inputs
      `(("python-hpack" ,python-hpack)
        ("python-hyperframe" ,python-hyperframe)))
-    (home-page "https://github.com/python-hyper/hyper-h2")
+    (home-page "https://github.com/python-hyper/h2")
     (synopsis "HTTP/2 State-Machine based protocol implementation")
     (description
      "This module contains a pure-Python implementation of a HTTP/2 protocol
-- 
2.32.0

>From 982238c26fbcbdf13cbb5ded7d821a8ea2350182 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:21 +0900
Subject: [PATCH v2 10/26] gnu: python-future: Update to 0.18.2.

* gnu/packages/python-xyz.scm (python-future): Update to 0.18.2.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3abedc6ead..6e8a0c2b36 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14495,14 +14495,14 @@ (define-public python2-bz2file
 (define-public python-future
   (package
     (name "python-future")
-    (version "0.17.1")
+    (version "0.18.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "future" version))
        (sha256
         (base32
-         "1f2rlqn9rh7adgir52dlbqz69gsab44x0mlm8gf1cs7xvhv54137"))))
+         "0zakvfj87gy6mn1nba06sdha63rn4njm7bhh0wzyrxhcny8avgmi"))))
     (build-system python-build-system)
     ;; Many tests connect to the network or are otherwise flawed.
     ;; https://github.com/PythonCharmers/python-future/issues/210
-- 
2.32.0

>From 1f8b375750d223a74325f57796b06ee94d9d2a34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:22 +0900
Subject: [PATCH v2 11/26] gnu: python-curio: Update to 1.5.

* gnu/packages/python-xyz.scm (python-curio): Update to 1.5.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6e8a0c2b36..5128fca007 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -10723,13 +10723,13 @@ (define-public python2-prettytable
 (define-public python-curio
   (package
     (name "python-curio")
-    (version "1.2")
+    (version "1.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "curio" version))
        (sha256
-        (base32 "16wkww6kh511b9bzsfhpvrv0766cc6ssgbzz4lgpjnrzzgx21wwh"))))
+        (base32 "045wwg16qadsalhicbv21p14sj8i4w0l57639j7dmdqbb4p2225g"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.32.0

>From 966f9b863530db4c8cee0741e54bbbdfa657d0da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:23 +0900
Subject: [PATCH v2 12/26] gnu: python-faker: Update to 9.3.1.

* gnu/packages/python-xyz.scm (python-faker): Update to 9.3.1.
[native-inputs]: Use python-pytest-6.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 5128fca007..60e0556438 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -15696,13 +15696,13 @@ (define-public python2-ukpostcodeparser
 (define-public python-faker
   (package
   (name "python-faker")
-  (version "4.0.2")
+  (version "9.3.1")
   (source (origin
             (method url-fetch)
             (uri (pypi-uri "Faker" version))
             (sha256
              (base32
-              "13qq485ydxmdnqn3xbfv1xfyqbf9qfnfw33v1vw5l6jyy9p8cgrd"))))
+              "0lpfdc4ndvk7chgqrfd2b1my4n54pccq9b645vp9cp5s5ypyknfd"))))
   (build-system python-build-system)
   (arguments
    '(#:phases
@@ -15712,7 +15712,7 @@ (define-public python-faker
   (native-inputs
    `(;; For testing
      ("python-freezegun" ,python-freezegun)
-     ("python-pytest" ,python-pytest)
+     ("python-pytest" ,python-pytest-6)
      ("python-random2" ,python-random2)
      ("python-ukpostcodeparser" ,python-ukpostcodeparser)
      ("python-validators" ,python-validators)))
-- 
2.32.0

>From e7d627458c593da68fa1a0e5e1f366c5b617029d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:24 +0900
Subject: [PATCH v2 13/26] gnu: python-ukpostcodeparser: Update to 1.1.2.

* gnu/packages/python-xyz.scm (python-ukpostcodeparser): Update to
1.1.2.
[arguments]: Replace 'check phase to run tests with pytest, ignoring
failing lowercase tests.
[native-inputs]: Add python-pytest.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 60e0556438..7191d9e220 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -15675,14 +15675,29 @@ (define-public python2-email-validator
 (define-public python-ukpostcodeparser
   (package
     (name "python-ukpostcodeparser")
-    (version "1.0.3")
+    (version "1.1.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "UkPostcodeParser" version))
               (sha256
                (base32
-                "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
+                "03jkf1ygbwq3akzbcjyjk1akc1hv2sfgx90306pq1nwklbpn80lk"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; Tests for lowercase postcodes fail.
+               (invoke "pytest" "-vv" "ukpostcodeparser/test/parser.py" "-k"
+                       (string-append "not test_091 "
+                                      "and not test_097 "
+                                      "and not test_098 "
+                                      "and not test_125 "
+                                      "and not test_131"))))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
     (home-page "https://github.com/hamstah/ukpostcodeparser")
     (synopsis "UK Postcode parser for Python")
     (description
-- 
2.32.0

>From f93992ffcaec5ed607008dddb77ee0b5fb0b5375 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:25 +0900
Subject: [PATCH v2 14/26] gnu: python-unpaddedbase64: Update to 2.1.0.

* gnu/packages/python-xyz.scm (python-unpaddedbase64): Update to 2.1.0.
[source]: Fetch from PyPi.
[arguments]: Replace 'check phase to run tests fetched upstream from
GitHub.
[native-inputs]: Add `python-pytest` and `tests` for fetching upstream
tests.
[home-page]: Update to GitHub project home.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 39 ++++++++++++++++++++++++++++---------
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 7191d9e220..3633a4fa66 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -24601,19 +24601,40 @@ (define-public python-frozendict
 (define-public python-unpaddedbase64
   (package
     (name "python-unpaddedbase64")
-    (version "1.1.0")
+    (version "2.1.0")
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/matrix-org/python-unpaddedbase64")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (pypi-uri "unpaddedbase64" version))
        (sha256
-        (base32
-         "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd"))))
+        (base32 "01ghlmw63fgslwj8j74vkpf1kqvr7a4agm6nyn89vqwx106ccwvj"))))
     (build-system python-build-system)
-    (home-page "https://pypi.org/project/unpaddedbase64/")
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs tests? #:allow-other-keys)
+             (when tests?
+               (copy-recursively (string-append
+                                  (assoc-ref inputs "tests") "/tests")
+                                 "tests")
+               (invoke "python" "-m" "pytest" "-vv")))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("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/matrix-org/python-unpaddedbase64")
+                 (commit (string-append "v" version))))
+           (file-name (git-file-name name version))
+           (sha256
+            (base32
+             "1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz"))))))
+    (home-page "https://github.com/matrix-org/python-unpaddedbase64")
     (synopsis "Encode and decode Base64 without “=” padding")
     (description
      "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
-- 
2.32.0

>From 947b0b1e4257a59f63766ff83ea886c924e218f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:26 +0900
Subject: [PATCH v2 15/26] gnu: Add python-atomicwrites-1.4.

* gnu/packages/python-xyz.scm (python-atomicwrites-1.4): New variable.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3633a4fa66..4c638e35bc 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -12371,6 +12371,17 @@ (define-public python-atomicwrites
 (define-public python2-atomicwrites
   (package-with-python2 python-atomicwrites))
 
+(define-public python-atomicwrites-1.4
+  (package
+    (inherit python-atomicwrites)
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "atomicwrites" version))
+              (sha256
+               (base32
+                "0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f"))))))
+
 (define-public python-qstylizer
   (package
     (name "python-qstylizer")
-- 
2.32.0

>From 18d2993c4d0f2e7fe0c078dc1b22f1a6da17341a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:28 +0900
Subject: [PATCH v2 16/26] gnu: Add python-aioresponses.

* gnu/packages/python-check.scm (python-aioresponses): New variable.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-check.scm | 40 +++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 8252f02182..7a61a73dd6 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -1680,3 +1680,43 @@ (define-public python-pytest-mp
 tedious system under test configuration that can benefit from running several
 tests at one time.")
     (license license:expat)))
+
+(define-public python-aioresponses
+  (package
+    (name "python-aioresponses")
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "aioresponses" version))
+       (sha256
+        (base32 "16p8mdyfirddrsay62ji7rwcrqmmzxzf2isdbfm9cj5p338rbr42"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke
+                "pytest" "-vv" "tests" "-k"
+                (string-append
+                 ;; These tests require network access.
+                 "not test_address_as_instance_of_url_combined_with_pass_through "
+                 "and not test_pass_through_with_origin_params"))))))))
+    (native-inputs
+     `(("python-pbr" ,python-pbr)
+       ("python-ddt" ,python-ddt)
+       ("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-aiohttp" ,python-aiohttp)))
+    (home-page "https://github.com/pnuckowski/aioresponses")
+    (synopsis "Mock out requests made by ClientSession from aiohttp package")
+    (description
+     "Aioresponses is a helper to mock/fake web requests in python aiohttp
+package.  For requests module there are a lot of packages that help us with
+testing (eg. httpretty, responses, requests-mock).  When it comes to testing
+asynchronous HTTP requests it is a bit harder (at least at the beginning).
+The purpose of this package is to provide an easy way to test asynchronous
+HTTP requests.")
+    (license license:expat)))
-- 
2.32.0

>From e636953b69baf669c596f723ba2e89669cc0d649 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:29 +0900
Subject: [PATCH v2 17/26] gnu: Add python-janus.

* gnu/packages/python-xyz.scm (python-janus): New variable.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 39 +++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 4c638e35bc..309924ac7b 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -230,6 +230,45 @@ (define-module (gnu packages python-xyz)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26))
 
+(define-public python-janus
+  (package
+    (name "python-janus")
+    (version "0.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "janus" version))
+       (sha256
+        (base32 "030xvl2vghi5ispfalhvch1rl6i2jsy5bf1dgjafa7vifppy04j7"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest" "--cov=janus" "--cov=tests")))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-asyncio" ,python-pytest-asyncio)))
+    (home-page "https://github.com/aio-libs/janus/")
+    (synopsis
+     "Sync-async queue to interoperate between asyncio tasks and classic threads")
+    (description
+     "Mixed sync-async queue, supposed to be used for communicating between
+classic synchronous (threaded) code and asynchronous (in terms of
+@url{https://docs.python.org/3/library/asyncio.html,asyncio}) one.  Like
+@url{https://en.wikipedia.org/wiki/Janus,Janus god} the queue object from the
+library has two faces: synchronous and asynchronous interface.  Synchronous is
+fully compatible with
+@url{https://docs.python.org/3/library/queue.html,standard queue},
+asynchronous one follows
+@url{https://docs.python.org/3/library/asyncio-queue.html,asyncio queue
+design}.")
+    (license license:asl2.0)))
+
 (define-public python-ueberzug
   (package
     (name "python-ueberzug")
-- 
2.32.0

>From 279089894261a84e88208fb1b9ffbf036fc0b1f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:30 +0900
Subject: [PATCH v2 18/26] gnu: Add python-logbook.

* gnu/packages/python-xyz.scm (python-logbook): New variable.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 38 +++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 309924ac7b..70636b62db 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -269,6 +269,44 @@ (define-public python-janus
 design}.")
     (license license:asl2.0)))
 
+(define-public python-logbook
+  (package
+    (name "python-logbook")
+    (version "1.5.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Logbook" version))
+       (sha256
+        (base32 "1s1gyfw621vid7qqvhddq6c3z2895ci4lq3g0r1swvpml2nm9x36"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'cythonize-sources
+           (lambda _
+             (with-directory-excursion "logbook"
+               (invoke "cython" "_speedups.pyx"))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; Check cython build also
+               (setenv "CYBUILD" "True")
+               (invoke "pytest" "--cov=logbook" "-r" "s" "tests")))))))
+    (native-inputs
+     `(("python-cython" ,python-cython)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-google-brotli" ,python-google-brotli)))
+    (home-page "https://github.com/getlogbook/logbook")
+    (synopsis "Logbook is a logging replacement for Python")
+    (description
+     "Logbook is a logging system for Python that replaces the standard
+library’s logging module.  It was designed with both complex and simple
+applications in mind and the idea to make logging fun.")
+    (license license:bsd-3)))
+
 (define-public python-ueberzug
   (package
     (name "python-ueberzug")
-- 
2.32.0

>From c8ccc86374d54a29a38d8453c176de28f9a901e2 Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <[email-masked]>
Date: Sat, 16 Oct 2021 11:01:38 +0200
Subject: [PATCH v2 19/26] gnu: Add python-fields.

* gnu/packages/python-xyz.scm (python-fields): New variable.
---
 gnu/packages/python-xyz.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 70636b62db..268c35eb58 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -27447,3 +27447,19 @@ (define-public python-box
      "This package provides the @code{python-box} Python module.
 It implements advanced Python dictionaries with dot notation access.")
     (license license:expat)))
+
+(define-public python-fields
+  (package
+    (name "python-fields")
+    (version "5.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "fields" version))
+        (sha256
+          (base32 "09sppvhhkhkv9zc9g994m53z15v92csxwcf42ggkaknlv01smm1i"))))
+    (build-system python-build-system)
+    (home-page "https://python-fields.readthedocs.io/")
+    (synopsis "Python container class boilerplate killer")
+    (description "Avoid repetetive boilerplate code in Python classes.")
+    (license license:bsd-3)))
-- 
2.32.0

>From 832b6e7da353c53fd0a6ae6ebf8329123b8ca993 Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <[email-masked]>
Date: Sat, 16 Oct 2021 11:02:14 +0200
Subject: [PATCH v2 20/26] gnu: Add python-aspectlib.

* gnu/packages/python-xyz.scm (python-aspectlib): New variable.
---
 gnu/packages/python-xyz.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 268c35eb58..1f04519f35 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -27463,3 +27463,25 @@ (define-public python-fields
     (synopsis "Python container class boilerplate killer")
     (description "Avoid repetetive boilerplate code in Python classes.")
     (license license:bsd-3)))
+
+(define-public python-aspectlib
+  (package
+    (name "python-aspectlib")
+    (version "1.5.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "aspectlib" version))
+        (sha256
+          (base32 "1am4ycf292zbmgz791z393v63w7qrynf8q5p9db2wwf2qj1fqxfj"))))
+    (build-system python-build-system)
+    (propagated-inputs `(("python-fields" ,python-fields)))
+    (home-page "https://github.com/ionelmc/python-aspectlib")
+    (synopsis
+      "Python monkey-patching and decorators")
+    (description
+      "This package provides an aspect-oriented programming, monkey-patch
+and decorators library.  It is useful when changing behavior in existing
+code is desired.  It includes tools for debugging and testing:
+simple mock/record and a complete capture/replay framework.")
+    (license license:bsd-2)))
-- 
2.32.0

>From b7935c9d32d652144b48dafb1445782696f870fc Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <[email-masked]>
Date: Sat, 16 Oct 2021 10:56:48 +0200
Subject: [PATCH v2 21/26] gnu: Add python-olm.

* gnu/packages/crypto.scm (python-olm): New variable.
---
 gnu/packages/crypto.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 64cdf48d5d..823b888b82 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -72,6 +72,7 @@ (define-module (gnu packages crypto)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages search)
   #:use-module (gnu packages serialization)
@@ -91,6 +92,7 @@ (define-module (gnu packages crypto)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system perl)
+  #:use-module (guix build-system python)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26))
@@ -1280,6 +1282,39 @@ (define-public libolm
     (home-page "https://matrix.org/docs/projects/other/olm/")
     (license license:asl2.0)))
 
+(define-public python-olm
+  (package
+    ;; python-olm is part of libolm and must be updated at the same time.
+    (inherit libolm)
+    (name "python-olm")
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "python")))
+         (add-before 'build 'set-preprocessor
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "CPP" "gcc -E")))
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest")))))))
+    (inputs `(("libolm" ,libolm)))
+    (propagated-inputs
+     `(("python-cffi" ,python-cffi)
+       ("python-future" ,python-future)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-benchmark" ,python-pytest-benchmark)
+       ("python-aspectlib" ,python-aspectlib)))
+    (synopsis "Python bindings for libolm")
+    (description "The libolm library implements the Double Ratchet
+cryptographic ratchet.  It is written in C and C++11, and exposed as a C
+API.  This package contains its Python bindings.")))
+
 (define-public hash-extender
   (let ((commit "cb8aaee49f93e9c0d2f03eb3cafb429c9eed723d")
         (revision "2"))
-- 
2.32.0

>From c700d802504ac1ac9268388661129d2559188ccd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:32 +0900
Subject: [PATCH v2 22/26] gnu: Add python-matrix-nio.

* gnu/packages/matrix.scm (python-matrix-nio): New variable.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/matrix.scm | 80 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index 5c2b194d07..4fa276930f 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -22,14 +22,18 @@
 (define-module (gnu packages matrix)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages monitoring)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages xml)
   #:use-module (guix build-system python)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages))
 
 (define-public python-matrix-client
@@ -149,3 +153,79 @@ (define-public synapse
 folks see the spec in the context of a codebase and let you run your own
 homeserver and generally help bootstrap the ecosystem.")
     (license license:asl2.0)))
+
+(define-public python-matrix-nio
+  (package
+    (name "python-matrix-nio")
+    (version "0.18.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "matrix-nio" version))
+       (sha256
+        (base32 "0cw4y6dx8n8hynxqlzzkj8p34nfbc2xryvmkr5yhmja31y4rks4k"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'install-tests
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (copy-recursively (string-append
+                                (assoc-ref inputs "tests") "/tests")
+                               "tests")
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               ;; FIXME: two tests fail, for unknown reasons
+               (invoke "python" "-m" "pytest" "-vv" "tests" "-k"
+                       (string-append
+                        "not test_upload_binary_file_object "
+                        "and not test_connect_wrapper"))))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest-6)
+       ("python-hyperframe" ,python-hyperframe)
+       ("python-hypothesis" ,python-hypothesis-6.23)
+       ("python-hpack" ,python-hpack)
+       ("python-faker" ,python-faker)
+       ("python-pytest-aiohttp" ,python-pytest-aiohttp)
+       ("python-aioresponses" ,python-aioresponses)
+       ("python-pytest-benchmark" ,python-pytest-benchmark)
+       ("python-toml" ,python-toml)
+       ("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/poljar/matrix-nio.git")
+                 (commit version)))
+           (file-name (git-file-name name version))
+           (sha256
+            (base32
+             "152prkndk53pfxm4in4xak4hwzyaxlbp6wv2zbk2xpzgyy9bvn3s"))))))
+    (propagated-inputs
+     `(("python-aiofiles" ,python-aiofiles)
+       ("python-aiohttp" ,python-aiohttp)
+       ("python-aiohttp-socks" ,python-aiohttp-socks)
+       ("python-atomicwrites" ,python-atomicwrites-1.4)
+       ("python-cachetools" ,python-cachetools)
+       ("python-future" ,python-future)
+       ("python-h11" ,python-h11)
+       ("python-h2" ,python-h2)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-logbook" ,python-logbook)
+       ("python-olm" ,python-olm)
+       ("python-peewee" ,python-peewee)
+       ("python-pycryptodome" ,python-pycryptodome)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)))
+    (home-page "https://github.com/poljar/matrix-nio")
+    (synopsis
+     "Python Matrix client library, designed according to sans I/O principles")
+    (description
+     "Matrix nio is a multilayered Matrix client library.  The underlying base
+layer doesn't do any network IO on its own, but on top of that is a full
+fledged batteries-included asyncio layer using aiohttp.")
+    (license license:isc)))
-- 
2.32.0

>From fd58b7942a7e1bdf0247efac930e3a3be8567fd2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:33 +0900
Subject: [PATCH v2 23/26] gnu: Add pantalaimon.

* gnu/packages/matrix.scm (pantalaimon): New variable.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/matrix.scm | 56 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index 4fa276930f..5300185b67 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -229,3 +229,59 @@ (define-public python-matrix-nio
 layer doesn't do any network IO on its own, but on top of that is a full
 fledged batteries-included asyncio layer using aiohttp.")
     (license license:isc)))
+
+(define-public pantalaimon
+  (package
+    (name "pantalaimon")
+    (version "0.10.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/matrix-org/pantalaimon")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "153d8083lj3qqirbv5q1d3igzd61a5kyzfk7xmv29sd3jbs8ysm9"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'downgrade-appdirs-requirement
+           (lambda _
+             (substitute* "setup.py"
+               ;; FIXME: Remove this once appdirs is updated.
+               ;; Upgrading python-appdirs requires rebuilting 3000+ packages,
+               ;; when 1.4.4 is a simple maintenance fix from 1.4.3.
+               (("appdirs >= 1.4.4") "appdirs >= 1.4.3"))))
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest" "-vv" "tests")))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-faker" ,python-faker)
+       ("python-pytest-aiohttp" ,python-pytest-aiohttp)
+       ("python-aioresponses" ,python-aioresponses)))
+    (propagated-inputs
+     `(("python-aiohttp" ,python-aiohttp)
+       ("python-appdirs" ,python-appdirs)
+       ("python-attrs" ,python-attrs)
+       ("python-cachetools" ,python-cachetools)
+       ("python-click" ,python-click)
+       ("python-janus" ,python-janus)
+       ("python-keyring" ,python-keyring)
+       ("python-logbook" ,python-logbook)
+       ("python-matrix-nio" ,python-matrix-nio)
+       ("python-peewee" ,python-peewee)
+       ("python-prompt-toolkit" ,python-prompt-toolkit)))
+    (home-page "https://github.com/matrix-org/pantalaimon")
+    (synopsis "Matrix proxy daemon that adds E2E encryption capabilities")
+    (description
+     "Pantalaimon is an end-to-end encryption aware Matrix reverse proxy
+daemon.  Pantalaimon acts as a good man in the middle that handles the
+encryption for you.  Messages are transparently encrypted and decrypted for
+clients inside of pantalaimon.")
+    (license license:asl2.0)))
-- 
2.32.0

>From c650fc0df39b926ec561c73a7d6cecafd33bbaa9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:34 +0900
Subject: [PATCH v2 24/26] gnu: python-socks: Fix indentation.

* gnu/packages/python-web.scm (python-socks): Fix indentation.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-web.scm | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index f3f7afd80c..2b5379950d 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -6139,15 +6139,15 @@ (define-public python-socks
     (name "python-socks")
     (version "1.2.4")
     (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "python-socks" version))
-        (sha256
-         (base32
-          "1n6xb18jy41ybgkmamakg6psp3qididd45qknxiggngaiibz43kx"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python-socks" version))
+       (sha256
+        (base32
+         "1n6xb18jy41ybgkmamakg6psp3qididd45qknxiggngaiibz43kx"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f  ; tests not included
+     `(#:tests? #f                      ; tests not included
        #:phases
        (modify-phases %standard-phases
          (replace 'check
-- 
2.32.0

>From 96826ba8f3af7c3e5554f7ae217c60d1b7e331d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:35 +0900
Subject: [PATCH v2 25/26] gnu: python-faker: Fix indentation.

* gnu/packages/python-xyz.scm (python-faker): Fix indentation.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 60 ++++++++++++++++++-------------------
 1 file changed, 30 insertions(+), 30 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1f04519f35..55c9218c5a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -15798,37 +15798,37 @@ (define-public python2-ukpostcodeparser
 
 (define-public python-faker
   (package
-  (name "python-faker")
-  (version "9.3.1")
-  (source (origin
-            (method url-fetch)
-            (uri (pypi-uri "Faker" version))
-            (sha256
-             (base32
-              "0lpfdc4ndvk7chgqrfd2b1my4n54pccq9b645vp9cp5s5ypyknfd"))))
-  (build-system python-build-system)
-  (arguments
-   '(#:phases
-     (modify-phases %standard-phases
-       (replace 'check
-         (lambda _ (invoke "python" "-m" "pytest" "-v"))))))
-  (native-inputs
-   `(;; For testing
-     ("python-freezegun" ,python-freezegun)
-     ("python-pytest" ,python-pytest-6)
-     ("python-random2" ,python-random2)
-     ("python-ukpostcodeparser" ,python-ukpostcodeparser)
-     ("python-validators" ,python-validators)))
-  (propagated-inputs
-   `(("python-dateutil" ,python-dateutil)
-     ("python-text-unidecode" ,python-text-unidecode)))
-  (home-page "https://github.com/joke2k/faker")
-  (synopsis "Python package that generates fake data")
-  (description
-   "Faker is a Python package that generates fake data such as names,
+    (name "python-faker")
+    (version "9.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Faker" version))
+              (sha256
+               (base32
+                "0lpfdc4ndvk7chgqrfd2b1my4n54pccq9b645vp9cp5s5ypyknfd"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (invoke "python" "-m" "pytest" "-v"))))))
+    (native-inputs
+     `( ;; For testing
+       ("python-freezegun" ,python-freezegun)
+       ("python-pytest" ,python-pytest-6)
+       ("python-random2" ,python-random2)
+       ("python-ukpostcodeparser" ,python-ukpostcodeparser)
+       ("python-validators" ,python-validators)))
+    (propagated-inputs
+     `(("python-dateutil" ,python-dateutil)
+       ("python-text-unidecode" ,python-text-unidecode)))
+    (home-page "https://github.com/joke2k/faker")
+    (synopsis "Python package that generates fake data")
+    (description
+     "Faker is a Python package that generates fake data such as names,
 addresses, and phone numbers.")
-  (license license:expat)
-  (properties `((python2-variant . ,(delay python2-faker))))))
+    (license license:expat)
+    (properties `((python2-variant . ,(delay python2-faker))))))
 
 ;; Faker 4.0 dropped Python 2 support, so we stick with this older version here.
 (define-public python2-faker
-- 
2.32.0

>From 3ad946ceb8fb2fb9eb39b98eb49c912ed5475768 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Lerique?= <[email-masked]>
Date: Fri, 15 Oct 2021 11:40:36 +0900
Subject: [PATCH v2 26/26] gnu: python-xyz.scm: Add copyright line.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/python-xyz.scm: Add copyright line for Sébastien
Lerique.

Signed-off-by: Lars-Dominik Braun <[email-masked]>
---
 gnu/packages/python-xyz.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 55c9218c5a..1a2a6932ec 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -109,6 +109,7 @@
 ;;; Copyright © 2021 Daniel Meißner <[email-masked]>
 ;;; Copyright © 2021 Pradana Aumars <[email-masked]>
 ;;; Copyright © 2021 Felix Gruber <[email-masked]>
+;;; Copyright © 2021 Sébastien Lerique <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
-- 
2.32.0