about summary refs log tree commit diff
path: root/gn
diff options
context:
space:
mode:
Diffstat (limited to 'gn')
-rw-r--r--gn/packages/edash.scm23
-rw-r--r--gn/packages/mailman.scm1254
-rw-r--r--gn/packages/twint.scm65
3 files changed, 5 insertions, 1337 deletions
diff --git a/gn/packages/edash.scm b/gn/packages/edash.scm
index 53071b1..7f52393 100644
--- a/gn/packages/edash.scm
+++ b/gn/packages/edash.scm
@@ -7,6 +7,7 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages base)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages python-crypto)
@@ -226,28 +227,6 @@ necessary.")
      "A collection of helpers and mock objects for unit tests and doc tests.")
     (license license:expat)))
 
-(define-public python-pytest-aiohttp
-  (package
-    (name "python-pytest-aiohttp")
-    (version "0.3.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "pytest-aiohttp" version))
-       (sha256
-        (base32
-         "0kx4mbs9bflycd8x9af0idcjhdgnzri3nw1qb0vpfyb3751qaaf9"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-aiohttp" ,python-aiohttp)
-       ("python-pytest-timeout" ,python-pytest-timeout)))
-    (home-page
-     "https://github.com/aio-libs/pytest-aiohttp/")
-    (synopsis "pytest plugin for aiohttp support")
-    (description "pytest plugin for aiohttp support")
-    (license license:asl2.0)))
-
 (define-public python-aiohttp-jinja2
   (package
     (name "python-aiohttp-jinja2")
diff --git a/gn/packages/mailman.scm b/gn/packages/mailman.scm
deleted file mode 100644
index d2d2187..0000000
--- a/gn/packages/mailman.scm
+++ /dev/null
@@ -1,1254 +0,0 @@
-(define-module (gn packages mailman)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system python)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages django)
-  #:use-module (gnu packages geo)
-  #:use-module (gnu packages libffi)
-  #:use-module (gnu packages mail)
-  #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages python-check)
-  #:use-module (gnu packages python-crypto)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages time)
-  #:use-module (gnu packages tls))
-
-(define-public mailman
-  (package
-    (name "mailman")
-    (version "3.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "mailman" version))
-        (sha256
-         (base32
-          "0idfiv48jjgc0jq4731094ddhraqq8bxnwmjk6sg5ask0jss9kxq"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("gunicorn" ,gunicorn)
-       ("python-aiosmtpd" ,python-aiosmtpd)
-       ("python-alembic" ,python-alembic)
-       ("python-atpublic" ,python-atpublic)
-       ("python-authheaders" ,python-authheaders)
-       ("python-authres" ,python-authres)
-       ("python-click" ,python-click)
-       ("python-dateutil" ,python-dateutil)
-       ("python-dnspython" ,python-dnspython)
-       ("python-falcon" ,python-falcon)
-       ("python-flufl-bounce" ,python-flufl-bounce)
-       ("python-flufl-i18n" ,python-flufl-i18n)
-       ("python-flufl-lock" ,python-flufl-lock)
-       ("python-importlib-resources" ,python-importlib-resources)
-       ("python-lazr-config" ,python-lazr-config)
-       ("python-passlib" ,python-passlib)
-       ("python-requests" ,python-requests)
-       ("python-sqlalchemy" ,python-sqlalchemy)
-       ("python-zope-component" ,python-zope-component)
-       ("python-zope-configuration" ,python-zope-configuration)
-       ("python-zope-event" ,python-zope-event)
-       ("python-zope-interface" ,python-zope-interface)))
-    (home-page "https://www.list.org")
-    (synopsis "Mailing list manager")
-    (description
-     "GNU Mailman is software for managing email discussion and mailing
-lists.  Both users and administrators generally perform their actions in a
-web interface, although email and command-line interfaces are also provided.
-The system features built-in archiving, automatic bounce processing, content
-filtering, digest delivery, and more.")
-    (license license:gpl3+)))
-
-(define-public python-aiosmtpd
-  (package
-    (name "python-aiosmtpd")
-    (version "1.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "aiosmtpd" version))
-        (sha256
-         (base32
-          "1xdfk741pjmz1cm8dsi4n5vq4517i175rm94696m3f7kcgk7xsmp"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'delete-failing-test
-           (lambda _
-             (delete-file "aiosmtpd/tests/test_smtps.py")
-             #t))
-         (replace 'check
-           (lambda _
-             (invoke "python" "-m" "nose2" "-v"))))))
-    (native-inputs
-     `(("python-flufl-testing" ,python-flufl-testing)
-       ("python-nose2" ,python-nose2)))
-    (propagated-inputs
-     `(("python-atpublic" ,python-atpublic)))
-    (home-page "https://aiosmtpd.readthedocs.io/")
-    (synopsis "Asyncio based SMTP server")
-    (description
-     "This project is a reimplementation of the Python stdlib @code{smtpd.py}
-based on asyncio.")
-    (license (list license:asl2.0
-                   license:lgpl3)))) ; only for setup_helpers.py
-
-(define-public python-flufl-testing
-  (package
-    (name "python-flufl-testing")
-    (version "0.8")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "flufl.testing" version))
-        (sha256
-         (base32
-          "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641"))))
-    (build-system python-build-system)
-    (native-inputs
-     `(("python-nose2" ,python-nose2)))
-    (home-page "https://gitlab.com/warsaw/flufl.testing")
-    (synopsis "Collection of test tool plugins")
-    (description
-     "A small collection of test tool plugins for nose2 and flake8.")
-    (license license:asl2.0)))
-
-(define-public python-atpublic
-  (package
-    (name "python-atpublic")
-    (version "1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "atpublic" version))
-        (sha256
-         (base32
-          "0i3sbxkdlbb4560rrlmwwd5y4ps7k73lp4d8wnmd7ag9k426gjkx"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'enable-c-implementation
-           (lambda _
-             (setenv "ATPUBLIC_BUILD_EXTENSION" "yes")
-             #t))
-         (replace 'check
-           (lambda _
-             (invoke "python" "-m" "nose2" "-v"))))))
-    (native-inputs
-     `(("python-nose2" ,python-nose2)))
-    (home-page "https://public.readthedocs.io/")
-    (synopsis "@code{@@public} decorator for populating @code{__all__}")
-    (description
-     "This Python module adds a @code{@@public} decorator and function which
-populates a module's @code{__all__} and optionally the module globals.  With
-it, the declaration of a name's public export semantics are not separated from
-the implementation of that name.")
-    (license (list license:asl2.0
-                   license:lgpl3)))) ; only for setup_helpers.py
-
-(define-public python-authheaders
-  (package
-    (name "python-authheaders")
-    (version "0.13.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "authheaders" version))
-        (sha256
-         (base32
-          "14k6i72k5f8dyvps8vc0aq0cczc8lvqpgjfjzsy6qqychjvjcmwk"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-authres" ,python-authres)
-       ("python-dkimpy" ,python-dkimpy)
-       ("python-dnspython" ,python-dnspython)
-       ("python-publicsuffix2" ,python-publicsuffix2)))
-    (home-page "https://github.com/ValiMail/authentication-headers")
-    (synopsis "Library wrapping email authentication header verification and generation")
-    (description
-     "This is a Python library for the generation of email authentication
-headers.  The library can perform DKIM, SPF, and DMARC validation, and the
-results are packaged into the Authentication-Results header.  The library can
-DKIM and ARC sign messages and output the corresponding signature headers.")
-    ;; The package's metadata claims it were MIT licensed, but the source file
-    ;; headers disagree. MPL-2 for the public suffix list.
-    (license (list license:zpl2.1 license:zlib license:mpl2.0))))
-
-(define-public python-authres
-  (package
-    (name "python-authres")
-    (version "1.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "authres" version))
-        (sha256
-         (base32
-          "1dr5zpqnb54h4f5ax8334l1dcp8j9083d7v4vdi1xqkwmnavklck"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           ;; Run doctests as described in the README.
-           (lambda _
-             (invoke "python" "-m" "authres" "-v"))))))
-    (home-page "https://launchpad.net/authentication-results-python")
-    (synopsis "Email Authentication Results Header Module")
-    (description
-     "This module can be used to generate and parse RFC 5451/7001/7601
-Authentication-Results headers.  It also supports Authentication Results
-extensions:
-@itemize
-@item RFC 5617 DKIM/ADSP
-@item RFC 6008 DKIM signature identification (header.b)
-@item RFC 6212 Vouch By Reference (VBR)
-@item RFC 6577 Sender Policy Framework (SPF)
-@item RFC 7281 Authentication-Results Registration for S/MIME
-@item RFC 7293 The Require-Recipient-Valid-Since Header Field
-@item RFC 7489 Domain-based Message Authentication, Reporting, and Conformance (DMARC)
-@item Authenticated Recieved Chain (ARC) (draft-ietf-dmarc-arc-protocol-08)
-@end itemize
-Note: RFC 7601 obsoletes RFC 5451, 6577, 7001, and 7410.  Authres supports the
-current standard.  No backward compatibility issues have been noted.")
-    (license license:asl2.0)))
-
-(define-public python-flufl-bounce
-  (package
-    (name "python-flufl-bounce")
-    (version "3.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "flufl.bounce" version))
-        (sha256
-         (base32
-          "01lg1b0jpf8605mzaz9miq3nray6s7a7gc8n4wzg5nsxl8fglcp4"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-atpublic" ,python-atpublic)
-       ("python-zope-interface" ,python-zope-interface)))
-    (native-inputs
-     `(("python-nose2" ,python-nose2)))
-    (home-page "https://fluflbounce.readthedocs.io/en/latest/")
-    (synopsis "Email bounce detectors")
-    (description "The @code{flufl.bounce} library provides a set of heuristics
-and an API for detecting the original bouncing email addresses from a bounce
-message.  Many formats found in the wild are supported, as are VERP and
-RFC 3464.")
-    (license (list license:asl2.0
-                   license:lgpl3)))) ; only for setup_headers.py
-
-(define-public python-flufl-i18n
-  (package
-    (name "python-flufl-i18n")
-    (version "3.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "flufl.i18n" version))
-        (sha256
-         (base32
-          "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-atpublic" ,python-atpublic)))
-    (home-page "https://flufli18n.readthedocs.io")
-    (synopsis "API for Python internationalization")
-    (description
-     "This package provides a high level, convenient API for managing
-internationalization translation contexts in Python application.  There is a
-simple API for single-context applications, such as command line scripts which
-only need to translate into one language during the entire course of thei
-execution.  There is a more flexible, but still convenient API for multi-context
-applications, such as servers, which may need to switch language contexts for
-different tasks.")
-    (license license:asl2.0)))
-
-(define-public python-flufl-lock
-  (package
-    (name "python-flufl-lock")
-    (version "4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "flufl.lock" version))
-        (sha256
-         (base32
-          "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-atpublic" ,python-atpublic)
-       ("python-psutil" ,python-psutil)))
-    (home-page "https://flufllock.readthedocs.io")
-    (synopsis "NFS-safe file locking with timeouts for POSIX systems")
-    (description
-     "The @dfn{flufl.lock} package provides NFS-safe file locking with
-timeouts for POSIX systems.  It is similar to the @code{O_EXCL} option of the
-@code{open} system call but uses a lockfile.  Lock objects support lock-breaking
-and have a maximum lifetime built-in.")
-    (license (list license:asl2.0
-                   license:lgpl3)))) ; only for setup_helpers.py
-
-(define-public python-importlib-resources
-  (package
-    (name "python-importlib-resources")
-    (version "3.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "importlib_resources" version))
-        (sha256
-         (base32
-          "1hq626mx5jl9zfl0wdrjkxsnh8qd98fqv322n68b9251xjk4bxqr"))))
-    (build-system python-build-system)
-    (native-inputs
-     `(("python-setuptools-scm" ,python-setuptools-scm)
-       ("python-toml" ,python-toml)))
-    (home-page "http://importlib-resources.readthedocs.io/")
-    (synopsis "Read resources from Python packages")
-    (description
-     "@code{importlib_resources} is a backport of Python 3's standard library
-@code{importlib.resources} module for Python 2.7, and Python 3.")
-    (license license:asl2.0)))
-
-(define-public python-lazr-config
-  (package
-    (name "python-lazr-config")
-    (version "2.2.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "lazr.config" version))
-        (sha256
-         (base32
-          "11xpddgyhyj7sf27wbmrq5lnqk21wnprx3ajycgwlxjamh6sgffd"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "python" "-s" "-m" "nose" "-P" "lazr"))))))
-    (propagated-inputs
-     `(("python-lazr-delegates" ,python-lazr-delegates)
-       ("python-zope-interface" ,python-zope-interface)))
-    (home-page "https://launchpad.net/lazr.config")
-    (synopsis "Create configuration schemas and process and validate configurations")
-    (description
-     "The LAZR config system is typically used to manage process configuration.
-Process configuration is for saying how things change when we run systems on
-different machines, or under different circumstances.  This system uses ini-like
-file format of section, keys, and values.  The config file supports inheritance
-to minimize duplication of information across files.  The format supports schema
-validation.")
-    (license license:lgpl3)))
-
-(define-public python-zope-component
-  (package
-    (name "python-zope-component")
-    (version "4.6.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "zope.component" version))
-        (sha256
-         (base32
-          "14iwp95hh6q5dj4k9h1iw75cbp89bs27nany4dinyglb44c8jqli"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (add-installed-pythonpath inputs outputs)
-             (invoke "python" "setup.py" "test"))))))
-    (propagated-inputs
-     `(("python-zope-deferredimport" ,python-zope-deferredimport)
-       ("python-zope-deprecation" ,python-zope-deprecation)
-       ("python-zope-event" ,python-zope-event)
-       ("python-zope-hookable" ,python-zope-hookable)
-       ("python-zope-interface" ,python-zope-interface)))
-    (native-inputs
-     `(("python-persistent" ,python-persistent)
-       ("python-zope-configuration" ,python-zope-configuration-bootstrap)
-       ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
-       ("python-zope-location" ,python-zope-location-bootstrap)
-       ("python-zope-proxy" ,python-zope-proxy-bootstrap)
-       ("python-zope-security" ,python-zope-security-bootstrap)
-       ("python-zope-testing" ,python-zope-testing)
-       ("python-zope-testrunner" ,python-zope-testrunner)))
-    (home-page "https://github.com/zopefoundation/zope.component")
-    (synopsis "Zope Component Architecture")
-    (description "Zope Component Architecture")
-    (license license:zpl2.1)))
-
-(define-public python-dkimpy
-  (package
-    (name "python-dkimpy")
-    (version "1.0.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "dkimpy" version))
-        (sha256
-         (base32
-          "14idcs0wiyc0iyi5bz3xqimxf3x6dizcjfn92s2ka5zxp95xdyvd"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'patch-source-shebangs 'patch-more-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (substitute* "dkim/dknewkey.py"
-                 (("/usr/bin/openssl") (string-append openssl "/bin/openssl"))))
-             #t))
-         (replace 'check
-           (lambda _
-             (invoke "python" "test.py"))))))
-    (propagated-inputs
-     `(("python-dnspython" ,python-dnspython)))
-    (native-inputs
-     `(("python-authres" ,python-authres)
-       ("python-pynacl" ,python-pynacl)))
-    (inputs
-     `(("openssl" ,openssl)))
-    (home-page "https://launchpad.net/dkimpy")
-    (synopsis "DKIM (DomainKeys Identified Mail)")
-    (description "Python module that implements @dfn{DKIM} (DomainKeys
-Identified Mail) email signing and verification (RFC6376).  It also provides
-helper scripts for command line signing and verification.  It supports DKIM
-signing/verifying of ed25519-sha256 signatures (RFC 8463).  It also supports
-the RFC 8617 Authenticated Received Chain (ARC) protocol.")
-    (license license:bsd-3)))
-
-(define-public python-lazr-delegates
-  (package
-    (name "python-lazr-delegates")
-    (version "2.0.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "lazr.delegates" version))
-        (sha256
-         (base32
-          "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "python" "setup.py" "nosetests"))))))
-    (propagated-inputs
-     `(("python-nose" ,python-nose)
-       ("python-zope-interface" ,python-zope-interface)))
-    (home-page "https://launchpad.net/lazr.delegates")
-    (synopsis "Easily write objects that delegate behavior")
-    (description
-     "The @code{lazr.delegates} package makes it easy to write objects that
-delegate behavior to another object.  The new object adds some property or
-behavior on to the other object, while still providing the underlying interface,
-and delegating behavior.")
-    (license license:lgpl3)))
-
-(define-public python-zope-deferredimport
-  (package
-    (name "python-zope-deferredimport")
-    (version "4.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "zope.deferredimport" version))
-        (sha256
-         (base32
-          "1q89v54dwniiqypjbwywwdfjdr4kdkqlyqsgrpplgvsygdg39cjp"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-zope-proxy" ,python-zope-proxy)))
-    (native-inputs
-     `(("python-zope-testrunner" ,python-zope-testrunner)))
-    (home-page "https://github.com/zopefoundation/zope.deferredimport")
-    (synopsis "Defer imports until used by code")
-    (description
-     "Often, especially for package modules, you want to import names for
-convenience, but not actually perform the imports until necessary.  The
-@code{zope.deferredimport} package provided facilities for defining names in
-modules that will be imported from somewhere else when used.  You can also cause
-deprecation warnings to be issued when a variable is used.")
-    (license license:zpl2.1)))
-
-(define-public python-zope-hookable
-  (package
-    (name "python-zope-hookable")
-    (version "5.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "zope.hookable" version))
-        (sha256
-         (base32
-          "0hc82lfr7bk53nvbxvjkibkarngyrzgfk2i6bg8wshl0ly0pdl19"))))
-    (build-system python-build-system)
-    (native-inputs
-     `(("python-coverage" ,python-coverage)
-       ("python-zope-testing" ,python-zope-testing)))
-    (home-page "https://github.com/zopefoundation/zope.hookable")
-    (synopsis "Zope hookable")
-    (description "This package supports the efficient creation of hookable
-objects, which are callable objects that are meant to be optionally replaced.
-The idea is that you create a function that does some default thing and make i
-hookable.  Later, someone can modify what it does by calling its sethook method
-and changing its implementation.  All users of the function, including those
-that imported it, will see the change.")
-    (license license:zpl2.1)))
-
-(define-public python-zope-copy
-  (package
-    (name "python-zope-copy")
-    (version "4.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "zope.copy" version))
-        (sha256
-         (base32
-          "06m75434krl57n6p73c2qj55k5i3fixg887j8ss01ih6zw4rvfs7"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "zope-testrunner" "--test-path=src" "\\[]"))))))
-    (propagated-inputs
-     `(("python-zope-interface" ,python-zope-interface)))
-    (native-inputs
-     `(("python-zope-component" ,python-zope-component-bootstrap)
-       ("python-zope-location" ,python-zope-location-bootstrap)
-       ("python-zope-testing" ,python-zope-testing)
-       ("python-zope-testrunner" ,python-zope-testrunner)))
-    (home-page "https://github.com/zopefoundation/zope.copy")
-    (synopsis "Pluggable object copying mechanism")
-    (description
-     "This package provides a pluggable mechanism for copying persistent objects.")
-    (license license:zpl2.1)))
-
-(define-public python-mailmanclient-3.3
-  (package
-    (inherit python-mailmanclient)
-    (name "python-mailmanclient")
-    (version "3.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "mailmanclient" version))
-        (sha256
-         (base32
-          "0pjgzpvhdb6ql8asb20xr8d01m646zpghmcp9fmscks0n1k4di4g"))))
-    (propagated-inputs
-     `(("python-requests" ,python-requests)))
-    (native-inputs
-     `(("python-falcon" ,python-falcon)
-       ("python-mailman" ,mailman)
-       ("python-pytest" ,python-pytest)
-       ("python-pytest-services" ,python-pytest-services)))))
-
-(define-public python-pytest-services
-  (package
-    (name "python-pytest-services")
-    (version "1.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "pytest-services" version))
-        (sha256
-         (base32
-          "0b2zfv04w6m3gp2v44ifdhx22vcji069qnn95ry3zcyxib7cjnq3"))))
-    (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; Tests not included in release tarball.
-    (propagated-inputs
-     `(("python-psutil" ,python-psutil)
-       ("python-pytest" ,python-pytest)
-       ("python-requests" ,python-requests)
-       ("python-setuptools" ,python-setuptools))) ; enumerated in setup.py
-    (home-page "https://github.com/pytest-dev/pytest-services")
-    (synopsis "Services plugin for pytest testing framework")
-    (description
-     "This plugin provides a set of fixtures and utility functions to start
-service processes for your tests with pytest.")
-    (license license:expat)))
-
-(define-public python-mailman-hyperkitty
-  (package
-    (name "python-mailman-hyperkitty")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "mailman-hyperkitty" version))
-        (sha256
-         (base32
-          "1lfqa9admhvdv71f528jmz2wl0i5cv77v6l64px2pm4zqr9ckkjx"))
-        (patches (list (origin
-                         ;; see: https://gitlab.com/mailman/mailman-hyperkitty/issues/17
-                         (method url-fetch)
-                         (uri "https://salsa.debian.org/mailman-team/mailman-hyperkitty/raw/debian/1.1.0-9/debian/patches/0002-Skip-the-test_archive_message_unserializable.patch")
-                         (sha256
-                          (base32
-                           "0p1fwm46c4bl81lvsg3kjhn2r1lwgkpgxamb3xyqn7h9qdrw10hw")))))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-mailman" ,mailman)
-       ("python-requests" ,python-requests)
-       ("python-setuptools" ,python-setuptools) ; enumerated in setup.py
-       ("python-zope-interface" ,python-zope-interface)))
-    (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-nose2" ,python-nose2)))
-    (home-page "https://gitlab.com/mailman/mailman-hyperkitty/")
-    (synopsis "Mailman archiver plugin for HyperKitty")
-    (description
-      "Mailman archiver plugin for HyperKitty")
-    (license license:gpl3+)))
-
-(define-public python-hyperkitty
-  (package
-    (name "python-hyperkitty")
-    (version "1.3.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "HyperKitty" version))
-        (sha256
-         (base32
-          "0p85r9q6mn5as5b39xp9hkkipnk0156acx540n2ygk3qb3jd4a5n"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             ;; It is unclear why this test fails.
-             (substitute* "hyperkitty/tests/commands/test_import.py"
-               (("def test_bad_content_type_part_two")
-                "@SkipTest\n    def test_bad_content_type_part_two"))
-             (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
-             (invoke "example_project/manage.py" "test"
-                     "--settings=hyperkitty.tests.settings_test"))))))
-    (propagated-inputs
-     `(("python-dateutil" ,python-dateutil)
-       ("python-django" ,python-django)
-       ("python-django-compressor" ,python-django-compressor)
-       ("python-django-extensions" ,python-django-extensions)
-       ("python-django-gravatar2" ,python-django-gravatar2)
-       ("python-django-haystack" ,python-django-haystack)
-       ("python-django-mailman3" ,python-django-mailman3)
-       ("python-django-q" ,python-django-q)
-       ("python-djangorestframework" ,python-djangorestframework)
-       ("python-flufl-lock" ,python-flufl-lock)
-       ("python-mailmanclient" ,python-mailmanclient-3.3)
-       ("python-networkx" ,python-networkx)
-       ("python-pytz" ,python-pytz)
-       ("python-robot-detection" ,python-robot-detection)))
-    (native-inputs
-     `(("python-beautifulsoup4" ,python-beautifulsoup4)
-       ("python-elasticsearch" ,python-elasticsearch)
-       ("python-isort" ,python-isort)
-       ("python-mock" ,python-mock)
-       ("python-whoosh" ,python-whoosh)))
-    (home-page "https://gitlab.com/mailman/hyperkitty")
-    (synopsis "Web interface to access GNU Mailman v3 archives")
-    (description
-     "This package provides a web interface to access GNU Mailman v3 archives.")
-    (license license:gpl3))) ; Some files are gpl2+
-
-(define-public python-django-compressor
-  (package
-    (name "python-django-compressor")
-    (version "2.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "django_compressor" version))
-        (sha256
-         (base32
-          "0kx7bclfa0sxlsz6ka70zr9ra00lks0hmv1kc99wbanx6xhirvfj"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (if tests?
-               (begin
-                 (setenv "DJANGO_SETTINGS_MODULE" "compressor.test_settings")
-                 (invoke "django-admin" "test"
-                         "--pythonpath=."))
-               #t))))
-       ;; Tests fail with beautifulsoup 4.9+
-       ;; https://github.com/django-compressor/django-compressor/issues/998
-       #:tests? #f))
-    (propagated-inputs
-     `(("python-django-appconf" ,python-django-appconf)
-       ("python-rcssmin" ,python-rcssmin)
-       ("python-rjsmin" ,python-rjsmin)))
-    (native-inputs
-     `(("python-beautifulsoup4" ,python-beautifulsoup4)
-       ("python-brotli" ,python-brotli)
-       ("python-csscompressor" ,python-csscompressor)
-       ("python-django-sekizai" ,python-django-sekizai)
-       ("python-mock" ,python-mock)))
-    (home-page "https://django-compressor.readthedocs.io/en/latest/")
-    (synopsis
-     "Compresses linked and inline JavaScript or CSS into single cached files")
-    (description
-     "Compresses linked and inline JavaScript or CSS into single cached files.")
-    (license license:expat)))
-
-(define-public python-csscompressor
-  (package
-    (name "python-csscompressor")
-    (version "0.9.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "csscompressor" version))
-        (sha256
-         (base32
-          "018ssffvlpnc1salmnpyl52c11glzzwj4k9f757hl4pkpjnjp8mg"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "py.test"))))))
-    (native-inputs
-     `(("python-pytest" ,python-pytest)))
-    (home-page "https://github.com/sprymix/csscompressor")
-    (synopsis "Python port of YUI CSS Compressor")
-    (description
-     "This package provides a python port of YUI CSS Compressor.")
-    (license license:bsd-3)))
-
-(define-public python-brotli
-  (package
-    (name "python-brotli")
-    (version "1.0.7")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "Brotli" version ".zip"))
-        (sha256
-         (base32
-          "19x5dqxckb62n37mpnczp21rfxqvgpm0ki5ds8ac65zx8hbxqf05"))))
-    (build-system python-build-system)
-    (native-inputs
-     `(("unzip" ,unzip)))
-    (home-page "https://github.com/google/brotli")
-    (synopsis "Python bindings for the Brotli compression library")
-    (description
-     "This package provides python bindings for the Brotli compression library.")
-    (license license:asl2.0)))
-
-(define-public python-django-sekizai
-  (package
-    (name "python-django-sekizai")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "django-sekizai" version))
-        (sha256
-         (base32
-          "1nc4sv109valdn6azmgm2j01k7khxy2wnji84z63x7fxsikfdxp2"))))
-    (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; Test script not included with release.
-    (propagated-inputs
-     `(("python-django" ,python-django)
-       ("python-django-classy-tags" ,python-django-classy-tags)
-       ("python-six" ,python-six)))
-    (home-page "https://github.com/divio/django-sekizai")
-    (synopsis "Template blocks for Django projects")
-    (description "Sekizai means blocks in Japanese, and thats what this app
-provides.  A fresh look at blocks.  With @code{django-sekizai} you can define
-placeholders where your blocks get rendered and at different places in your
-templates append to those blocks.  This is especially useful for css and
-javascript.  Your subtemplates can now define css and javscript files to be
-included, and the css will be nicely put at the top and the javascript to the
-bottom, just like you should.  Also sekizai will ignore any duplicate content in
-a single block.")
-    (license license:bsd-3)))
-
-(define-public python-django-classy-tags
-  (package
-    (name "python-django-classy-tags")
-    (version "1.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "django-classy-tags" version))
-        (sha256
-         (base32
-          "1cayqddvxd5prhybqi77lif2z4j7mmfmxgc61pq9i82q5gy2asmd"))))
-    (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; Test script not distributed with release.
-    (propagated-inputs
-     `(("python-django" ,python-django)
-       ("python-six" ,python-six)))
-    (home-page "https://github.com/divio/django-classy-tags")
-    (synopsis "Class based template tags for Django")
-    (description
-     "This package provides class based template tags for Django.")
-    (license license:bsd-3)))
-
-(define-public python-django-haystack
-  (package
-    (name "python-django-haystack")
-    (version "2.8.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "django-haystack" version))
-        (sha256
-         (base32
-          "1302fqsrx8w474xk5cmnmg3hjqfprlxnjg9qlg86arsr4v4vqm4b"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'loosen-verion-restrictions
-           (lambda _
-             (substitute* "setup.py"
-               (("geopy.*") "geopy',\n"))
-             #t))
-         (add-before 'check 'set-gdal-lib-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (setenv "GDAL_LIBRARY_PATH"
-                     (string-append (assoc-ref inputs "gdal")
-                                    "/lib"))
-             #t)))
-       #:tests? #f)) ; OSError: libgdal.so.20: cannot open shared object file
-    (propagated-inputs
-     `(("python-django" ,python-django)))
-    (native-inputs
-     `(("gdal" ,gdal)
-       ("python-coverage" ,python-coverage)
-       ("python-dateutil" ,python-dateutil)
-       ("python-geopy" ,python-geopy)
-       ("python-mock" ,python-mock)
-       ("python-nose" ,python-nose)
-       ("python-requests" ,python-requests)
-       ("python-setuptools-scm" ,python-setuptools-scm)
-       ("python-pysolr" ,python-pysolr)
-       ("python-whoosh" ,python-whoosh)))
-    (home-page "http://haystacksearch.org/")
-    (synopsis "Pluggable search for Django")
-    (description "Haystack provides modular search for Django.  It features a
-unified, familiar API that allows you to plug in different search backends
-(such as Solr, Elasticsearch, Whoosh, Xapian, etc.) without having to modify
-your code.")
-    (license license:bsd-3)))
-
-(define-public python-pysolr
-  (package
-    (name "python-pysolr")
-    (version "3.9.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "pysolr" version))
-        (sha256
-         (base32
-          "1rj5jmscvxjwcmlfi6hmkj44l4x6n3ln5p7d8d18j566hzmmzw3f"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:tests? #f)) ; Tests require network access.
-    (propagated-inputs
-     `(("python-requests" ,python-requests)))
-    (native-inputs
-     `(("python-setuptools-scm" ,python-setuptools-scm)))
-    (home-page "https://github.com/django-haystack/pysolr/")
-    (synopsis "Lightweight python wrapper for Apache Solr")
-    (description
-     "Lightweight python wrapper for Apache Solr.")
-    (license license:bsd-3)))
-
-(define-public python-geopy
-  (package
-    (name "python-geopy")
-    (version "2.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "geopy" version))
-        (sha256
-         (base32
-          "0fx0cv0kgbvynpmjgsvq2fpsyngd5idiscdn8pd5201f1ngii3mq"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-geographiclib" ,python-geographiclib)))
-    (native-inputs
-     `(("python-async-generator" ,python-async-generator)
-       ("python-coverage" ,python-coverage)
-       ("python-flake8" ,python-flake8)
-       ("python-isort" ,python-isort)
-       ("python-pytest" ,python-pytest)
-       ("python-pytest-aiohttp" ,python-pytest-aiohttp)
-       ("python-readme-renderer" ,python-readme-renderer)
-       ("python-pytz" ,python-pytz)))
-    (home-page "https://github.com/geopy/geopy")
-    (synopsis "Python Geocoding Toolbox")
-    (description "Python Geocoding Toolbox.")
-    (license license:expat)))
-
-(define-public python-pytest-aiohttp
-  (package
-    (name "python-pytest-aiohttp")
-    (version "0.3.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "pytest-aiohttp" version))
-       (sha256
-        (base32
-         "0kx4mbs9bflycd8x9af0idcjhdgnzri3nw1qb0vpfyb3751qaaf9"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-aiohttp" ,python-aiohttp)))
-    (home-page "https://github.com/aio-libs/pytest-aiohttp/")
-    (synopsis "Pytest plugin for aiohttp support")
-    (description "This package provides a pytest plugin for aiohttp support.")
-    (license license:asl2.0)))
-
-(define-public python-geographiclib
-  (package
-    (name "python-geographiclib")
-    (version "1.50")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "geographiclib" version))
-        (sha256
-         (base32
-          "0cn6ap5fkh3mkfa57l5b44z3gvz7j6lpmc9rl4g2jny2gvp4dg8j"))))
-    (build-system python-build-system)
-    (home-page "https://geographiclib.sourceforge.io/1.50/python/")
-    (synopsis "Python geodesic routines from GeographicLib")
-    (description
-     "This is a python implementation of the geodesic routines in GeographicLib.")
-    (license license:expat)))
-
-(define-public python-readme-renderer
-  (package
-    (name "python-readme-renderer")
-    (version "26.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "readme_renderer" version))
-        (sha256
-         (base32
-          "13fnrv7z3y0yfafzcjbl55cqxncvbxadr72ql4l29pgyvrqxpsfb"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-bleach" ,python-bleach)
-       ("python-docutils" ,python-docutils)
-       ("python-pygments" ,python-pygments)
-       ("python-six" ,python-six)))
-    (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-pytest" ,python-pytest)))
-    (home-page "https://github.com/pypa/readme_renderer")
-    (synopsis "Render README files in Warehouse")
-    (description
-     "Readme Renderer is a library that will safely render arbitrary README
-files into HTML.  It is designed to be used in Warehouse to render the
-@code{long_description} for packages.  It can handle Markdown, reStructuredText,
-and plain text.")
-    (license license:asl2.0)))
-
-(define-public python-django-mailman3
-  (package
-    (name "python-django-mailman3")
-    (version "1.3.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "django-mailman3" version))
-        (sha256
-         (base32
-          "1yrm7wpjy34xai72vn2vkhc9131cdrbqy08rrabf36kynj5vcdvy"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (setenv "DJANGO_SETTINGS_MODULE"
-                     "django_mailman3.tests.settings_test")
-             (invoke "django-admin" "test"
-                     "--pythonpath=."))))))
-    (propagated-inputs
-     `(("python-django" ,python-django)
-       ("python-django-allauth" ,python-django-allauth-gn)
-       ("python-django-gravatar2" ,python-django-gravatar2)
-       ("python-mailmanclient" ,python-mailmanclient-3.3)
-       ("python-pytz" ,python-pytz)))
-    (native-inputs
-     `(("python-mock" ,python-mock)))
-    (home-page "https://gitlab.com/mailman/django-mailman3")
-    (synopsis "Django library to help interaction with Mailman")
-    (description
-     "This package contains libraries and templates for Django-based interfaces
-interacting with Mailman.")
-    (license license:gpl3+)))
-
-(define-public python-django-allauth-gn
-  (package
-    (inherit python-django-allauth)
-    (name "python-django-allauth")
-    (version "0.40.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "django-allauth" version))
-        (sha256
-         (base32
-          "12f5gjidcpb7a0d1f601k0c5dcdmb6fg9sfn7xn5j8zfsg29y63a"))))
-    (arguments
-     '(#:tests? #f)) ; skip tests for now
-    (propagated-inputs
-     `(("python-django" ,python-django)
-       ("python-openid" ,python-openid)
-       ("python-requests" ,python-requests)
-       ("python-requests-oauthlib" ,python-requests-oauthlib)))))
-
-(define-public python-django-q
-  (package
-    (name "python-django-q")
-    (version "1.3.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "django-q" version))
-        (sha256
-         (base32
-          "0ac3rjxv37bn97a62ly8b7qvbv765z6paiinzpwxx83nal2icc42"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (setenv "DJANGO_SETTINGS_MODULE" "django_q.tests.settings")
-             (invoke "django-admin" "test" "django_q.tests"
-                     "--pythonpath=."))))))
-    (propagated-inputs
-     `(("python-arrow" ,python-arrow)
-       ("python-blessed" ,python-blessed)
-       ("python-django" ,python-django)
-       ("python-django-picklefield" ,python-django-picklefield)))
-    (native-inputs
-     `(("python-django-redis" ,python-django-redis)
-       ("python-pytest-django" ,python-pytest-django)))
-    (home-page "https://django-q.readthedocs.io/")
-    (synopsis "Multiprocessing distributed task queue for Django")
-    (description
-     "Django Q is a native Django task queue, scheduler and worker application
-using Python multiprocessing.")
-    (license license:expat)))
-
-(define-public python-robot-detection
-  (package
-    (name "python-robot-detection")
-    (version "0.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "robot-detection" version))
-        (sha256
-         (base32
-          "1xd2jm3yn31bnk1kqzggils2rxj26ylxsfz3ap7bhr3ilhnbg3rx"))))
-    (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; Tests not shipped in pypi release.
-    (propagated-inputs `(("python-six" ,python-six)))
-    (home-page "https://github.com/rory/robot-detection")
-    (synopsis "Detect web crawlers")
-    (description
-     "@code{robot_detection} is a python module to detect if a given HTTP User
-Agent is a web crawler.  It uses the list of registered robots from
-@url{http://www.robotstxt.org}.")
-    (license license:gpl3+)))
-
-(define-public python-rcssmin
-  (package
-    (name "python-rcssmin")
-    (version "1.0.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "rcssmin" version))
-        (sha256
-         (base32
-          "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "python" "run_tests.py" "tests"))))))
-    (home-page "http://opensource.perlig.de/rcssmin/")
-    (synopsis "CSS Minifier")
-    (description "CSS Minifier")
-    (license license:asl2.0)))
-
-(define-public python-rjsmin
-  (package
-    (name "python-rjsmin")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "rjsmin" version))
-        (sha256
-         (base32
-          "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi"))))
-    (build-system python-build-system)
-    (native-inputs
-     `(("python-pytest" ,python-pytest)))
-    (home-page "http://opensource.perlig.de/rjsmin/")
-    (synopsis "Javascript Minifier")
-    (description "Javascript Minifier")
-    (license license:asl2.0)))
-
-(define-public python-blessed
-  (package
-    (name "python-blessed")
-    (version "1.17.8")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "blessed" version))
-        (sha256
-         (base32
-          "1wdj342sk22hfrg0n91x2qnqsbzbiyq9y009v3pxnvfzn9bx0wbn"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            ;; Don't get hung up on Windows test failures.
-            (delete-file "blessed/win_terminal.py") #t))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-jinxed" ,python-jinxed)
-       ("python-six" ,python-six)
-       ("python-wcwidth" ,python-wcwidth)))
-    (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-pytest" ,python-pytest)))
-    (home-page "https://github.com/jquast/blessed")
-    (synopsis "Wrapper around terminal capabilities")
-    (description
-     "Blessed is a thin, practical wrapper around terminal styling, screen
-positioning, and keyboard input.")
-    (license license:expat)))
-
-(define-public python-django-picklefield
-  (package
-    (name "python-django-picklefield")
-    (version "2.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "django-picklefield" version))
-        (sha256
-         (base32
-          "0imncys5s3vsy2q79nn7k5d670da1xgmcr9gmhn06fry6ibf39b7"))))
-    (build-system python-build-system)
-    (propagated-inputs `(("python-django" ,python-django)))
-    (native-inputs `(("python-tox" ,python-tox)))
-    (home-page "https://github.com/gintas/django-picklefield")
-    (synopsis "Pickled object field for Django")
-    (description "Pickled object field for Django")
-    (license license:expat)))
-
-(define-public python-jinxed
-  (package
-    (name "python-jinxed")
-    (version "1.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "jinxed" version))
-        (sha256
-         (base32
-          "1n7vl03rhjd0xhjgbjlh8x9f8yfbhamcwkgvs4jg7g5qj8f0wk89"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'set-environment-variables
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((ncurses (assoc-ref inputs "ncurses")))
-               (setenv "TERM" "LINUX")
-               (setenv "TERMINFO" (string-append ncurses "/share/terminfo"))
-               #t))))
-       #:tests? #f)) ; _curses.error: setupterm: could not find terminal
-    (native-inputs
-     `(("ncurses" ,ncurses)))
-    (home-page
-      "https://github.com/Rockhopper-Technologies/jinxed")
-    (synopsis "Jinxed Terminal Library")
-    (description
-     "Jinxed is an implementation of a subset of the Python curses library.")
-    (license license:mpl2.0)))
-
-(define-public postorius-1.3
-  (package
-    (name "postorius")
-    (version "1.3.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "postorius" version))
-        (sha256
-         (base32
-          "08jn23gblbkfl09qlykbpsmp39mmach3sl69h1j5cd5kkx839rwa"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (add-installed-pythonpath inputs outputs)
-             (if tests?
-                 (invoke "python" "example_project/manage.py" "test"
-                         "--settings=test_settings" "postorius")
-                 #t))))
-       #:tests? #f)) ; Tests try to run a mailman instance to test against.
-    (propagated-inputs
-     `(("python-django" ,python-django)
-       ("python-django-mailman3" ,python-django-mailman3)
-       ("python-mailmanclient" ,python-mailmanclient-3.3)
-       ("python-readme-renderer" ,python-readme-renderer)))
-    (native-inputs
-     `(("python-beautifulsoup4" ,python-beautifulsoup4)
-       ("python-isort" ,python-isort)
-       ("python-mock" ,python-mock)
-       ("python-vcrpy" ,python-vcrpy)))
-    (home-page "https://gitlab.com/mailman/postorius")
-    (synopsis "Web user interface for GNU Mailman")
-    (description
-     "Postorius is a Django app which provides a web user interface
-to access GNU Mailman.")
-    (license (list license:gpl3+ license:lgpl3+))))
diff --git a/gn/packages/twint.scm b/gn/packages/twint.scm
index 14f04c4..cc538dd 100644
--- a/gn/packages/twint.scm
+++ b/gn/packages/twint.scm
@@ -4,14 +4,14 @@
   #:use-module (guix build-system python)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (gn packages mailman)
   #:use-module (gnu packages check)
-  #:use-module (gnu packages sphinx)
-  #:use-module (gnu packages time)
+  #:use-module (gnu packages geo)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-science)
-  #:use-module (gnu packages python-xyz))
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages time))
 
 (define-public python-googletransx
   (package
@@ -60,41 +60,6 @@
      "A Python 2.* port of 3.4 Statistics Module")
     (license #f)))
 
-(define-public python-geopy
-  (package
-  (name "python-geopy")
-  (version "1.22.0")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (pypi-uri "geopy" version))
-      (sha256
-        (base32
-          "0jypkaqlbyr8icqypwm23lzsvq7flakp3a3nqr8ib5fmd0fzsq7q"))))
-  (build-system python-build-system)
-  (arguments
-   `(#:tests? #f))
-  (propagated-inputs
-    `(("python-geographiclib" ,python-geographiclib)))
-  (native-inputs
-    `(("python-contextlib2" ,python-contextlib2)
-      ("python-coverage" ,python-coverage)
-      ("python-flake8" ,python-flake8)
-      ("python-isort" ,python-isort)
-      ("python-mock" ,python-mock)
-      ("python-pytest" ,python-pytest)
-      ("python-readme-renderer"
-       ,python-readme-renderer)
-      ("python-six" ,python-six)
-      ("python-sphinx" ,python-sphinx)
-      ("python-sphinx-rtd-theme"
-       ,python-sphinx-rtd-theme)
-      ("python-statistics" ,python-statistics)))
-  (home-page "https://github.com/geopy/geopy")
-  (synopsis "Python Geocoding Toolbox")
-  (description "Python Geocoding Toolbox")
-  (license license:expat)))
-
 (define-public python-fake-useragent
   (package
     (name "python-fake-useragent")
@@ -138,28 +103,6 @@
       "cChardet is high speed universal character encoding detector.")
     (license #f)))
 
-(define-public python-geographiclib
-  (package
-  (name "python-geographiclib")
-  (version "1.50")
-  (source
-   (origin
-     (method url-fetch)
-     (uri (pypi-uri "geographiclib" version))
-     (sha256
-      (base32
-       "0cn6ap5fkh3mkfa57l5b44z3gvz7j6lpmc9rl4g2jny2gvp4dg8j"))))
-  (build-system python-build-system)
-  (arguments
-   `(#:tests? #f))
-  (home-page
-   "https://geographiclib.sourceforge.io/1.50/python")
-  (synopsis
-   "The geodesic routines from GeographicLib")
-  (description
-   "The geodesic routines from GeographicLib")
-  (license license:expat)))
-
 (define-public python-twint
   (package
     (name "python-twint")