summaryrefslogtreecommitdiff
path: root/gnu/packages/python-xyz.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r--gnu/packages/python-xyz.scm636
1 files changed, 599 insertions, 37 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index bdd9810aa5..f41114207b 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -31,7 +31,7 @@
;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016, 2017, 2018, 2021 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016, 2017, 2018, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
@@ -121,6 +121,8 @@
;;; Copyright © 2022 Peter Polidoro <peter@polidoro.io>
;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
+;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -178,6 +180,7 @@
#:use-module (gnu packages icu4c)
#:use-module (gnu packages inkscape)
#:use-module (gnu packages image)
+ #:use-module (gnu packages image-processing)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages jupyter)
#:use-module (gnu packages kerberos)
@@ -3589,7 +3592,7 @@ files.")
(define-public python-cli-helpers
(package
(name "python-cli-helpers")
- (version "2.0.1")
+ (version "2.2.1")
(source
(origin
;; There's no source tarball on PyPI.
@@ -3599,13 +3602,12 @@ files.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1bg2iw9l5dip0kbs00hajdk2v18wvhssbnq8hdf71278qf0wks5l"))))
+ (base32 "1hzavh9v9lkd1dn9f0nvg80f7v4banxvcrj10zy72przqz51k1sb"))))
(build-system python-build-system)
(native-inputs
(list python-pytest))
(propagated-inputs
- (list python-wcwidth python-configobj python-tabulate
- python-terminaltables))
+ (list python-wcwidth python-configobj python-tabulate))
(home-page "https://github.com/dbcli/cli_helpers")
(synopsis "Helpers for building command-line apps")
(description
@@ -5641,13 +5643,13 @@ interested parties to subscribe to events, or \"signals\".")
(define-public pelican
(package
(name "pelican")
- (version "4.7.1")
+ (version "4.7.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pelican" version))
(sha256
- (base32 "1sfckd3fhgnj305002fi3fdhkynric1ck7a5i8qany7k3vdsbasv"))))
+ (base32 "0m1kndc98hhnlq0yl05f4lzccw555pkxnrajj6lks18yh491kw8w"))))
(build-system python-build-system)
(inputs
(list python-blinker
@@ -7738,6 +7740,65 @@ write a wide range of image data, including animated images, video, volumetric
data, and scientific formats.")
(license license:bsd-2)))
+(define-public python-pyvips
+ (package
+ (name "python-pyvips")
+ (version "2.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyvips" version))
+ (sha256
+ (base32 "0lq71iiic4pc8qhxr60gi141w25pjnn4vsh05d5l0fjkgjsv137b"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ ;; Maybe switch to API mode (i.e., build the C extension)?
+ ;; It is advertised as faster to start up and run.
+ ;; However, even with ‘pkg-config’ and ‘python-pkgconfig’ in
+ ;; ‘native-inputs’, the API mode build fails with:
+ ;;
+ ;; Falling back to ABI mode. Details: unable to find pkg-config package "vips"
+ ;;
+ ;; The build doesn't actually fail without the below
+ ;; substitution, it's just slower because ‘setup.py’ tries
+ ;; (unsuccessfully) to download the Python ‘pkgconfig’ module.
+ (add-after 'unpack 'fix-build
+ (lambda _
+ (substitute* "setup.py"
+ (("^( +setup_)API\\(\\)\n" _ prefix)
+ (string-append prefix "ABI()\n")))))
+ (add-after 'unpack 'fix-paths
+ (lambda _
+ (substitute* "pyvips/__init__.py"
+ (("^( +_vips_libname) = '(libvips.so.42)'"
+ _ var libname)
+ (format #f "~a = '~a/lib/~a'"
+ var #$(this-package-input "vips") libname))
+ (("^( +_gobject_libname) = '(libgobject-2.0.so.0)'"
+ _ var libname)
+ (format #f "~a = '~a/lib/~a'"
+ var #$(this-package-input "glib") libname)))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "python" "setup.py" "test")))))))
+ (native-inputs
+ (list python-pyperf
+ python-pytest
+ python-pytest-flake8
+ python-pytest-runner))
+ (inputs
+ (list glib vips))
+ (propagated-inputs
+ (list python-cffi))
+ (home-page "https://github.com/libvips/pyvips")
+ (synopsis "Python bindings for VIPS")
+ (description "The @code{pyvips} package provides Python bindings for VIPS,
+a multithreaded image-processing system with low memory needs.")
+ (license license:expat)))
+
(define-public python-pycparser
(package
(name "python-pycparser")
@@ -9284,10 +9345,8 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
"1ikqvv335qfrhmlji0iclci6pnm2c3fvnxf031jr1d68j79g6ypd"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ;no test suite
- (propagated-inputs
- (list python-ipykernel))
(inputs
- (list pari-gp readline))
+ (list pari-gp readline python-ipykernel))
(home-page "https://github.com/sagemath/pari-jupyter")
(synopsis "Jupyter kernel for PARI/GP")
(description "The package provides a PARI/GP kernel for Jupyter.")
@@ -10071,6 +10130,25 @@ generate MPS or LP files and call GLPK, COIN CLP/CBC, CPLEX, and GUROBI to
solve linear problems.")
(license license:expat)))
+(define-public python-py-tes
+ (package
+ (name "python-py-tes")
+ (version "0.4.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "py-tes" version))
+ (sha256
+ (base32 "0b272y392v0mnq0f3sm5kgcx8fn4qwfbym89hhvqxz3xkganr4pn"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ (list python-attrs python-dateutil python-future python-requests))
+ (home-page "https://github.com/ohsu-comp-bio/py-tes")
+ (synopsis "Library for communicating with the GA4GH Task Execution API")
+ (description "This package provides a library for communicating with the
+GA4GH Task Execution API.")
+ (license license:expat)))
+
(define-public python-toposort
(package
(name "python-toposort")
@@ -10172,6 +10250,147 @@ providing a clean and modern domain specific specification language (DSL) in
Python style, together with a fast and comfortable execution environment.")
(license license:expat)))
+(define-public snakemake-6
+ (package
+ (inherit snakemake)
+ (name "snakemake")
+ (version "6.15.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/snakemake/snakemake")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "09yrpi9f86r9yvcm2dfjs5zy87c4j31bxama77kfd6y8yfrrjlai"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ ;; For cluster execution Snakemake will call Python. Since there is
+ ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We
+ ;; fix this by calling the snakemake wrapper instead.
+
+ ;; XXX: There is another instance of sys.executable on line 692, but
+ ;; it is not clear how to patch it.
+ (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "snakemake/executors/__init__.py"
+ (("\\{sys.executable\\} -m snakemake")
+ (string-append (assoc-ref outputs "out")
+ "/bin/snakemake")))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (setenv "HOME" "/tmp")
+ ;; This test attempts to change S3 buckets on AWS and fails
+ ;; because there are no AWS credentials.
+ (delete-file "tests/test_tibanna.py")
+ (invoke "pytest")))))))
+ (inputs
+ (list python-appdirs
+ python-configargparse
+ python-connection-pool
+ python-datrie
+ python-docutils
+ python-filelock
+ python-gitpython
+ python-jinja2
+ python-jsonschema
+ python-nbformat
+ python-networkx
+ python-psutil
+ python-pulp
+ python-pyyaml
+ python-py-tes
+ python-ratelimiter
+ python-requests
+ python-smart-open
+ python-stopit
+ python-tabulate
+ python-toposort
+ python-wrapt))
+ (native-inputs
+ (list git-minimal
+ python-wrapper
+ python-pytest
+ python-pandas
+ python-requests-mock))))
+
+(define-public snakemake-7
+ (package
+ (inherit snakemake-6)
+ (name "snakemake")
+ (version "7.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/snakemake/snakemake")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1qrqbmx4cbis0wxr6dl2rdjv9v627sbirsz6v5c31vlbqwkvs04q"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ ;; For cluster execution Snakemake will call Python. Since there is
+ ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We
+ ;; fix this by calling the snakemake wrapper instead.
+
+ ;; XXX: There is another instance of sys.executable on line 692, but
+ ;; it is not clear how to patch it.
+ (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "snakemake/executors/__init__.py"
+ (("\\{sys.executable\\} -m snakemake")
+ (string-append (assoc-ref outputs "out")
+ "/bin/snakemake")))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (setenv "HOME" "/tmp")
+ ;; This test attempts to change S3 buckets on AWS and fails
+ ;; because there are no AWS credentials.
+ (delete-file "tests/test_tibanna.py")
+ ;; It's a similar story with this test, which requires access
+ ;; to the Google Storage service.
+ (delete-file "tests/test_google_lifesciences.py")
+ (invoke "pytest")))))))
+ (inputs
+ (list python-appdirs
+ python-configargparse
+ python-connection-pool
+ python-datrie
+ python-docutils
+ python-filelock
+ python-gitpython
+ python-jinja2
+ python-jsonschema
+ python-nbformat
+ python-networkx
+ python-psutil
+ python-pulp
+ python-pyyaml
+ python-py-tes
+ python-ratelimiter
+ python-requests
+ python-retry
+ python-smart-open
+ python-stopit
+ python-tabulate
+ python-toposort
+ python-wrapt
+ python-yte))
+ (native-inputs
+ (list git-minimal
+ python-wrapper
+ python-pytest
+ python-pandas
+ python-requests-mock))))
+
(define-public python-pyqrcode
(package
(name "python-pyqrcode")
@@ -13510,6 +13729,34 @@ Debian-related files, such as:
JSON Reference and JSON Pointer.")
(license license:bsd-3)))
+(define-public python-fastbencode
+ (package
+ (name "python-fastbencode")
+ (version "0.0.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "fastbencode" version))
+ (sha256
+ (base32 "1r66w3vpmvfmssshjpgqaj2m14c8p94nymr96mwn61idajz9mg5n"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/breezy-team/fastbencode")
+ (synopsis "Python Bencode (de)serializer with optional fast C extensions")
+ (description
+ "The fastbencode Python package implements the bencode serialization
+format for storing and transmitting loosely structured data, originally used
+by BitTorrent.
+
+The format can encode four different types of values: byte strings, integers,
+lists, and dictionaries (associative arrays). It's simple and unaffected by
+endianness,
+
+This package includes both a pure-Python version and an optional C extension
+based on Cython. Both provide the same functionality, but the C version has
+significantly better performance.")
+ (license (list license:expat ; _bencode_py.py
+ license:gpl2+)))) ; __init__.py
+
(define-public python-fastjsonschema
(package
(name "python-fastjsonschema")
@@ -14014,7 +14261,7 @@ in the data.")
"1iqrxhd8hvlyf8cqbc731ssnwm61wrycnbiczy5wsfahd3hlh8i4"))))
(build-system python-build-system)
(propagated-inputs
- (list python-ipykernel python-jupyter-client python-prompt-toolkit-2
+ (list python-ipykernel python-jupyter-client python-prompt-toolkit
python-pygments))
(native-inputs
(list python-nose python-pytest))
@@ -14046,9 +14293,8 @@ Jupyter kernels such as IJulia and IRKernel.")
(assoc-ref outputs "out") "/bin"))))))))
;; Remove the python-ipython propagated input, to avoid the cycle
(propagated-inputs
- (alist-delete
- "python-ipython"
- (package-propagated-inputs python-jupyter-console)))))
+ (modify-inputs (package-propagated-inputs python-jupyter-console)
+ (delete "python-ipython")))))
(define-public python-qtconsole
(package
@@ -14428,6 +14674,23 @@ be set via config files and/or environment variables.")
(home-page "https://github.com/bw2/ConfigArgParse")
(license license:expat)))
+(define-public python-connection-pool
+ (package
+ (name "python-connection-pool")
+ (version "0.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "connection_pool" version))
+ (sha256
+ (base32 "1p6hfkcl4n3hhhcgjbaxn21i7b1yipag6j7dnilir4k5xxx9whmz"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/zhouyl/ConnectionPool")
+ (synopsis "Thread-safe connection pool")
+ (description "This package provides a library implementing a thread-safe
+connection pool.")
+ (license license:expat)))
+
(define-public python-argparse-manpage
(package
(name "python-argparse-manpage")
@@ -16546,13 +16809,13 @@ is made as zipfile like as possible.")
(define-public python-rich
(package
(name "python-rich")
- (version "10.2.2")
+ (version "12.4.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "rich" version))
(sha256
(base32
- "1z5m5brcdf3vndpavcqj5nl35xby4x5rfj48klhwqycfqf3g9cqp"))))
+ "149vjb4cpf9mz14iig0b6d8065dm8aslp6pc45g9ipmp1wf00ffj"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -16581,7 +16844,7 @@ is made as zipfile like as possible.")
(file-name (git-file-name name version))
(sha256
(base32
- "19f4svb363sn5708qkpa6lakmiwzyb25h8kmh7bqrsbbrvi9hr70"))))))
+ "17c3gljn8zv32xnpsgd3fqgqn4r7cdfqri41hridcpbhssdgkyp9"))))))
(home-page "https://github.com/willmcgugan/rich")
(synopsis "Render rich text and more to the terminal")
(description
@@ -18504,7 +18767,7 @@ for Kivy, the multitouch application platform.")
(define-public python-kivy
(package
(name "python-kivy")
- (version "1.10.1")
+ (version "2.1.0")
(source
(origin
(method url-fetch)
@@ -18512,7 +18775,7 @@ for Kivy, the multitouch application platform.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1zzxjdp78hfjjiklzr82l4zwibwcq4j6kgicspqs6iyyfn5yisbw"))))
+ "1cq4djfn7h8560mvz94dydsldg2jpp5w9rby7nafgmbh7fxg65is"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; Tests require many optional packages
@@ -18522,7 +18785,7 @@ for Kivy, the multitouch application platform.")
(lambda* (#:key inputs #:allow-other-keys)
(setenv "KIVY_SDL2_PATH"
(search-input-directory inputs "/include/SDL2"))))
- (add-before 'sanity-check 'set-home
+ (add-before 'build 'set-home
(lambda _
;; 'kivy/__init__.py' wants to create $HOME/.kivy.
(setenv "HOME" (getcwd)))))))
@@ -18542,6 +18805,35 @@ for Kivy, the multitouch application platform.")
multitouch applications.")
(license license:expat)))
+(define-public python-kivymd
+ (package
+ (name "python-kivymd")
+ (version "0.104.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "kivymd" version))
+ (sha256
+ (base32 "04lwy6j0agrdwa4a6dl6qs97nx9ysmscmm8psvdzjpyj8aa1zg4p"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f ;tests require network
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'sanity-check 'set-home
+ (lambda _
+ ;; 'kivy/__init__.py' wants to create $HOME/.kivy.
+ (setenv "HOME" (getcwd)))))))
+ (native-inputs (list python-docutils))
+ (propagated-inputs
+ (list python-kivy python-pillow python-pygments python-kivy-garden))
+ (home-page "https://github.com/kivymd/KivyMD")
+ (synopsis "Material Design compliant widgets for use with Kivy")
+ (description
+ "This package provides Kivy widgets that approximate Google's Material
+Design spec without sacrificing ease of use or application performance.")
+ (license license:expat)))
+
(define-public python2-kivy
(package-with-python2 python-kivy))
@@ -23733,19 +24025,19 @@ identifying what the file is.")
(define-public python-tldextract
(package
(name "python-tldextract")
- (version "2.2.0")
+ (version "3.3.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "tldextract" version))
(sha256
(base32
- "1d5s8v6kpsgazyahflhji1cfdcf89rv7l7z55v774bhzvcjp2y99"))))
+ "1wac4yvcpgqjvls770mfx165amvy7gr00nnd2w24bqqwyamj9kdd"))))
(build-system python-build-system)
(native-inputs
- (list python-pytest python-responses))
+ (list python-pytest python-responses python-setuptools-scm))
(propagated-inputs
- (list python-idna python-requests python-requests-file))
+ (list python-filelock python-idna python-requests python-requests-file))
(home-page
"https://github.com/john-kurkowski/tldextract")
(synopsis
@@ -23763,7 +24055,7 @@ Public Suffix List's private domains as well.")
(define-public python-tldr
(package
(name "python-tldr")
- (version "1.2.1")
+ (version "3.1.0")
(source
(origin
;; There's no test in PyPI.
@@ -23773,20 +24065,23 @@ Public Suffix List's private domains as well.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0n9wqvjxspm18vlxf9j9slrcydshk4rkv5nwkrqhfq606n6zvks4"))))
+ (base32 "1hxmprqg8c4cvs19n7f80f3y7jj74i8sc2dmq2gdjmsdrb54bbzc"))))
(build-system python-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; This test fails. It tries to open a network socket.
- (invoke "pytest" "-vv" "-k" "not test_error_message")))))))
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'build 'build-doc
+ (lambda _
+ (invoke "make" "-C" "docs")))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; This test fails. It tries to open a network socket.
+ (invoke "pytest" "-vv" "-k" "not test_error_message")))))))
(native-inputs
- (list python-pytest python-pytest-runner))
+ (list python-pytest python-pytest-runner python-sphinx-argparse))
(inputs
- (list python-argcomplete python-colorama python-termcolor))
+ (list python-argcomplete python-colorama python-termcolor python-shtab))
(home-page "https://github.com/tldr-pages/tldr-python-client")
(synopsis "Python command-line client for tldr pages")
(description "This package provides the @code{tldr} command allowing users
@@ -26233,13 +26528,13 @@ scripts to load entry points more quickly.")
(define-public python-funcparserlib
(package
(name "python-funcparserlib")
- (version "1.0.0a0") ; last stable release was in 2013
+ (version "1.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "funcparserlib" version))
(sha256
- (base32 "0ama5w5lswxlp3l4qfqq3zlg7i6qkw45jfl1f7p8w1vnj8m47yz6"))))
+ (base32 "0swbqf53x7lfnczvi566s1g3nkf5mfrxz7sbpyymricz57a3vlvx"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ; no tests in PyPI and no setup.py in GitHub
@@ -30986,6 +31281,53 @@ uses the parsed regular expression, so you get a much more accurate result
than trying to just split strings.")
(license license:asl2.0)))
+(define-public python-pyperf
+ (package
+ (name "python-pyperf")
+ (version "2.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyperf" version))
+ (sha256
+ (base32 "189qf9wdbig0fk4n3bavx8acgdbay5lllfvw48jvbfaafb7y5hja"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-tests
+ (lambda _
+ ;; Some of these tests fail with:
+ ;;
+ ;; ModuleNotFoundError: No module named 'pyperf'
+ ;;
+ ;; even when calling ‘add-installed-pythonpath’ in the ‘check’
+ ;; phase.
+ (delete-file "pyperf/tests/test_examples.py")))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; From tox.ini's ‘testenv.commands’.
+ (invoke "python" "-bb" "-Wd"
+ "-m" "unittest" "discover"
+ "-s" "pyperf/tests/" "-v")))))))
+ (native-inputs
+ (list python-psutil))
+ (home-page "https://github.com/psf/pyperf")
+ (synopsis "Toolkit for running Python benchmarks")
+ (description "The Python @code{pyperf} module is a toolkit for writing,
+running and analyzing benchmarks. It features a simple API that can:
+
+@itemize
+@item automatically calibrate a benchmark for a time budget;
+@item spawn multiple worker processes;
+@item compute the mean and standard deviation;
+@item detect if a benchmark result seems unstable;
+@item store benchmark results in JSON format;
+@item support multiple units: seconds, bytes and integer.
+@end itemize")
+ (license license:expat)))
+
(define-public python-pydispatcher
(package
(name "python-pydispatcher")
@@ -31226,3 +31568,223 @@ object, which can be useful if you want to force your objects into a table.")
"The @code{deep-merge} Python library provides a toolset to deeply merge
nested data structures in Python like lists and dictionaries.")
(license license:expat)))
+
+(define-public python-murmurhash3
+ (package
+ (name "python-murmurhash3")
+ (version "2.3.5")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "murmurhash3" version))
+ (sha256
+ (base32
+ "1gdzys1212dx70byz07ipknbw1awbqskh6aznlkm85js8b8qfczm"))))
+ (build-system python-build-system)
+ (native-inputs (list python-cython python-pytest))
+ (inputs (list python))
+ (arguments
+ (list #:modules
+ '((ice-9 ftw) (ice-9 match)
+ (guix build utils)
+ (guix build python-build-system))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-source-file-times-to-1980
+ (lambda _
+ (let ((circa-1980 (* 10 366 24 60 60)))
+ (ftw "."
+ (lambda (file stat flag)
+ (utime file circa-1980 circa-1980) #t))))))))
+ (home-page "https://github.com/veegee/mmh3")
+ (synopsis "Python wrapper for MurmurHash (MurmurHash3)")
+ (description
+ "@code{murmurhash3} is a Python library for MurmurHash (MurmurHash3), a set
+of fast and robust hash functions. This library is a Python extension module
+written in C.")
+ (license license:public-domain)))
+
+(define-public python-murmurhash
+ (package
+ (name "python-murmurhash")
+ (version "1.0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "murmurhash" version))
+ (sha256
+ (base32
+ "0vwkn98c703nvsigl2nz99rax2pafkx3djjfkgc49jiipmp3j2k3"))))
+ (build-system python-build-system)
+ (native-inputs (list python-cython python-pytest))
+ (inputs (list python python-murmurhash3))
+ (arguments
+ (list #:modules
+ '((ice-9 ftw) (ice-9 match)
+ (guix build utils)
+ (guix build python-build-system))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-source-file-times-to-1980
+ (lambda _
+ (let ((circa-1980 (* 10 366 24 60 60)))
+ (ftw "."
+ (lambda (file stat flag)
+ (utime file circa-1980 circa-1980) #t))))))))
+ (home-page "https://github.com/explosion/murmurhash")
+ (synopsis "Cython bindings for MurmurHash2")
+ (description "This package provides Cython bindings for MurmurHash2.")
+ (license license:expat)))
+
+;; Scooby requires for its test suite a ‘pyvips’ package that is missing its
+;; VIPS dependency.
+(define python-pyvips-for-python-scooby
+ (package
+ (inherit python-pyvips)
+ (name "python-pyvips-for-python-scooby")
+ (arguments
+ (substitute-keyword-arguments (package-arguments python-pyvips)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (delete 'fix-paths)
+ ;; The checks won't succeed without VIPS.
+ (delete 'check)
+ (delete 'sanity-check)))))
+ (inputs
+ (modify-inputs (package-inputs python-pyvips)
+ (delete "vips")))
+ (synopsis "pyvips for Scooby's test suite")))
+
+(define-public python-scooby
+ (package
+ (name "python-scooby")
+ (version "0.5.12")
+ (source
+ ;; The PyPI tarball does not contain the tests.
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/banesullivan/scooby")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1gkpmz8wl3jg8ylf1na35308sznw2g9wx33zqlyq5i2gpy2ml9mw"))))
+ (build-system python-build-system)
+ (native-inputs
+ (list python-beautifulsoup4
+ python-numpy
+ python-pytest
+ python-pytest-cov
+ python-pyvips-for-python-scooby
+ python-scipy))
+ (propagated-inputs
+ (list python-psutil))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-tests
+ (lambda _
+ (substitute* "tests/test_scooby.py"
+ ;; The test suite uses the no-version PyPI package
+ ;; (https://pypi.org/project/no-version/),
+ ;; but it doesn't seem worth packaging in Guix just for this.
+ (("scooby\\.report\\.VERSION_NOT_FOUND")
+ "scooby.report.MODULE_NOT_FOUND")
+ (("^ +import no_version # noqa.*") ""))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest")))))))
+ (home-page "https://github.com/banesullivan/scooby")
+ (synopsis "Report hardware information and Python package versions")
+ (description
+ "The Scooby package reports the following information about the currently
+running system:
+
+@itemize
+@item operating system name;
+@item hardware information including machine type (e.g., @samp{i386},
+@samp{x86_64}, etc.), CPU count and total RAM;
+@item Python environment (e.g., Python, IPython, etc.);
+@item file system name;
+@item Python version;
+@item versions of specified Python packages.
+@end itemize
+
+It can generate reports as HTML tables or plain text lists.
+
+Scooby has no required dependencies, and only few optional dependencies.")
+ (license license:expat)))
+
+(define-public python-cymem
+ (package
+ (name "python-cymem")
+ (version "2.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "cymem" version))
+ (sha256
+ (base32
+ "0pkyy60zk9654sj991w111p1l0m8wvz36nslw96x6nb9h6sjb5qn"))))
+ (build-system python-build-system)
+ (native-inputs
+ (list python-cython
+ python-pytest))
+ (inputs
+ (list python))
+ (arguments
+ (list
+ #:modules '((ice-9 ftw)
+ (ice-9 match)
+ (guix build utils)
+ (guix build python-build-system))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-source-file-times-to-1980
+ ;; XXX One of the tests uses a ZIP library to pack up some of the
+ ;; source tree, and fails with "ZIP does not support timestamps
+ ;; before 1980". Work around this by setting the file times in the
+ ;; source tree to sometime in early 1980.
+ (lambda _
+ (let ((circa-1980 (* 10 366 24 60 60)))
+ (ftw "." (lambda (file stat flag)
+ (utime file circa-1980 circa-1980)
+ #t))))))))
+ (home-page "https://github.com/explosion/cymem")
+ (synopsis "Cython memory pool for RAII-style memory management")
+ (description
+ "Cymem provides two small memory-management helpers for Cython. They make it
+easy to tie memory to a Python object's life-cycle, so that the memory is freed
+when the object is garbage collected.")
+ (license license:expat)))
+
+(define-public python-preshed
+ (package
+ (name "python-preshed")
+ (version "3.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "preshed" version))
+ (sha256
+ (base32
+ "0akpydd23xqxx9d04drsnw9140rb3cv07r1zpzqz5wm0lf47afzv"))))
+ (build-system python-build-system)
+ (native-inputs (list python-cython python-cymem python-pytest))
+ (inputs (list python python-cymem python-murmurhash))
+ (arguments
+ (list #:modules
+ '((ice-9 ftw) (ice-9 match)
+ (guix build utils)
+ (guix build python-build-system))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-source-file-times-to-1980
+ (lambda _
+ (let ((circa-1980 (* 10 366 24 60 60)))
+ (ftw "."
+ (lambda (file stat flag)
+ (utime file circa-1980 circa-1980) #t))))))))
+ (home-page "https://github.com/explosion/preshed")
+ (synopsis "Cython hash tables that assume keys are pre-hashed")
+ (description
+ "Simple but high performance Cython hash table mapping pre-randomized keys
+to void* values.")
+ (license license:expat)))