diff options
-rw-r--r-- | gn/packages/bnw.scm | 2 | ||||
-rw-r--r-- | gn/packages/crates-io.scm | 2 | ||||
-rw-r--r-- | gn/packages/cwl.scm | 150 | ||||
-rw-r--r-- | gn/packages/edash.scm | 23 | ||||
-rw-r--r-- | gn/packages/genenetwork.scm | 29 | ||||
-rw-r--r-- | gn/packages/graphviz.scm | 42 | ||||
-rw-r--r-- | gn/packages/jupyterhub.scm | 150 | ||||
-rw-r--r-- | gn/packages/mailman.scm | 1735 | ||||
-rw-r--r-- | gn/packages/python.scm | 11 | ||||
-rw-r--r-- | gn/packages/python24.scm | 112 | ||||
-rw-r--r-- | gn/packages/twint.scm | 65 | ||||
-rw-r--r-- | gn/packages/web.scm | 277 | ||||
-rw-r--r-- | gn/services/genenetwork.scm | 68 |
13 files changed, 216 insertions, 2450 deletions
diff --git a/gn/packages/bnw.scm b/gn/packages/bnw.scm index 043077d..bdcaeb0 100644 --- a/gn/packages/bnw.scm +++ b/gn/packages/bnw.scm @@ -6,7 +6,7 @@ #:use-module (gnu packages gcc) #:use-module (gnu packages python) #:use-module (gnu packages statistics) - #:use-module (gn packages graphviz) + #:use-module (past packages graphviz) #:use-module (gn packages javascript) #:use-module (gn packages maths) #:use-module (gn packages python) diff --git a/gn/packages/crates-io.scm b/gn/packages/crates-io.scm index f8c2cba..775a5e9 100644 --- a/gn/packages/crates-io.scm +++ b/gn/packages/crates-io.scm @@ -31,7 +31,7 @@ ;("rust-blas-src" ,rust-blas-src-0.2) ("rust-cblas-sys" ,rust-cblas-sys-0.1) ("rust-rustc-serialize" ,rust-rustc-serialize-0.3) - ("rust-serde" ,rust-serde-1.0)) + ("rust-serde" ,rust-serde-1)) #:cargo-development-inputs (("rust-defmac" ,rust-defmac-0.1) ("rust-quickcheck" ,rust-quickcheck-0.7) diff --git a/gn/packages/cwl.scm b/gn/packages/cwl.scm index be531f6..3e0576c 100644 --- a/gn/packages/cwl.scm +++ b/gn/packages/cwl.scm @@ -1,91 +1,109 @@ -;; Experimental packaging for the Common Workflow Language (started by Bruno) - (define-module (gn packages cwl) #:use-module ((guix licenses) #:prefix license:) + #:use-module (gn packages python) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages check) - #:use-module (gnu packages databases) - #:use-module (gnu packages python) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages node) #:use-module (gnu packages rdf) #:use-module (gnu packages serialization) #:use-module (gnu packages time) - #:use-module (gnu packages version-control) - #:use-module (gnu packages xml) - #:use-module (gn packages python) - #:use-module (guix download) - #:use-module (guix packages) - #:use-module (guix git-download) - #:use-module (guix utils) - ; #:use-module (guix build-system gnu) - #:use-module (guix build-system python) - ; #:use-module (guix build-system trivial) - #:use-module (srfi srfi-1)) + #:use-module (gnu packages xml)) -(define-public cwltool ; guix: needs work - (let ((commit "15539fba76993f951af9eba913bea6d677c74005")) +(define-public cwltool (package (name "cwltool") - (version "1.0.20181012180214") + (version "3.0.20200710214758") (source (origin - ; (method url-fetch) - ; (uri (string-append - ; "https://pypi.python.org/packages/source/c/cwltool/cwltool-" - ; version - ; ".tar.gz")) - (method git-fetch) - (uri (git-reference - (url "https://github.com/genenetwork/cwltool.git") ;; my repo for Python 3.7 - (commit commit))) - (file-name (git-file-name name (string-append version "-" (string-take commit 7)))) + (method url-fetch) + (uri (pypi-uri "cwltool" version)) (sha256 - (base32 - "1qwfa82car7477sy0cb5bj4964w7zq7dcw2bdcls6c2i9qdp0586")))) + (base32 + "1qbqkhinkhzg98jf24d5gnafsw23kng76rbi2hfvzl18bdsp1zz5")))) (build-system python-build-system) - (propagated-inputs ; a lot of these are used for testing - `(("git" ,git) - ("node" ,node) - ("python-bagit" ,python-bagit) - ("python-arcp" ,python-arcp) - ("python-setuptools" ,python-setuptools) - ("python-dateutil" ,python-dateutil) - ("python-pytest-cov" ,python-pytest-cov) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'loosen-version-restrictions + (lambda _ + (substitute* "setup.py" + (("== 1.5.1") ">=1.5.1")) + #t)) + (add-after 'unpack 'modify-tests + (lambda _ + ;; Tries to connect to the internet. + (delete-file "tests/test_udocker.py") + (substitute* "tests/test_http_input.py" + (("https://raw.githubusercontent.com/common-workflow-language/cwltool/main") + ".")) + (substitute* "tests/test_load_tool.py" + (("def test_load_graph_fragment_from_packed") + "@pytest.mark.skip(reason=\"Disabled by Guix\")\ndef test_load_graph_fragment_from_packed")) + (substitute* "tests/test_examples.py" + (("def test_env_filtering") + "@pytest.mark.skip(reason=\"Disabled by Guix\")\ndef test_env_filtering")) + ;; Tries to use cwl-runners. + (substitute* "tests/test_examples.py" + (("def test_v1_0_arg_empty_prefix_separate_false") + "@pytest.mark.skip(reason=\"Disabled by Guix\")\ndef test_v1_0_arg_empty_prefix_separate_false")) + #t))))) + (propagated-inputs + `(("python-bagit" ,python-bagit) + ("python-coloredlogs" ,python-coloredlogs) + ("python-mypy-extensions" ,python-mypy-extensions) ("python-prov" ,python-prov) - ("python-pytest-runner" ,python-pytest-runner) + ("python-psutil" ,python-psutil) ("python-rdflib" ,python-rdflib) - ("python-pyparsing" ,python-pyparsing) - ("python-pytest-mock" ,python-pytest-mock) - ("python-mock" ,python-mock) - ("python-subprocess32" ,python-subprocess32) + ("python-requests" ,python-requests) ("python-ruamel.yaml" ,python-ruamel.yaml) + ("python-schema-salad" ,python-schema-salad) + ("python-setuptools" ,python-setuptools) + ("python-shellescape" ,python-shellescape) + ("python-typing-extensions" ,python-typing-extensions) + ;; Not listed as needed but seems to be necessary: + ("node" ,node) ("python-cachecontrol" ,python-cachecontrol-0.11) + ("python-dateutil" ,python-dateutil) ("python-lxml" ,python-lxml) - ("python-mypy-extensions" ,python-mypy-extensions) - ("python-mistune" ,python-mistune) - ("python-networkx" ,python-networkx) - ("python-schema-salad" ,python-schema-salad) - ("python-html5lib" ,python-html5lib) - ("python-rdflib-jsonld" ,python-rdflib-jsonld) - ("python-scandir" ,python-scandir) - ("python-psutil" ,python-psutil) - )) - ; (arguments `(#:tests? #f)) ;; CWL includes no tests. - (arguments - `(;#:phases - ; (modify-phases %standard-phases - ; (replace 'check - ; (lambda* (#:key inputs outputs #:allow-other-keys) - ; (invoke "python" "-m" "pytest") - ; ))) - #:tests? #f)) ; Disable for now + ("python-networkx" ,python-networkx))) + (native-inputs + `(("python-arcp" ,python-arcp) + ("python-humanfriendly" ,python-humanfriendly) + ("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-mock" ,python-pytest-mock) + ("python-pytest-runner" ,python-pytest-runner) + ("python-rdflib-jsonld" ,python-rdflib-jsonld))) + (home-page + "https://github.com/common-workflow-language/common-workflow-language") + (synopsis "Common workflow language reference implementation") + (description + "Common workflow language reference implementation.") + (license license:asl2.0))) +(define-public cwl-runner + (package + (name "cwl-runner") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cwl_runner" version)) + (sha256 + (base32 + "0011am2xqwchysdznayrmwhg4bfjl4wlq6m4k20z1m7gccyzjgw0")))) + (build-system python-build-system) + (propagated-inputs + `(("cwltool" ,cwltool))) (home-page - "https://github.com/common-workflow-language/common-workflow-language") - (synopsis - "Common workflow language reference implementation") + "https://github.com/common-workflow-language/common-workflow-language") + (synopsis "Common workflow language reference implementation") (description - "Common workflow language reference implementation") - (license license:asl2.0)))) + "Common workflow language reference implementation.") + (license license:asl2.0))) 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/genenetwork.scm b/gn/packages/genenetwork.scm index 671d5e9..8a76327 100644 --- a/gn/packages/genenetwork.scm +++ b/gn/packages/genenetwork.scm @@ -31,13 +31,13 @@ #:use-module (gnu packages web) #:use-module (gnu packages wget) #:use-module (gnu packages xml) + #:use-module (past packages graphviz) #:use-module (past packages python) #:use-module (gn packages bioinformatics) #:use-module (gn packages twint) #:use-module (gn packages crates-io) #:use-module (gn packages elixir) #:use-module (gn packages gemma) - #:use-module (gn packages graphviz) #:use-module (gn packages javascript) #:use-module (gn packages phewas) #:use-module (gn packages python) @@ -259,8 +259,8 @@ implemented, light on server resource usage, and fairly speedy.") (("rust-rand" ,rust-rand-0.6) ("rust-structopt" ,rust-structopt-0.2) ("rust-rayon" ,rust-rayon-1) - ("rust-serde" ,rust-serde-1.0) - ("rust-serde-json" ,rust-serde-json-1.0) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) ("rust-ndarray" ,rust-ndarray-0.12)) #:phases (modify-phases %standard-phases @@ -318,6 +318,7 @@ implemented, light on server resource usage, and fairly speedy.") ("rust-qtlreaper" ,rust-qtlreaper) ("nginx" ,nginx) ("python-twint" ,python-twint) + ("python2-coverage" ,python2-coverage) ("python2-flask" ,python2-flask) ("python2-gunicorn-gn" ,python2-gunicorn-gn) ; ("python2-pillow" ,python2-pillow) - for later! @@ -334,7 +335,9 @@ implemented, light on server resource usage, and fairly speedy.") ("python2-scipy" ,python2-scipy) ("python2-lxml" ,python2-lxml) ("python2-mechanize" ,python2-mechanize) + ("python2-mock" ,python2-mock) ("python2-mysqlclient" ,python2-mysqlclient) + ("python2-nose" ,python-nose2) ("python2-numarray" ,python2-numarray) ("python2-numpy" ,python2-numpy) ("python2-pandas" ,python2-pandas) @@ -823,8 +826,8 @@ written in C") (license license:agpl3+)))) (define-public genenetwork1 - (let ((commit "19791ce6b3c38be8cbf9bc9cd3e95dbee14116c2") ; Aug 23, 2018 - (revision "1")) + (let ((commit "acf65ac9ae4be395c07c1629758f7408bf4eab5f") ; June 3, 2020 + (revision "2")) (package (name "genenetwork1") (version (git-version "0.0.0" revision commit)) @@ -836,12 +839,11 @@ written in C") (file-name (git-file-name name version)) (sha256 (base32 - "1s735dj8kf98gf5w58p10zzyc5766gn27j4j5yh07ksadg7h1kdi")))) + "0xmmmjyvh80yd8b0cjrwpdmxl8k9zj5ly65r2g9aygx74njsp4fi")))) (build-system gnu-build-system) - (propagated-inputs + (native-inputs `(("ghostscript" ,ghostscript) ("graphviz" ,graphviz-2.26) - ("httpd" ,httpd22-mod-python-24) ("python24" ,python-2.4) ("python-piddle" ,python24-piddle) ("wget" ,wget))) @@ -879,6 +881,17 @@ written in C") (("PIDDLE_FONT_PATH.*/lib") (string-append "PIDDLE_FONT_PATH = '" piddle "/lib")))) #t)) + (add-after 'patch-generated-file-shebangs 'changes-for-deployed-service + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "web/webqtl/base/webqtlConfigLocal.py" + ;; Where GN1 is located: + (("/gnshare/gn") out) + ;; Where the database is located: + (("tux01") "localhost")) + ;; This directory is expected to be writable + (symlink "/tmp" "web/tmp") + #t))) (add-before 'install 'replace-htaccess-file (lambda _ (delete-file "web/webqtl/.htaccess") diff --git a/gn/packages/graphviz.scm b/gn/packages/graphviz.scm deleted file mode 100644 index 22a8959..0000000 --- a/gn/packages/graphviz.scm +++ /dev/null @@ -1,42 +0,0 @@ -(define-module (gn packages graphviz) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix utils) - #:use-module (gnu packages gl) - #:use-module (gnu packages graphviz) - #:use-module (gnu packages gtk) - #:use-module (srfi srfi-1)) - -(define-public graphviz-2.26 - (package - (inherit graphviz) - (name "graphviz") - (version "2.26.3") - (outputs '("out")) - (source - (origin - (method url-fetch) - (uri (string-append - ;; TODO: Replace with official release - "mirror://debian/pool/main/g/graphviz/" - "graphviz_" version ".orig.tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "18bzyg17ni0lpcd2g5dhan8fjv3vzkjym38jq8vm42did5p9j47l")))) - ;; TODO: unbundle libraries? - (arguments - `(#:configure-flags '("--enable-swig=no") - ,@(substitute-keyword-arguments (package-arguments graphviz) - ((#:phases phases) - `(modify-phases ,phases - (delete 'move-docs) ; one output - (delete 'move-guile-bindings)))))) - (inputs - ;; TODO(?): Add perl, guile@1.8, gtk@2, lua5.1, tcl8.[3-6], rsvg, python-2.4 - `(("gdk-pixbuf" ,gdk-pixbuf) - ("freeglut" ,freeglut) - ,@(fold alist-delete (package-inputs graphviz) - '("libjpeg-turbo" "guile" "swig")))) - (license license:cpl1.0))) diff --git a/gn/packages/jupyterhub.scm b/gn/packages/jupyterhub.scm index 43da8ec..f3afa65 100644 --- a/gn/packages/jupyterhub.scm +++ b/gn/packages/jupyterhub.scm @@ -266,36 +266,6 @@ balancing and can configure itself automatically and dynamically.") "Simple, generic API for escaping strings.") (license license:expat))) -(define-public python-tenacity - (package - (name "python-tenacity") - (version "6.0.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "tenacity" version)) - (sha256 - (base32 - "0w9miqmmi63yqp9lw7p6nf6gh5pa57vg60v6f94f11qqpg19gwvj")))) - (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "pytest")))))) - (propagated-inputs - `(("python-six" ,python-six))) - (native-inputs - `(("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-tornado" ,python-tornado))) - (home-page "https://github.com/jd/tenacity") - (synopsis "Retry code until it succeeeds") - (description "Tenacity is a general-purpose retrying library to simplify the -task of adding retry behavior to just about anything.") - (license license:asl2.0))) - (define-public python-certipy (package (name "python-certipy") @@ -362,126 +332,6 @@ task of adding retry behavior to just about anything.") (description "PAM interface using ctypes") (license license:expat))) -(define-public python-pifpaf - (package - (name "python-pifpaf") - (version "2.2.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pifpaf" version)) - (sha256 - (base32 - "09xixb4ddjp15spbm2788yq6rjr5fzy1p8dzcqyzp6pbkv7vwxvg")))) - (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "python" "setup.py" "testr" "--slowest" - "--testr-args=until-failure")))))) - (propagated-inputs - `(("python-click" ,python-click) - ("python-daiquiri" ,python-daiquiri) - ("python-fixtures" ,python-fixtures) - ("python-jinja2" ,python-jinja2) - ("python-pbr" ,python-pbr) - ("python-psutil" ,python-psutil) - ("python-six" ,python-six) - ("python-xattr" ,python-xattr))) - (native-inputs - `(("python-mock" ,python-mock) - ("python-os-testr" ,python-os-testr) - ("python-requests" ,python-requests) - ("python-testrepository" ,python-testrepository) - ("python-testtools" ,python-testtools))) - (home-page "https://github.com/jd/pifpaf") - (synopsis - "Suite of tools and fixtures to manage daemons for testing") - (description - "Suite of tools and fixtures to manage daemons for testing") - (license license:asl2.0))) - -(define-public python-daiquiri - (package - (name "python-daiquiri") - (version "1.6.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "daiquiri" version)) - (sha256 - (base32 - "1hclvhfm3ix40g3m7g14w0nz2qawb7gp3fjba7d6xzxhh9mj6fn1")))) - (build-system python-build-system) - (native-inputs - `(("python-json-logger" ,python-json-logger) - ("python-pbr" ,python-pbr) - ("python-pytest" ,python-pytest) - ("python-six" ,python-six))) - (home-page "https://github.com/jd/daiquiri") - (synopsis "Library to configure Python logging easily") - (description - "Library to configure Python logging easily") - (license license:asl2.0))) - -(define-public python-xattr - (package - (name "python-xattr") - (version "0.9.6") - (source - (origin - (method url-fetch) - (uri (pypi-uri "xattr" version)) - (sha256 - (base32 - "0n3llkk488bjywzifgyhyxcfdz22851k3s2h8g69kzmlxa7b5cbw")))) - (build-system python-build-system) - (propagated-inputs - `(("python-cffi" ,python-cffi))) - (home-page "https://github.com/xattr/xattr") - (synopsis "Python wrapper for extended filesystem attributes") - (description - "Python wrapper for extended filesystem attributes") - (license license:expat))) - -(define-public python-json-logger - (package - (name "python-json-logger") - (version "0.1.11") - (source - (origin - (method url-fetch) - (uri (pypi-uri "python-json-logger" version)) - (sha256 - (base32 - "10g2ya6nsvn5vxzvq2wb8q4d43i3d7756i5rxyjna6d0y9i138xp")))) - (build-system python-build-system) - (home-page "https://github.com/madzak/python-json-logger") - (synopsis "Python library adding a json log formatter") - (description - "A python library adding a json log formatter") - (license license:bsd-3))) - -(define-public python-websockets - (package - (name "python-websockets") - (version "8.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "websockets" version)) - (sha256 - (base32 - "03s3ml6sbki24aajllf8aily0xzrn929zxi84p50zkkbikdd4raw")))) - (build-system python-build-system) - (home-page "https://github.com/aaugustin/websockets") - (synopsis "Implementation of the WebSocket Protocol") - (description - "An implementation of the WebSocket Protocol (RFC 6455 & 7692).") - (license license:bsd-3))) - (define-public python-pytoml (package (name "python-pytoml") diff --git a/gn/packages/mailman.scm b/gn/packages/mailman.scm deleted file mode 100644 index db2b92d..0000000 --- a/gn/packages/mailman.scm +++ /dev/null @@ -1,1735 +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.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "mailman" version)) - (sha256 - (base32 - "1qph9i93ndahfxi3bb2sd0kjm2c0pkh844ai6zacfmvihl1k3pvy")))) - (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) ; built into python-3.7 - ("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.12.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "authheaders" version)) - (sha256 - (base32 - "1ljcp8vk2n4xwk8p758b6q5sgdicyj4gxxpkmh33mx21jscn6q4i")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Remove bundled public suffix list and its license. - (delete-file "authheaders/public_suffix_list.txt") - (delete-file "MPL-2.0") - #t)))) - (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'build 'configure-public-suffix-list - ;; Use public suffix list from Guix package. - (lambda* (#:key inputs #:allow-other-keys) - (let ((publicsuffix (assoc-ref inputs "python-publicsuffix"))) - (invoke "python" "setup.py" "psllocal" - (string-append "--path=" publicsuffix "/lib/python" - (python-version (assoc-ref inputs "python")) - "/site-packages/publicsuffix" - "/public_suffix_list.dat")) - #t))) - (replace 'check - (lambda _ - ;; Make it find the only test file. - (invoke "python" "-m" "unittest" "-v" "test" - "authheaders/test/test_authentication.py") - #t))))) - (propagated-inputs - `(("python-authres" ,python-authres) - ("python-dkimpy" ,python-dkimpy) - ("python-dnspython" ,python-dnspython) - ("python-publicsuffix" ,python-publicsuffix))) - (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.¬ - (license (list license:zpl2.1 license:zlib)))) - -(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") - (source - (origin - (method url-fetch) - (uri (pypi-uri "flufl.bounce" version)) - (sha256 - (base32 - "0k5kjqa3x6gvwwxyzb2vwi1g1i6asm1zw5fivylxz3d583y4kid2")))) - (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 "2.0.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "flufl.i18n" version)) - (sha256 - (base32 - "1csgds59nx0ann9v2alqr69lakp1cnc1ikmbgn96l6n23js7c2ah")))) - (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 "3.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "flufl.lock" version)) - (sha256 - (base32 - "0nzzd6l30ff6cwsrlrb94xzfja4wkyrqv3ydc6cz0hdbr766mmm8")))) - (build-system python-build-system) - (propagated-inputs - `(("python-atpublic" ,python-atpublic))) - (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 "1.0.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "importlib_resources" version)) - (sha256 - (base32 - "0y3hg12iby1qyaspnbisz4s4vxax7syikk3skznwqizqyv89y9yk")))) - (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "python" "-m" "unittest" "discover")))))) - (propagated-inputs - `(("python-pathlib2" ,python-pathlib2))) - (native-inputs - `(("python-wheel" ,python-wheel))) - (home-page "https://importlib-resources.readthedocs.io/") - (synopsis "Read resources from Python packages") - (description - "@code{importlib_resources} is a backport of Python 3.7's standard library -@code{importlib.resources} module for Python 2.7, and 3.4 through 3.6.") - (license license:asl2.0))) - -(define-public python-lazr-config - (package - (name "python-lazr-config") - (version "2.2.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "lazr.config" version)) - (sha256 - (base32 - "1s7pyvlq06qjrkaw9r6nc290lb095n25ybzgavvy51ygpxkgqxwn")))) - (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.5") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.component" version)) - (sha256 - (base32 - "0mafp41aqcffbfl9dsac34clc7zlpxwwzkx8jllbg4xmqckddpvf")))) - (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-zope-component-bootstrap - (package - (inherit python-zope-component) - (arguments `(#:tests? #f)) - (native-inputs `()) - (properties `((hidden? . #t))))) - -(define-public python-zope-configuration - (package - (name "python-zope-configuration") - (version "4.3.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.configuration" version)) - (sha256 - (base32 - "1qb88764fd7nkkmqv7fl9bxd1jirynkg5vbqkpqdiffnkxzp85kf")))) - (build-system python-build-system) - (propagated-inputs - `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid) - ("python-zope-interface" ,python-zope-interface) - ("python-zope-schema" ,python-zope-schema))) - (native-inputs - `(("python-manuel" ,python-manuel) - ("python-zope-schema" ,python-zope-schema) - ("python-zope-testing" ,python-zope-testing) - ("python-zope-testrunner" ,python-zope-testrunner))) - (home-page "https://github.com/zopefoundation/zope.configuration") - (synopsis "Zope Configuration Markup Language (ZCML)") - (description - "Zope Configuration Markup Language (ZCML)") - (license license:zpl2.1))) - -(define-public python-zope-configuration-bootstrap - (package - (inherit python-zope-configuration) - (arguments `(#:tests? #f)) - (native-inputs `()) - (properties `((hidden? . #t))))) - -(define-public python-zope-interface - (package - (name "python-zope-interface") - (version "4.6.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.interface" version)) - (sha256 - (base32 - "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v")))) - (build-system python-build-system) - (native-inputs - `(("python-coverage" ,python-coverage) - ("python-nose" ,python-nose) - ("python-zope-event" ,python-zope-event))) - (home-page "https://github.com/zopefoundation/zope.interface") - (synopsis "Interfaces for Python") - (description "Interfaces for Python") - (license license:zpl2.1))) - -(define-public python-dkimpy - (package - (name "python-dkimpy") - (version "0.9.5") - (source - (origin - (method url-fetch) - (uri (pypi-uri "dkimpy" version)) - (sha256 - (base32 - "1wlzahsy4dz3w7dzbr6ayd2vqps1zcbj6101lbbgarn43fkpmx3b")))) - (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 "4.2.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.hookable" version)) - (sha256 - (base32 - "05fy9lynyglzyiy1nbzdyv3rgvznwv0s0q0dr2hcavv6lclkkpy1")))) - (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-i18nmessageid - (package - (name "python-zope-i18nmessageid") - (version "4.3.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.i18nmessageid" version)) - (sha256 - (base32 - "1qw1f2p4ycqrm5ja4blwv2lllnn8d3jf2ml29pwadlvmivzys4g5")))) - (build-system python-build-system) - (propagated-inputs - `(("python-six" ,python-six))) - (native-inputs - `(("python-coverage" ,python-coverage) - ("python-nose" ,python-nose))) - (home-page "https://github.com/zopefoundation/zope.i18nmessageid") - (synopsis "Message Identifiers for internationalization") - (description - "This package provides facilities for declaring messages within program -source text; translation of the messages is the responsiblitiy of the -@code{zope.i18n} package.") - (license license:zpl2.1))) - -(define-public python-zope-schema - (package - (name "python-zope-schema") - (version "4.9.3") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.schema" version)) - (sha256 - (base32 - "178631dks473rfsfd46pmqipz7fdkn9bjd35j6qlgavwf2l1v5rd")))) - (build-system python-build-system) - (propagated-inputs - `(("python-zope-event" ,python-zope-event) - ("python-zope-interface" ,python-zope-interface))) - (native-inputs - `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid) - ("python-zope-testing" ,python-zope-testing) - ("python-zope-testrunner" ,python-zope-testrunner))) - (home-page "https://github.com/zopefoundation/zope.schema") - (synopsis "Zope.interface extension for defining data schemas") - (description - "Schemas extend the notion of interfaces to detailed descriptions of -Attributes (but not methods). Every schema is an interface and specifies the -public fields of an object. A field roughly corresponds to an attribute of a -Python object. But a Field provides space for at least a title and a -description. It can also constrain its value and provide a validation method. -Besides you can optionally specify characteristics such as its value being -read-only or not required.") - (license license:zpl2.1))) - -(define-public python-py3dns - (package - (name "python-py3dns") - (version "3.2.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "py3dns" version)) - (sha256 - (base32 - "1r25f0ys5p37bhld7m7n4gb0lrysaym3w318w2f8bncq7r3d81qz")))) - (build-system python-build-system) - ;; This package wants to read /etc/resolv.conf. We can't patch it without - ;; removing functionality so we copy from Nix and "just don't build it". - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda _ - (substitute* "setup.py" - (("import DNS") "") - (("DNS.__version__") (string-append "\"" ,version "\""))) - #t))) - #:tests? #f)) ; Also skip the tests. - (home-page "https://launchpad.net/py3dns") - (synopsis "Python 3 DNS library") - (description "This Python 3 module provides a DNS API for looking up DNS -entries from within Python 3 modules and applications. This module is a -simple, lightweight implementation.") - (license license:psfl))) - -(define-public python-zope-proxy - (package - (name "python-zope-proxy") - (version "4.3.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.proxy" version)) - (sha256 - (base32 - "05svkbri0jsavjy5jk36n1iba7z2ilb07zr8r3516765v5snjvdb")))) - (build-system python-build-system) - (propagated-inputs - `(("python-zope-interface" ,python-zope-interface))) - (native-inputs - `(("python-zope-security" ,python-zope-security-bootstrap) - ("python-zope-testrunner" ,python-zope-testrunner))) - (home-page "https://github.com/zopefoundation/zope.proxy") - (synopsis "Generic Transparent Proxies") - (description "@code{zope.proxy} is implemented via a C extension module, -which lets it do things like lie about its own __class__ that are difficult in -pure Python (and were completely impossible before metaclasses).") - (license license:zpl2.1))) - -(define-public python-zope-proxy-bootstrap - (package - (inherit python-zope-proxy) - (arguments `(#:tests? #f)) - (native-inputs `()) - (properties `((hidden? . #t))))) - -(define-public python-zope-testrunner - (package - (name "python-zope-testrunner") - (version "5.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.testrunner" version)) - (sha256 - (base32 - "0w3q66cy4crpj7c0hw0vvvvwf3g931rnvw7wwa20av7yqvv6ajim")))) - (build-system python-build-system) - (arguments - '(#:tests? #f)) ; Tests can't find zope.exceptions. - (propagated-inputs - `(("python-six" ,python-six) - ("python-zope-exceptions" ,python-zope-exceptions) - ("python-zope-interface" ,python-zope-interface))) - (native-inputs - `(("python-zope-testing" ,python-zope-testing))) - (home-page "https://github.com/zopefoundation/zope.testrunner") - (synopsis "Zope testrunner script") - (description "This package provides a flexible test runner with layer -support for the Zope framework.") - (license license:zpl2.1))) - -(define-public python-zope-testrunner-bootstrap - (package - (inherit python-zope-testrunner) - (arguments `(#:tests? #f)) - (propagated-inputs - `(("python-six" ,python-six) - ("python-zope-exceptions" ,python-zope-exceptions-bootstrap))) - (properties `((hidden? . #t))))) - -(define-public python-zope-exceptions - (package - (name "python-zope-exceptions") - (version "4.3") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.exceptions" version)) - (sha256 - (base32 - "04bjskwas17yscl8bs3l44maxspw1gdji0zcmr499fs420y9r9az")))) - (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-testrunner" ,python-zope-testrunner-bootstrap))) - (home-page "https://github.com/zopefoundation/zope.exceptions") - (synopsis "Zope Exceptions") - (description "This package contains exception exceptions and - implementations which are so general purpose that they don't belong in Zope - application-specific packages.") - (license license:zpl2.1))) - -(define-public python-zope-exceptions-bootstrap - (package - (inherit python-zope-exceptions) - (arguments `(#:tests? #f)) - (propagated-inputs `()) - (native-inputs `()) - (properties `((hidden? . #t))))) - -(define-public python-zope-testing - (package - (name "python-zope-testing") - (version "4.7") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.testing" version)) - (sha256 - (base32 - "1sh3c3i0m8n8fnhqiry0bk3rr356i56ry7calmn57s1pvv8yhsyn")))) - (build-system python-build-system) - (home-page "https://github.com/zopefoundation/zope.testing") - (synopsis "Zope testing helpers") - (description "This package provides a number of Zope testing helpers") - (license license:zpl2.1))) - -(define-public python-persistent - (package - (name "python-persistent") - (version "4.5.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "persistent" version)) - (sha256 - (base32 - "0slbvq1m3rilgyhj6i522rsyv592xv9pmvm61mrmgkgf40kfnz69")))) - (build-system python-build-system) - (propagated-inputs - `(("python-cffi" ,python-cffi) - ("python-zope-interface" ,python-zope-interface))) - (native-inputs - `(("python-manuel" ,python-manuel) - ("python-zope-testrunner" ,python-zope-testrunner))) - (home-page "https://github.com/zopefoundation/persistent/") - (synopsis "Translucent persistent objects") - (description "This package contains a generic persistence implementation for -Python. It forms the core protocol for making objects interact -\"transparently\" with a database such as the ZODB.") - (license license:zpl2.1))) - -(define-public python-zope-location - (package - (name "python-zope-location") - (version "4.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.location" version)) - (sha256 - (base32 - "1b40pzl8v00d583d3gsxv1qjdw2dhghlgkbgxl3m07d5r3izj857")))) - (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) - ("python-zope-proxy" ,python-zope-proxy) - ("python-zope-schema" ,python-zope-schema))) - (native-inputs - `(("python-zope-component" ,python-zope-component-bootstrap) - ("python-zope-configuration" ,python-zope-configuration-bootstrap) - ("python-zope-copy" ,python-zope-copy-bootstrap) - ("python-zope-testrunner" ,python-zope-testrunner))) - (home-page "https://github.com/zopefoundation/zope.location/") - (synopsis "Zope Location") - (description "In Zope3, \"locations\" are special objects that have a -structural location.") - (license license:zpl2.1))) - -(define-public python-zope-location-bootstrap - (package - (inherit python-zope-location) - (arguments `(#:tests? #f)) - (native-inputs `()) - (properties `((hidden? . #t))))) - -(define-public python-zope-security - (package - (name "python-zope-security") - (version "4.3.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "zope.security" version)) - (sha256 - (base32 - "1zzaggsq4d9pslzh1h1i9qizsrykrm91iyqzi1dz0vw5rixyaj4l")))) - (build-system python-build-system) - (propagated-inputs - `(("python-zope-component" ,python-zope-component) - ("python-zope-i18nmessageid" ,python-zope-i18nmessageid) - ("python-zope-interface" ,python-zope-interface) - ("python-zope-location" ,python-zope-location) - ("python-zope-proxy" ,python-zope-proxy) - ("python-zope-schema" ,python-zope-schema))) - (native-inputs - `(("python-btrees" ,python-btrees) - ("python-zope-component" ,python-zope-component-bootstrap) - ("python-zope-configuration" ,python-zope-configuration-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.security") - (synopsis "Zope Security Framework") - (description "The security framework provides a generic mechanism to -implement security policies on Python objects.") - (license license:zpl2.1))) - -(define-public python-zope-security-bootstrap - (package - (inherit python-zope-security) - (arguments `(#:tests? #f)) - (propagated-inputs - `(;("python-zope-component" ,python-zope-component-bootstrap) - ("python-zope-i18nmessageid" ,python-zope-i18nmessageid) - ("python-zope-interface" ,python-zope-interface) - ;("python-zope-location" ,python-zope-location) - ("python-zope-proxy" ,python-zope-proxy-bootstrap) - ("python-zope-schema" ,python-zope-schema))) - (native-inputs `()) - (properties `((hidden? . #t))))) - -(define-public python-manuel - (package - (name "python-manuel") - (version "1.10.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "manuel" version)) - (sha256 - (base32 - "1bdzay7j70fly5fy6wbdi8fbrxjrrlxnxnw226rwry1c8a351rpy")))) - (build-system python-build-system) - (propagated-inputs - `(("python-six" ,python-six))) - (native-inputs - `(("python-zope-testing" ,python-zope-testing))) - (home-page "https://pypi.org/project/manuel/") - (synopsis "Build tested documentation") - (description - "Manuel lets you mix and match traditional doctests with custom test syntax.") - (license license:asl2.0))) - -(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-zope-copy-bootstrap - (package - (inherit python-zope-copy) - (arguments `(#:tests? #f)) - (native-inputs `()) - (properties `((hidden? . #t))))) - -(define-public python-btrees - (package - (name "python-btrees") - (version "4.6.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "BTrees" version)) - (sha256 - (base32 - "0bmkpg6z5z47p21340nyrfbdv2jkfp80yv085ndgbwaas1zi7ac9")))) - (build-system python-build-system) - (propagated-inputs - `(("python-persistent" ,python-persistent) - ("python-zope-interface" ,python-zope-interface))) - (native-inputs - `(("python-persistent" ,python-persistent) - ("python-transaction" ,python-transaction) - ("python-zope-testrunner" ,python-zope-testrunner))) - (home-page "https://github.com/zopefoundation/BTrees") - (synopsis "Scalable persistent object containers") - (description - "This package contains a set of persistent object containers built around a -modified BTree data structure. The trees are optimized for use inside ZODB's -\"optimistic concurrency\" paradigm, and include explicit resolution of -conflicts detected by that mechanism.") - (license license:zpl2.1))) - -(define-public python-transaction - (package - (name "python-transaction") - (version "2.4.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "transaction" version)) - (sha256 - (base32 - "17wz1y524ca07vr03yddy8dv0gbscs06dbdywmllxv5rc725jq3j")))) - (build-system python-build-system) - (propagated-inputs - `(("python-zope-interface" ,python-zope-interface))) - (native-inputs - `(("python-coverage" ,python-coverage) - ("python-mock" ,python-mock) - ("python-nose" ,python-nose))) - (home-page "https://github.com/zopefoundation/transaction") - (synopsis "Transaction management for Python") - (description "This package contains a generic transaction implementation -for Python. It is mainly used by the ZODB.") - (license license:zpl2.1))) - -(define-public python-mailmanclient-3.3 - (package - (inherit python-mailmanclient) - (name "python-mailmanclient") - (version "3.3.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "mailmanclient" version)) - (sha256 - (base32 - "1s8sbhg1vyc9v9zjwxrh6m8h3qx1nspvrkvcnicbvq9a2nz6qwy8")))) - (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) - ("python-pytest-vcr" ,python-pytest-vcr))))) - -(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-pytest-vcr - (package - (name "python-pytest-vcr") - (version "1.0.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pytest-vcr" version)) - (sha256 - (base32 - "15hq5vwiixhb5n2mdvbmxfn977zkwjm769r74vcl7k5vbavm3vi3")))) - (build-system python-build-system) - (propagated-inputs - `(("python-pytest" ,python-pytest) - ("python-vcrpy" ,python-vcrpy))) - (home-page "https://github.com/ktosiek/pytest-vcr") - (synopsis "Plugin for managing VCR.py cassettes") - (description - "Plugin for managing VCR.py cassettes") - (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.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "HyperKitty" version)) - (sha256 - (base32 - "092fkv0xyf5vgj33xwq0mh9h5c5d56ifwimaqbfpx5cwc6yivb88")))) - (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (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 - "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.3") - (source - (origin - (method url-fetch) - (uri (pypi-uri "django_compressor" version)) - (sha256 - (base32 - "1pbygd00l0k5p1r959131khij1km1a1grfxg0r59ar2wyx3n7j27")))) - (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (setenv "DJANGO_SETTINGS_MODULE" "compressor.test_settings") - (invoke "django-admin" "test" - "--pythonpath=.")))))) - (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.0.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "django-sekizai" version)) - (sha256 - (base32 - "052y7cgrmbbdlbl17cgvnarzqb6x9sv21wwprif9pzljzrb36ak4")))) - (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))) - (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 "0.9.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "django-classy-tags" version)) - (sha256 - (base32 - "0axzsigvmb17ha5mnr3xf6c851kwinjpkxksxwprwjakh1m59d1q")))) - (build-system python-build-system) - (arguments '(#:tests? #f)) ; Test script not distributed with release. - (propagated-inputs - `(("python-django" ,python-django))) - (home-page "https://github.com/divio/django-classy-tags") - (synopsis "Class based template tags for Django") - (description - "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.8.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pysolr" version)) - (sha256 - (base32 - "06x8q23llzcmkbcadcp4ifv3qdm0pxq3ajmrmvwvrdkxc9vb3v48")))) - (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 "1.20.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "geopy" version)) - (sha256 - (base32 - "1qih13l4csa3l6kafbcl6q3vvvvc2b7z3b779865jcb2xs8bq6cl")))) - (build-system python-build-system) - (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))) - (home-page "https://github.com/geopy/geopy") - (synopsis "Python Geocoding Toolbox") - (description "Python Geocoding Toolbox") - (license license:expat))) - -(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 "24.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "readme_renderer" version)) - (sha256 - (base32 - "0br0562lnvj339f1nwz4nfl4ay49rw05xkqacigzf9wz4mdza5mv")))) - (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.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "django-mailman3" version)) - (sha256 - (base32 - "0wppv1q3jkkg2d66qsygc4dfpvhfcj5i2as2xpqnzf3l3w7dgja1")))) - (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.0.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "django-q" version)) - (sha256 - (base32 - "17q7q7xgrdpix4qkv3gkdp1qf5k4zclg1jsacvc4i1ypqrc1y23h")))) - (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.16.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "blessed" version)) - (sha256 - (base32 - "1yhxgibvjyzccyy2rzmygkq515p7kpyls7x0ymvcyrpj14xph8m2")) - (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-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.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "django-picklefield" version)) - (sha256 - (base32 - "097aljd37ab36jci3phmh8ckrakmk1gpi3kkgl6nq15nn66klwzi")))) - (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.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "postorius" version)) - (sha256 - (base32 - "12aghg862js5sxm61xy7ijjb5ixdlv86vhp3nr8l94yiiq92k8sl")))) - (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/python.scm b/gn/packages/python.scm index 7be6b4f..2940e40 100644 --- a/gn/packages/python.scm +++ b/gn/packages/python.scm @@ -1139,14 +1139,14 @@ server.") (define-public python-schema-salad (package (name "python-schema-salad") - (version "5.0.20200416112825") + (version "7.0.20200612160654") (source (origin (method url-fetch) (uri (pypi-uri "schema-salad" version)) (sha256 (base32 - "1pm6q266qrw4r0w0vnzhsvqgk5j8b3q61hxg99awhgpjsmcvkmsz")))) + "15ma3lb6fkfc6sj75hnmmg0jj8q3pc5yrlyx15lpdd4dcp2jc39s")))) (build-system python-build-system) (propagated-inputs `(("python-cachecontrol" ,python-cachecontrol-0.11) @@ -1155,15 +1155,12 @@ server.") ("python-rdflib" ,python-rdflib) ("python-rdflib-jsonld" ,python-rdflib-jsonld) ("python-requests" ,python-requests) - ("python-ruaml.yaml" ,python38-ruaml.yaml-0.15.76) + ("python-ruamel.yaml" ,python-ruamel.yaml) ("python-setuptools" ,python-setuptools) ("python-typing-extensions" ,python-typing-extensions))) (native-inputs - `(("python-pytest" ,python-pytest) + `(("python-pytest" ,python-pytest-4) ("python-pytest-runner" ,python-pytest-runner))) - (arguments - `( - #:tests? #f)) ; no tests (home-page "https://github.com/common-workflow-language/schema_salad") (synopsis "Schema Annotations for Linked Avro Data (SALAD)") (description diff --git a/gn/packages/python24.scm b/gn/packages/python24.scm index bae5304..8dc237f 100644 --- a/gn/packages/python24.scm +++ b/gn/packages/python24.scm @@ -3,10 +3,12 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system python) #:use-module (gn packages python) #:use-module (past packages python) #:use-module (gnu packages compression) + #:use-module (gnu packages databases) #:use-module (gnu packages maths) #:use-module (gnu packages python-xyz) #:use-module (srfi srfi-1)) @@ -126,55 +128,6 @@ pre-defined variants." (description "Stand-alone Assertions for Python") (license license:expat))) -(define-public python24-pyx - (package - (name "python24-pyx") - (version "0.12.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pyx" version)) - (sha256 - (base32 - "13kyhqx19rw7dlv2xapdb68j8l9laq6nrpgkyd6549qwidmb4dz8")))) - (build-system python-build-system) - (arguments - `(#:python ,python-2.4 - #:use-setuptools? #f - #:tests? #f)) ; tests not included - (properties '((release-date "2012-10-26"))) - (home-page "https://pyx-project.org/") - (synopsis "Python package for the generation of PostScript, PDF, and SVG files") - (description "Python package for the generation of PostScript, PDF, and SVG files.") - (license license:gpl2+))) - -(define-public python24-pyxlwriter - (package - (name "python24-pyxlwriter") - (version "0.4a3") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/pyxlwriter/pyxlwriter/" - version "/pyXLWriter-" version ".zip")) - (sha256 - (base32 - "1kfsi6la9y53rwayszgayfmkjfknpp650v69a0hwd1fcfk1df735")))) - (build-system python-build-system) - (arguments - `(#:python ,python-2.4 - #:use-setuptools? #f - #:tests? #f)) ; no tests - (native-inputs - `(("unzip" ,unzip))) - (home-page "https://sourceforge.net/projects/pyxlwriter/") - (synopsis "Python library for generating Excel compatible spreadsheets") - (description "PyXLWriter is a Python library for generating Excel compatible -spreadsheets. It's a port of John McNamara's Perl @code{Spreadsheet::WriteExcel} -module version 1.01 to Python. It allows writing of Excel compatible -spreadsheets without the need for COM objects.") - (license license:lgpl2.1+))) - (define-public python24-pil (package (inherit python2-pil1) @@ -219,7 +172,7 @@ spreadsheets without the need for COM objects.") (origin (method url-fetch) (uri (string-append - "http://www.parallelpython.com/downloads/pp/pp-" version ".zip")) + "https://www.parallelpython.com/downloads/pp/pp-" version ".zip")) (sha256 (base32 "0qkxcyclz3vgwpl6xvsrg76q59dj0wwy8qx15567bafv659ypyb1")))) @@ -230,7 +183,7 @@ spreadsheets without the need for COM objects.") #:tests? #f)) ; no tests (native-inputs `(("unzip" ,unzip))) - (home-page "http://www.parallelpython.com") + (home-page "https://www.parallelpython.com/") (synopsis "Parallel and distributed programming for Python") (description "PP is a python module which provides mechanism for parallel execution of python code on SMP (systems with multiple processors or cores) and @@ -435,3 +388,60 @@ clusters (computers connected via network).") (synopsis "") (description "") (license license:bsd-3))) + +(define-public python24-mysqlclient + (package + (name "python24-mysqlclient") + (version "1.2.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/PyMySQL/mysqlclient-python") + (commit "MySQLdb-1.2.5"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "193h09afkmz9nw2jlwfdikx1xj9sybswd2705k8jy48h1ks6fnbj")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2.4 + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'dont-create-release-file + (lambda _ + (substitute* "setup_common.py" + (("MySQLdb/release.py") + (string-append (getcwd) "/release.py"))) + #t)) + (add-before 'check 'pre-check + (lambda _ + (call-with-output-file "/tmp/my.cnf" + (lambda (p) + (format p + "[mysqld]~@ + datadir=/tmp~@ + socket=/tmp/mysql.sock~%"))) + (system* "mysqld" "--defaults-file=/tmp/my.cnf" "--bootstrap") + ;(invoke "mysql" "-S" "/tmp/mysql.sock" + ; "-e" "'create database mysqldb_test charset utf8;'") + #t))) + #:tests? #f)) ; TODO: Run the test suite + (native-inputs + `(("mariadb" ,mariadb "dev") + ("mariadb:bin" ,mariadb) + ("python-nose" ,python24-nose) + ("python-setuptools" ,python24-setuptools))) + (inputs + `(("zlib" ,zlib))) + (home-page "http://mysql-python.sourceforge.net/") + (synopsis "Python interface to MySQL") + (description "MySQLdb is an interface to the popular MySQL database server +for Python. The design goals are: +@itemize +@item with Python database API version 2.0 +@item Thread-safety +@item Thread-friendliness (threads will not block each other) +@item Compatibility with MySQL-3.23 and later +@end itemize") + (license license:gpl2+))) 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") diff --git a/gn/packages/web.scm b/gn/packages/web.scm index 9589586..9290a64 100644 --- a/gn/packages/web.scm +++ b/gn/packages/web.scm @@ -1,22 +1,10 @@ (define-module (gn packages web) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) - #:use-module (gnu packages autotools) - #:use-module (gnu packages compression) #:use-module (gnu packages fonts) - #:use-module (past packages python) - #:use-module (gnu packages python) - #:use-module (gnu packages readline) - #:use-module (gnu packages tcl) - #:use-module (gnu packages tls) - #:use-module (gnu packages web) #:use-module (guix packages) - #:use-module (guix download) #:use-module (guix git-download) - #:use-module (guix utils) - #:use-module (guix build-system gnu) - #:use-module (guix build-system trivial) - #:use-module (srfi srfi-1)) + #:use-module (guix build-system trivial)) ; <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> @@ -165,269 +153,6 @@ extensive prebuilt components, and powerful plugins built on jQuery.") (description "Bootstrap native does not use jquery.") (license license:expat)))) -(define-public httpd-2.2 - (package - (inherit httpd) - (version "2.2.34") - (source (origin - (method url-fetch) - (uri (string-append "mirror://apache/httpd/httpd-" - version ".tar.bz2")) - (sha256 - (base32 - "0q4196krxbyaswl5yzmm0r5ry2dijfhvxjdld3bl0mxcvzaq6cg5")))) - (inputs - `(("openssl" ,openssl-1.0) - ,@(alist-delete "openssl" (package-inputs httpd)))) - (arguments - (substitute-keyword-arguments (package-arguments httpd) - ((#:configure-flags flags) - `(cons "--enable-mods-shared=most" ,flags)))))) - -(define-public mod-python - (let ((commit "902bb8700e2c45ffd96b78e2f1146a3c101be7f5") - (revision "1")) - (package - (name "mod-python") - (version (git-version "3.5.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/grisha/mod_python.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0lqlpldw11dml24n05305xzpbjlkay497djjczvgsj5v8djkxcq0")))) - (build-system gnu-build-system) - (arguments - '(#:tests? #f ; tests require a running apache server - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile.in" - ;; Don't use httpd's prefix - (("LIBEXECDIR=.*") (string-append "LIBEXECDIR=" out "/modules\n"))) - (substitute* "scripts/Makefile.in" - (("BINDIR=.*") (string-append "BINDIR=" out "/bin"))) - (substitute* "dist/setup.py.in" - ;; we want out modules dir, not httpd's - ;; If we want SYSCONFDIR to be the same as httpd's : - ;; (("@SYSCONFDIR@") (string-append (assoc-ref %build-inputs "httpd") "/etc/httpd")) - (("@LIBEXECDIR@") (string-append out "/modules"))) - (substitute* "dist/Makefile.in" - (("\\$\\(DESTDIR\\)") "/") - (("--root") (string-append "--prefix=" out " --root")))) - #t))))) - (inputs - `(("httpd" ,httpd) - ("readline" ,readline) - ("python" ,python-2))) ; does not seem to build with python3.7+ - (native-inputs `(("flex" ,(@ (gnu packages flex) flex)))) - (home-page "http://modpython.org/") - (synopsis "Apache/Python Integration") - (description "Mod_python is an Apache module that embeds the Python -interpreter within the server. With mod_python you can write web-based -applications in Python that will run many times faster than traditional CGI and -will have access to advanced features such as ability to retain database -connections and other data between hits and access to Apache internals.") - (license license:asl2.0)))) - -(define-public mod-python-24-httpd22 - (package - (inherit mod-python) - (name "mod-python-24-httpd22") - (version "3.3.1") - (source - (origin - (method url-fetch) - (uri (string-append "https://archive.apache.org/dist/httpd/" - "modpython/mod_python-" version ".tgz")) - (sha256 - (base32 - "0sss2xi6l1a2z8y6ji0cp8vgyvnhq8zrg0ilkvpj1mygbzyk28xd")) - (patches - (list - (origin - (method url-fetch) - (uri "https://sources.debian.org/data/main/liba/libapache2-mod-python/3.3.1-11/debian/patches/04_autoconf_python_multiarch.patch") - (file-name "mod-python-24-python-discovery.patch") - (sha256 - (base32 - "0n3zp8j6q0mp0scry7d2hi0baqkim42bqq2c81p4l6mizsy8ry4h"))) - (origin - (method url-fetch) - (uri "https://sources.debian.org/data/main/liba/libapache2-mod-python/3.3.1-11/debian/patches/10_bts521965.patch") - (file-name "mod-python-24-apr13-compat.patch") - (sha256 - (base32 - "1k2cd2r13938fbm473sn0ivicaylkcqigyqn2wjir9ppch98kybg"))))))) - (arguments - `(#:imported-modules ((guix build python-build-system) - ,@%gnu-build-system-modules) - #:modules ((guix build gnu-build-system) - (guix build utils) - ((guix build python-build-system) #:prefix python:)) - #:phases - (modify-phases %standard-phases - (replace 'bootstrap - (lambda* (#:key inputs #:allow-other-keys) - (let* ((python (assoc-ref inputs "python")) - (tcl (assoc-ref inputs "tcl")) - (py-version (python:python-version python)) - (tcl-version ,(version-major+minor (package-version tcl)))) - (substitute* "configure.in" - (("PY_LIBS=.*") - (string-append "PY_LIBS=-L" python "/lib/python" py-version "\n")) - (("PY_LDFLAGS=.*") - (string-append "PY_LDFLAGS=\"-lpython" py-version - " -lreadline -lssl -lcrypto" - " -ltk" tcl-version " -ltcl" tcl-version - " -lgdbm -ltirpc -lnsl -lz\"\n")) - (("PY_INCLUDES=.*") - (string-append "PY_INCLUDES=-I" python "/include/python" py-version "\n"))) - (invoke "autoreconf" "-vfi")))) - (add-after 'unpack 'patch-sources - (lambda _ - (substitute* "test/test.py" - (("2\\.2") "2.4")) - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (install-file "src/mod_python.so" (string-append out "/modules")) - (with-directory-excursion "dist" - (invoke "python" "setup.py" "install" "--root=/" - (string-append "--prefix=" out))) - #t)))))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("flex" ,(@ (gnu packages flex) flex)))) - (inputs - `(("httpd" ,httpd-2.2) - ("python" ,python-2.4) - ,@(package-inputs python-2.4))))) - -(define-public mod-python-24 - (package - (inherit mod-python-24-httpd22) - (name "mod-python-24") - (source - (origin - (inherit (package-source mod-python-24-httpd22)) - (patches - (append - (origin-patches (package-source mod-python-24-httpd22)) - (list - (origin - (method url-fetch) - (uri "https://sources.debian.org/data/main/liba/libapache2-mod-python/3.3.1-11/debian/patches/20_apache24.patch") - (file-name "mod-python-24-apache24-compat.patch") - (sha256 - (base32 - "1bmcx7ki7y486x6490yppssr7dh3a0qyki6gjf2lj83gyh68c0r0")))))))) - (inputs - `(("httpd" ,httpd) - ("python" ,python-2.4) - ,@(package-inputs python-2.4))))) - -(define-public httpd-mod-python-24 - (package - (inherit httpd) - (name "httpd-mod-python-24") - (arguments - `(#:imported-modules ((guix build python-build-system) - ,@%gnu-build-system-modules) - #:modules (((guix build gnu-build-system) #:prefix gnu:) - (guix build utils) - ,@%gnu-build-system-modules - ((guix build python-build-system) #:prefix python:)) - ,@(substitute-keyword-arguments (package-arguments httpd) - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - (add-after 'install 'unpack-mod-python - (lambda* args - ((assoc-ref gnu:%standard-phases 'unpack) - #:source (assoc-ref %build-inputs "mod-python")))) - (add-after 'unpack-mod-python 'change-directory - (lambda _ - ;; Make sure we're in the correct folder - (chdir "../mod_python-3.3.1") #t)) - (add-after 'change-directory 'bootstrap-mod-python - (lambda* (#:key inputs #:allow-other-keys) - (let* ((python (assoc-ref inputs "python")) - (tcl (assoc-ref inputs "tcl")) - (py-version (python:python-version python)) - (tcl-version ,(version-major+minor (package-version tcl)))) - (substitute* "configure.in" - (("PY_LIBS=.*") - (string-append "PY_LIBS=-L" python "/lib/python" py-version "\n")) - (("PY_LDFLAGS=.*") - (string-append "PY_LDFLAGS=\"-lpython" py-version - " -lreadline -lssl -lcrypto" - " -ltk" tcl-version " -ltcl" tcl-version - " -lgdbm -ltirpc -lnsl -lz\"\n")) - (("PY_INCLUDES=.*") - (string-append "PY_INCLUDES=-I" python "/include/python" py-version "\n"))) - (invoke "autoreconf" "-vfi")))) - (add-after 'bootstrap-mod-python 'patch-bin-file-mod-python - (assoc-ref gnu:%standard-phases 'patch-usr-bin-file)) - (add-after 'patch-bin-file-mod-python 'patch-source-shebangs-mod-python - (assoc-ref gnu:%standard-phases 'patch-source-shebangs)) - (add-after 'patch-source-shebangs-mod-python 'configure-mod-python - (lambda* args - ((assoc-ref gnu:%standard-phases 'configure) - #:outputs %outputs - #:inputs %build-inputs - #:configure-flags (list (string-append "--with-apxs=" - (assoc-ref %outputs "out") - "/bin/apxs"))))) - (add-after 'configure-mod-python 'patch-more-shebangs-mod-python - (assoc-ref gnu:%standard-phases 'patch-generated-file-shebangs)) - (add-after 'patch-more-shebangs-mod-python 'make-mod-python - (assoc-ref gnu:%standard-phases 'build)) - (add-after 'make-mod-python 'install-mod-python - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (install-file "src/mod_python.so" (string-append out "/modules")) - (with-directory-excursion "dist" - (invoke "python" "setup.py" "install" "--root=/" - (string-append "--prefix=" out))) - #t)))))))) - (native-inputs - `(,@(package-native-inputs httpd) - ,@(package-native-inputs mod-python-24) - ("mod-python" ,(package-source mod-python-24)))) - (inputs - `(,@(alist-delete "openssl" (package-inputs httpd)) - ,@(package-inputs python-2.4) - ("python" ,python-2.4))))) - -(define-public httpd22-mod-python-24 - (package - (inherit httpd-mod-python-24) - (name "httpd22-mod-python-24") - (version (package-version httpd-2.2)) - (source - (origin - (inherit (package-source httpd-2.2)))) - (arguments - (substitute-keyword-arguments (package-arguments httpd-mod-python-24) - ((#:configure-flags flags) - `(cons "--enable-mods-shared=most" ,flags)))) - (native-inputs - `(,@(package-native-inputs httpd-2.2) - ,@(package-native-inputs mod-python-24-httpd22) - ("mod-python" ,(package-source mod-python-24-httpd22)))) - (inputs - `(,@(package-inputs httpd-2.2) - ,@(package-inputs python-2.4) - ("python" ,python-2.4))))) - (define-public web-font-awesome (package (inherit font-awesome) diff --git a/gn/services/genenetwork.scm b/gn/services/genenetwork.scm index 0137e94..7de1821 100644 --- a/gn/services/genenetwork.scm +++ b/gn/services/genenetwork.scm @@ -3,17 +3,10 @@ (use-modules (gnu) (ice-9 match) (past packages python) + (past packages web) (gn packages genenetwork) - (gn packages python24) - (gn packages web)) + (gn packages python24)) (use-service-modules web) -(use-package-modules python) - -(define %python-path - "/lib/python2.4/site-packages") - -(define %mod-python-path - (file-append httpd22-mod-python-24 %python-path)) (define %default-httpd22-modules (map (match-lambda @@ -82,28 +75,32 @@ (firmware '()) (packages (cons* python-2.4 - ;httpd-mod-python-24 - ;python24-qtlreaper - ;python24-htmlgen-GN1 - ;python24-json-GN1 - ;python24-piddle - ;python24-pyx-GN1 - ;python24-pyxlwriter - ;python24-svg-GN1 + python24-htmlgen-GN1 + python24-json-GN1 + python24-mysqlclient ; MySQLdb + python24-numarray + python24-piddle + python24-pp + python24-pyx + python24-pyxlwriter + python24-qtlreaper + python24-svg-GN1 %base-packages)) (services (list (service httpd-service-type (httpd-configuration - (package httpd22-mod-python-24) ; Must be httpd-2.2? + ;; Must be a httpd-2.2 variant. + (package httpd22-with-mod-python) (config (httpd-config-file (server-name "www.genenetwork.org") - (server-root httpd22-mod-python-24) ; Defaults to httpd, must be combo package. + ;; Defaults to httpd, should be same as 'package' above. + (server-root httpd22-with-mod-python) (user "nobody") (group "root") + ;; Only while debugging (pid-file "/tmp/httpd-genenetwork1") (error-log "/tmp/httpd-genenetwork1-error-log") - (document-root (file-append genenetwork1 "/web")) (listen '("8042")) (modules (cons* (httpd-module @@ -111,21 +108,32 @@ (file "modules/mod_python.so")) %default-httpd22-modules)) (extra-config (list "\ -TypesConfig etc/httpd/mime.types -#for apache-2.2, ignored by apache-2.4 +TypesConfig " httpd22-with-mod-python "/etc/httpd/mime.types DefaultType application/octet-stream -# Should PythonPath just be genenetwork1/web/webqtl? -PythonPath \"sys.path+['" (file-append python-2.4 "/lib/python2.4") "', '" %mod-python-path "', '" (file-append genenetwork1 "/web/webqtl") "']\" -<Directory " (file-append genenetwork1 "/web/webqtl") "> - AddHandler mod_python .py - PythonHandler mod_python.publisher - PythonAutoReload Off +# DocumentRoot MUST NOT be in the PythonPath. Because genenetwork1 must be in PythonPath we leave the document-root keyword above unset. +PythonPath \"['/run/current-system/profile/lib/python2.4', '/run/current-system/profile/lib/python2.4/site-packages', '" httpd22-with-mod-python "/lib/python2.4/site-packages', '" genenetwork1 "/web/webqtl']\" +# same as 'listen' above +NameVirtualHost *:8042 +<VirtualHost *:8042> + DocumentRoot "genenetwork1 "/web +</VirtualHost> +<Directory " genenetwork1 "/web/webqtl> + PythonOption session FileSession + #what is the difference between these two? + #AddHandler mod_python .py + SetHandler python-program + #publisher has more debug information + PythonHandler " genenetwork1 "/web/webqtl/main.py + #PythonHandler mod_python.publisher + #PythonHandler mod_python.cgihandler + # only while debugging: PythonDebug On </Directory> +# only while debugging: <Location /mpinfo> SetHandler python-program PythonHandler mod_python.testhandler </Location>"))))))))) -;PythonPath \"sys.path+['" (file-append python-2.4 "/lib/python2.4") "', '" %mod-python-path "', '" (file-append python24-qtlreaper %python-path) "', '" (file-append python24-json-GN1 %python-path) "', '" (file-append python24-piddle %python-path) "', '" (file-append python24-pyx-GN1 %python-path) "', '" (file-append python24-pyxlwriter-GN1 %python-path) "', '" (file-append python24-svg-GN1 %python-path) "', '" (file-append python24-htmlgen-GN1) "', '" (file-append genenetwork1 "/web/webqtl") "']\" -;PythonPath \"sys.path+['" (file-append python-2.4 "/lib/python2.4") "', '" %mod-python-path "', '" (file-append genenetwork1 "/web/webqtl") "']\" +;; guix system container -L /path/to/guix-past/modules/ -L /path/to/guix-bioinformatics/ /path/to/guix-bioinformatics/gn/services/genenetwork.scm --network +;; xdg-open http://localhost:8042 |