diff options
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 1706 |
1 files changed, 1473 insertions, 233 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 6001e7e6ebb..b23108fbf4d 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com> ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu> -;;; Copyright © 2015-2023 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015-2024 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2020 Christine Lemmer-Webber <cwebber@dustycloud.org> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> @@ -80,7 +80,7 @@ ;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw> ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org> ;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de> -;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020, 2021, 2022, 2023, 2024 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com> ;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com> @@ -108,7 +108,7 @@ ;;; Copyright © 2021 Simon Streit <simon@netpanic.org> ;;; Copyright © 2021, 2022, 2023 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de> ;;; Copyright © 2021, 2022 Pradana Aumars <paumars@courrier.dev> -;;; Copyright © 2021, 2022 Felix Gruber <felgru@posteo.net> +;;; Copyright © 2021, 2022, 2023 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org> ;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be> ;;; Copyright © 2021 ZmnSCPxj <ZmnSCPxj@protonmail.com> @@ -119,7 +119,7 @@ ;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com> ;;; Copyright © 2022 drozdov <drozdov@portalenergy.tech> ;;; Copyright © 2022 Peter Polidoro <peter@polidoro.io> -;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com> +;;; Copyright © 2022, 2023 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> @@ -145,6 +145,7 @@ ;;; Copyright © c4droid <c4droid@foxmail.com> ;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2023 Attila Lendvai <attila@lendvai.name> +;;; Copyright © 2023, 2024 Troy Figiel <troy@troyfigiel.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -173,6 +174,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages build-tools) #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) @@ -255,6 +257,7 @@ #:use-module (gnu packages shells) #:use-module (gnu packages sphinx) #:use-module (gnu packages ssh) + #:use-module (gnu packages statistics) #:use-module (gnu packages swig) #:use-module (gnu packages tcl) #:use-module (gnu packages terminals) @@ -397,6 +400,35 @@ Jupytext are: ") (license license:expat))) +(define-public python-concurrent-log-handler + (package + (name "python-concurrent-log-handler") + (version "0.9.25") + ;; No tests in the PyPI tarball. + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Preston-Landers/concurrent-log-handler") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0jp4zkm0idfdsrq3jzb52iqfkh6xzm7sacz1sa34ffnkyqdk3xzh")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-portalocker)) + (native-inputs (list python-hatchling python-pytest)) + (home-page "https://github.com/Preston-Landers/concurrent-log-handler") + (synopsis + "Additional log handler for Python's standard @code{logging} package") + (description + "This package provides an additional log handler for Python's standard +@code{logging} package (PEP 282). This handler will write log events to a log +file which is rotated when the log file reaches a certain size. Multiple +processes can safely write to the same log file concurrently and rotated logs +can be gzipped if desired. An optional threaded queue logging handler is +provided to perform logging in the background.") + (license license:asl2.0))) + (define-public python-logzero (package (name "python-logzero") @@ -535,6 +567,147 @@ workspaces. @end itemize") (license license:gpl3+))) +(define-public python-databind-core + (package + (name "python-databind-core") + (version "4.4.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "databind.core" version)) + (sha256 + (base32 "130hr19kbzizx9n2q7cwfzfk20ii3cqmqjrzb16psnafll303k2d")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'fix-name + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((sitedir (site-packages inputs outputs)) + (dist-info + (string-append sitedir "/databind_core-" #$version ".dist-info"))) + (substitute* (string-append dist-info "/METADATA") + (("Name: databind-core") + "Name: databind.core")) + (substitute* (string-append dist-info "/RECORD") + (("databind_core") "databind.core")) + (rename-file dist-info + (string-append sitedir + "/databind.core-" + #$version ".dist-info")))))))) + (propagated-inputs + (list python-deprecated + python-nr-date + python-nr-stream + python-typeapi + python-typing-extensions)) + (native-inputs + (list python-poetry-core python-pytest)) + (home-page "https://niklasrosenstein.github.io/python-databind/core/") + (synopsis + "Library for de-/serializing Python dataclasses") + (description + "Databind is a library inspired by jackson-databind to de-/serialize +Python dataclasses.") + (license license:expat))) + +(define-public python-databind-json + (package + (name "python-databind-json") + (version "4.4.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "databind.json" version)) + (sha256 + (base32 "1lm864d7arfq0pw64hyc83bwn1z94wjg7a22q1xf0qkjynqs70gg")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'fix-name + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((sitedir (site-packages inputs outputs)) + (dist-info + (string-append sitedir "/databind_json-" #$version ".dist-info"))) + (substitute* (string-append dist-info "/METADATA") + (("Name: databind-json") + "Name: databind.json")) + (substitute* (string-append dist-info "/RECORD") + (("databind_json") "databind.json")) + (rename-file dist-info + (string-append sitedir + "/databind.json-" + #$version ".dist-info")))))))) + (propagated-inputs + (list python-databind-core python-nr-date + python-typeapi python-typing-extensions)) + (native-inputs (list python-poetry-core python-pytest)) + (home-page "https://niklasrosenstein.github.io/python-databind/json/") + (synopsis + "De-/serialize Python dataclasses to or from JSON payloads") + (description + "The @code{databind.json} package implements the de-/serialization to or +from JSON payloads using the @code{databind.core} framework.") + (license license:expat))) + +(define-public python-docspec + (package + (name "python-docspec") + (version "2.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "docspec" version)) + (sha256 + (base32 "1zqmdrc6k8pprra8p3wpzq2ml2gph1cfjmsyg07f8b8fvizffm28")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;there are none + (propagated-inputs + (list python-databind-core + python-databind-json + python-deprecated)) + (native-inputs + (list python-poetry-core)) + (home-page "https://github.com/NiklasRosenstein/python-docspec") + (synopsis "Represent API documentation of programming languages") + (description + "Docspec is a JSON object specification for representing API +documentation of programming languages.") + (license license:expat))) + +(define-public python-docspec-python + (package + (name "python-docspec-python") + (version "2.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "docspec_python" version)) + (sha256 + (base32 "0n8m52vxmlvkj7p5jmd4rfdks65rrp4q4vzak44y6kbg9l5qa6y4")))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #false ;there are none + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + ;; We don't have black 23. + (substitute* "pyproject.toml" + (("23.1.0") "22.3.0"))))))) + (propagated-inputs (list python-black python-docspec python-nr-util)) + (native-inputs (list python-poetry-core)) + (home-page "https://github.com/NiklasRosenstein/docspec/") + (synopsis "Produce docspec data from Python source code") + (description + "This package provides a parser based on @code{lib2to3} producing +@code{docspec} data from Python source code.") + (license license:expat))) + (define-public python-fire (package (name "python-fire") @@ -587,6 +760,7 @@ and variables you'll need already imported and created. (build-system pyproject-build-system) (arguments (list + #:tests? #false ;there are none #:phases '(modify-phases %standard-phases (add-after 'unpack 'remove-invalid-syntax @@ -688,6 +862,7 @@ features of the Python's built-in dict.") (base32 "05zf0xn7ab40dan213fwbp1z4rybih8dphf9mzb2ddmbafxq41mv")))) (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;there are none (propagated-inputs (list python-matplotlib python-numpy)) (home-page "https://github.com/Phlya/adjustText") (synopsis "Adjust text position in matplotlib plots to minimize overlaps") @@ -862,6 +1037,46 @@ as functions or string constants to form colored terminal output.") into dataclasses.") (license license:expat))) +(define-public python-contourpy + (package + (name "python-contourpy") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "contourpy" version)) + (sha256 + (base32 "088bhyh6m6q0h637wiq2paqhwn76hqvvbhqwacfx4a1qhv1lcc75")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + ;; All these tests require matplotlib, but matplotlib requires contourpy + ;; now. + '(list "-k" "not test_mypy" + "--ignore=tests/test_config.py" + "--ignore=tests/test_filled.py" + "--ignore=tests/test_lines.py" + "--ignore=tests/test_renderer.py"))) + (propagated-inputs (list python-mypy + python-numpy + python-pillow + python-pytest + python-pytest-cov + python-pytest-xdist + python-selenium + python-sphinx + python-sphinx-copybutton + python-wurlitzer)) + (native-inputs (list meson-python pybind11-2.10 pkg-config)) + (home-page "https://contourpy.readthedocs.io/") + (synopsis + "Python library for calculating contours of 2D quadrilateral grids") + (description + "ContourPy is a Python library for calculating contours of 2D +quadrilateral grids. It is written in C++11 and wrapped using pybind11.") + (license license:bsd-3))) + (define-public python-yaspin (package (name "python-yaspin") @@ -1123,10 +1338,26 @@ variables into the markdown template") (substitute* "tests/test_bugs.py" (("def test_change_user") "def _do_not_test_change_user") (("def test_lost_connection") "def _do_not_test_lost_connection") - (("def test_kill_query") "def _do_not_test_kill_query")) + (("def test_kill_query") "def _do_not_test_kill_query") + ;; These all fail because of expired certificates. + (("def test_cext_verify_server_certificate") + "def _do_not_test_cext_verify_server_certificate") + (("def test_pure_verify_server_certificate") + "def _do_not_test_pure_verify_server_certificate") + (("def test_verify_server_name_cext_cnx") + "def _do_not_test_verify_server_name_cext_cnx") + (("def test_verify_server_name_pure_cnx") + "def _do_not_test_verify_server_name_pure_cnx")) (substitute* "tests/test_connection.py" (("def test_allow_local_infile_in_path") - "def _do_not_test_allow_local_infile_in_path")) + "def _do_not_test_allow_local_infile_in_path") + ;; This fails because of expired certificates. + (("def test_connect_with_unix_socket") + "def _do_not_test_connect_with_unix_socket")) + (substitute* "tests/test_mysqlx_connection.py" + ;; This fails because of expired certificates. + (("def test_ssl_connection") + "def _do_not_test_ssl_connection")) (substitute* "tests/test_constants.py" (("def test_deprecated") "def _do_not_test_deprecated")) @@ -1222,30 +1453,30 @@ Markdown. All extensions are found under the module namespace of pymdownx.") (define-public python-pint (package (name "python-pint") - (version "0.22") + (version "0.23") (source (origin (method url-fetch) (uri (pypi-uri "Pint" version)) (sha256 (base32 - "0cs4lsvngrkfzpnrmxcwz728m47y0xbw1knksz51cc6gpdm9y4rd")))) + "1d69dqs0j907x4hgz2k8f3zjzhgs9zvlw2k0gi955g3dc28rnl71")))) (build-system pyproject-build-system) (arguments - ;; This single test tries to write to $HOME/.cache/pint. - (list #:test-flags #~'("-k" "not test_auto"))) - (native-inputs - (list python-dask - python-distributed - python-importlib-metadata - python-pytest ;for pytest-subtests - python-pytest-cov - python-pytest-mpl - python-pytest-subtests - python-setuptools-scm - python-sparse - python-uncertainties - python-xarray)) - (propagated-inputs (list python-typing-extensions)) + (list + #:test-flags + '(list "-k" (string-append + ;; This test tries to write to $HOME/.cache/pint. + "not test_auto" + ;; Fails with "Group USCSLengthInternational already + ;; present in registry" + " and not test_load_definitions_stage_2")))) + (native-inputs + (list python-pytest python-pytest-benchmark python-pytest-cov + python-pytest-mpl python-pytest-subtests + python-setuptools-scm)) + (propagated-inputs + (list python-typing-extensions + python-uncertainties)) (home-page "https://github.com/hgrecco/pint") (synopsis "Physical quantities module") (description @@ -1428,6 +1659,87 @@ generator MkDocs.") bindings to the C++ random forest implementation, ranger, using Cython.") (license license:gpl3+))) +(define-public python-nr-date + (package + (name "python-nr-date") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "nr_date" version)) + (sha256 + (base32 "1rnjyykjp41mqz6h1vx18jblq97gi5m5x7dgasyaihnd7fhswhq6")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;there are none + (propagated-inputs (list python-dataclasses)) + (native-inputs (list python-poetry-core)) + (home-page "https://github.com/NiklasRosenstein/python-nr.date") + (synopsis "Fast, regex-based date parsing library in plain Python") + (description "This package provides a fast, regex-based date parsing +library in pure Python.") + (license license:expat))) + +(define-public python-nr-stream + (package + (name "python-nr-stream") + (version "1.1.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "nr_stream" version)) + (sha256 + (base32 "0rag4vbjnalkyfcarx6yipn11ih2hmc3pfldava4c6n6pz31c0pb")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;there are none + (native-inputs (list python-poetry-core)) + (home-page "https://github.com/NiklasRosenstein/python-nr.stream") + (synopsis "Stream and Optional classes for Python") + (description "This package provides a @code{Stream} and @code{Optional} +class.") + (license license:expat))) + +(define-public python-nr-util + (package + (name "python-nr-util") + (version "0.8.12") + (source + (origin + (method url-fetch) + (uri (pypi-uri "nr.util" version)) + (sha256 + (base32 "1x0l4811dskwrk83l2xzdcldx2iazlrx5wxkg41jz7fr6ch9qm54")))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #false ;there are none + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-build-system + (lambda _ + (substitute* "pyproject.toml" + (("^config =.*") "config = []\n")))) + (add-after 'install 'fix-name + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((sitedir (site-packages inputs outputs)) + (dist-info + (string-append sitedir "/nr_util-" #$version ".dist-info"))) + (substitute* (string-append dist-info "/METADATA") + (("Name: nr-util") + "Name: nr.util")) + (substitute* (string-append dist-info "/RECORD") + (("nr_util") "nr.util")) + (rename-file dist-info + (string-append sitedir + "/nr.util-" + #$version ".dist-info")))))))) + (propagated-inputs (list python-deprecated python-typing-extensions)) + (native-inputs (list python-poetry-core)) + (home-page "https://github.com/NiklasRosenstein/python-nr.util") + (synopsis "General purpose Python utility library") + (description "This package provides a general purpose Python utility +library.") + (license license:expat))) + (define-public python-slixmpp (package (name "python-slixmpp") @@ -2249,25 +2561,21 @@ library.") (version "3.8.0") (source (origin - (method url-fetch) - (uri (pypi-uri "h5py" version)) - (sha256 - (base32 - "0pyr6z4h2xqbp49yx2i1401gl6yqh03h771zslwcy0201hpxiskg")))) + (method url-fetch) + (uri (pypi-uri "h5py" version)) + (sha256 + (base32 "0pyr6z4h2xqbp49yx2i1401gl6yqh03h771zslwcy0201hpxiskg")))) (build-system python-build-system) (arguments - `(#:tests? #f ; no test target - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-hdf5-paths - (lambda* (#:key inputs #:allow-other-keys) - (setenv "HDF5_DIR" (assoc-ref inputs "hdf5"))))))) - (propagated-inputs - (list python-six python-numpy)) - (inputs - (list hdf5-1.10)) - (native-inputs - (list python-cython python-pkgconfig pkg-config)) + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-hdf5-paths + (lambda* (#:key inputs #:allow-other-keys) + (setenv "HDF5_DIR" + (assoc-ref inputs "hdf5"))))))) + (propagated-inputs (list python-six python-numpy)) + (inputs (list hdf5-1.10)) + (native-inputs (list pkg-config python-cython python-ipython + python-pkgconfig python-pytest)) (home-page "https://www.h5py.org/") (synopsis "Read and write HDF5 files from Python") (description @@ -2278,6 +2586,30 @@ access to HDF5 files, datasets and groups using established Python and NumPy concepts.") (license license:bsd-3))) +(define-public python-hdf5storage + (package + (name "python-hdf5storage") + (version "0.1.19") + (source + (origin + (method url-fetch) + (uri (pypi-uri "hdf5storage" version)) + (sha256 + (base32 "11pgxsqap9l7jsf52649q9mpj8a0w6p9im929lpr9s26ynnnn6ks")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-h5py python-numpy)) + (native-inputs (list python-nose)) + (home-page "https://github.com/frejanordsiek/hdf5storage") + (synopsis "Read and write Python data types from and to HDF5 files") + (description + "This Python package provides high-level utilities to read and write a +variety of Python types from and to @acronym{HDF5, Hierarchical Data Format} +formatted files. This package also provides support for MATLAB MAT v7.3 +formatted files, which are HDF5 files with a different extension and some +extra metadata. Because HDF5 and MAT files might need to be read from +untrusted sources, pickling is avoided in this package.") + (license license:bsd-2))) + (define-public python-hjson ;; Using commit from master branch as the PyPI version does not contain ;; the hjson/tests/ directory. @@ -2363,6 +2695,7 @@ Unicode-to-LaTeX conversion.") (file-name (git-file-name name version)) (sha256 (base32 "0bkhfnlik89j3yamr20br4wm8975f20v33wabi2nyxvj10whr5dj")) + (patches (search-patches "python-pyls-black-41.patch")) ;; Patch to work with python-lsp-server. Taken from ;; <https://github.com/rupert/pyls-black/pull/37>. (modules '((guix build utils))) @@ -2378,9 +2711,11 @@ Unicode-to-LaTeX conversion.") "pylsp_format_range") (("from pyls([ \\.])" _ char) (string-append "from pylsp" char))))))) - (build-system python-build-system) + (build-system pyproject-build-system) (arguments - `(#:test-target "pytest")) + (list + #:test-flags + '(list "-k" "not test_load_config_target_version"))) (propagated-inputs (list python-black python-lsp-server python-tomli)) (native-inputs @@ -2566,25 +2901,25 @@ conventions and aliases in the same expression.") (define-public python-wand (package (name "python-wand") - (version "0.6.11") + (version "0.6.13") (source (origin (method url-fetch) (uri (pypi-uri "Wand" version)) (sha256 - (base32 "15d9kxyc7qvknx0kv27m2jamnmisckyf89i7wlqykwgqm46p0qdn")))) - (build-system python-build-system) + (base32 "1jpwm956vm35hmgjndr2jwrcql0bwvpsl88q5nr0x8ppxa2380gm")))) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'find-magickwand - (lambda* (#:key inputs #:allow-other-keys) - (setenv "MAGICK_HOME" (assoc-ref inputs "imagemagick")) - (setenv "WAND_MAGICK_LIBRARY_SUFFIX" ".Q16"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "pytest" "-vv"))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'hardcode-lib-path + (lambda _ + (substitute* "wand/api.py" + (("os\\.environ\\.get\\('MAGICK_HOME'\\)") + (string-append "\"" #$(this-package-input "imagemagick") "\"")) + (("os\\.environ\\.get\\('WAND_MAGICK_LIBRARY_SUFFIX'\\)") + "\".Q16\""))))))) (native-inputs (list python-pytest)) (inputs @@ -2955,6 +3290,40 @@ abstractions to different hardware devices, and a suite of utilities for sending and receiving messages on a CAN bus.") (license license:lgpl3+))) +(define-public python-canmatrix + (package + (name "python-canmatrix") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "canmatrix" version)) + (sha256 + (base32 "046dzmggfm6h0fvfvwrblvih0blhc70ma0pqxzry3cphc08jvsrg")) + ;; The test suite uder ./test is a legacy test suite. The new test + ;; suite is defined under src/canmatrix/tests. + (modules '((guix build utils))) + (snippet '(delete-file-recursively "test")))) + (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest"))))))) + (propagated-inputs (list python-attrs python-click python-future + python-six)) + (native-inputs (list python-lxml python-pytest python-xlrd python-xlwt)) + (home-page "https://github.com/ebroecker/canmatrix") + (synopsis "@acronym{CAN, Controller Area Network} matrices in Python") + (description + "This package implements a @acronym{CAN, Controller Area Network} matrix +object in Python which describes the CAN-communication and its needed objects +such as board units, frames, signals, and values. It also includes two +command-line tools (@command{canconvert} and @command{cancompare}) for +converting and comparing CAN databases.") + (license license:bsd-2))) + (define-public python-canopen (package (name "python-canopen") @@ -3640,7 +4009,12 @@ in the current session, Python, and the OS.") (uri (pypi-uri "schedule" version)) (sha256 (base32 - "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i")))) + "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i")) + (snippet + #~(begin (use-modules (guix build utils)) + (substitute* "schedule/__init__.py" + (("collections\\.Hashable") + "collections.abc.Hashable")))))) (build-system python-build-system) (native-inputs (list python-pytest python-mock)) @@ -3701,6 +4075,46 @@ lossless but can be tweaked for more aggressive cleaning.") after Andy Lester’s Perl module WWW::Mechanize.") (license license:bsd-3))) +(define-public python-mediapy + (package + (name "python-mediapy") + (version "1.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/mediapy") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14hmwib0dmy9h1w7allwsp0cgrfdv8f2sm9qlvy65yxai68v6vnl")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'fix-references + (lambda _ + (substitute* "mediapy_test.py" + (("'/bin/bash") + (string-append "'" (which "bash"))))))))) + (inputs (list ffmpeg-5)) + (propagated-inputs (list python-absl-py + python-ipython + python-matplotlib + python-numpy + python-pillow)) + (native-inputs + (list python-flit-core + python-pylint + python-pytest + python-pytest-xdist)) + (home-page "https://github.com/google/mediapy") + (synopsis "Read/write/show images and videos in an IPython notebook") + (description "This Python library makes it easy to display images and +videos in a notebook.") + (license license:asl2.0))) + (define-public python-simpleaudio (package (name "python-simpleaudio") @@ -5045,13 +5459,13 @@ to Roman Numerals.") (define-public python-rollbar (package (name "python-rollbar") - (version "0.16.3") + (version "1.0.0") (source (origin (method url-fetch) (uri (pypi-uri "rollbar" version)) (sha256 (base32 - "1qpd0j50wqli3867xmhwk65pm1cxjs60yg83mcvcf3kic3y3sc82")))) + "1bzkgp4r79d789q15vnjji2gcb34bnksx9l7q9pjkw12kzjbfiv3")))) (build-system python-build-system) (native-inputs (list python-pytest-runner python-unittest2)) (inputs (list python-requests python-six python-httpx python-blinker @@ -5895,7 +6309,6 @@ flexibility and power of the Python language.") (string-append "-Wl," "-rpath=" python "/lib") "-fno-semantic-interposition" "build/temp/tree/tree.o" - "-Wl,--whole-archive" "-L" (string-append python "/lib") (string-append abseil-cpp "/lib/libabsl_int128.a") (string-append abseil-cpp "/lib/libabsl_raw_hash_set.a") @@ -5903,7 +6316,6 @@ flexibility and power of the Python language.") (string-append abseil-cpp "/lib/libabsl_strings.a") (string-append abseil-cpp "/lib/libabsl_strings_internal.a") (string-append abseil-cpp "/lib/libabsl_throw_delegate.a") - "-Wl,--no-whole-archive" "-o" "build/lib/tree/_tree.so"))))))) (home-page "https://github.com/deepmind/tree") (synopsis "Work with nested data structures in Python") @@ -6930,6 +7342,51 @@ errors when data is invalid.") Interfaces} via data models provided in the JSON format.") (license license:expat))) +(define-public python-pydoc-markdown + (package + (name "python-pydoc-markdown") + (version "4.8.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pydoc_markdown" version)) + (sha256 + (base32 "02vzlrd18r8wi0b64vq2gnbhaadysg9rnbylf9sf2v9q65z94v7v")))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #false ;there are none + #:phases + '(modify-phases %standard-phases + ;; This is probably not a good idea, but it wants a rather old + ;; version of docstring-parser. + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "pyproject.toml" + (("docstring-parser = .*") + "docstring-parser = \"^0\"\n"))))))) + (propagated-inputs (list python-click + python-databind-core + python-databind-json + python-docspec + python-docspec-python + python-docstring-parser + python-jinja2 + python-nr-util + python-pyyaml + python-requests + python-tomli + python-tomli-w + python-watchdog + python-yapf)) + (native-inputs (list python-poetry-core)) + (home-page "https://pypi.org/project/pydoc-markdown/") + (synopsis "Create Python API documentation in Markdown format") + (description "Pydoc-Markdown is a tool to create Python API documentation +in Markdown format. Instead of executing your Python code like so many other +documentation tools, it parses it using docspec instead.") + (license license:expat))) + (define-public python-pydocstyle (package (name "python-pydocstyle") @@ -7213,6 +7670,20 @@ programming language and the extended Cython programming language. It makes writing C extensions for Python as easy as Python itself.") (license license:asl2.0))) +;; Needed for scipy +(define-public python-cython-0.29.35 + (package + (inherit python-cython) + (name "python-cython") + (version "0.29.35") + (source (origin + (method url-fetch) + (uri (pypi-uri "Cython" version)) + (sha256 + (base32 + "09y5r22nyswqpwc02agla1bnzh2jx2db25pnq9pc5cq8pyh1yf3f")))) + (properties '()))) + (define-public python-cython-3 (package (inherit python-cython) @@ -7431,6 +7902,28 @@ capabilities.") (description "This package provides the complete NumPy documentation in the Texinfo, HTML, and PDF formats."))) +(define-public python-npx + (package + (name "python-npx") + (version "0.1.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "npx" version)) + (sha256 + (base32 + "1m0v2p5mh3aqrypl4ipgzvr5nhx7bk5vv9ah2xr9l1xgj6nnmqnc")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-numpy)) + (native-inputs (list python-flit-core python-networkx python-pytest)) + (home-page "https://github.com/nschloe/npx") + (synopsis "Extensions for NumPy") + (description "NumPy is a large library used everywhere in scientific +computing. That's why breaking backwards-compatibility comes at a +significant cost and is almost always avoided, even if the API of some +methods is arguably lacking. This package provides drop-in wrappers +\"fixing\" those.") + (license license:bsd-3))) + (define-public python-munch (package (name "python-munch") @@ -7563,7 +8056,7 @@ color scales, and color space conversion easy. It has support for: (native-inputs (list python-pytest python-pytest-mock)) (propagated-inputs - (list python-cryptography python-gssapi python-ruamel.yaml)) + (list python-cryptography python-gssapi python-krb5 python-ruamel.yaml)) (home-page "https://github.com/jborean93/pyspnego") (synopsis "Python SPNEGO library") (description "The @code{pyspnego} Python library handles Negotiate, NTLM, @@ -8012,16 +8505,25 @@ comparison. (define-public python-matplotlib (package (name "python-matplotlib") - (version "3.5.2") + (version "3.8.2") (source (origin (method url-fetch) (uri (pypi-uri "matplotlib" version)) (sha256 - (base32 "18h78s5ld1i6mz00w258hy29909nfr3ddq6ry9kq18agw468bks8")))) - (build-system python-build-system) + (base32 "18amhxyxa6yzy1nwky4ggdgvvxnbl3qz2lki05vfx0dqf6w7ia81")))) + (build-system pyproject-build-system) (arguments (list + #:test-flags + '(list "-m" "not network" + "-k" + (string-append + ;; This one fails with a small difference in the upper left. + "not test_figure_legend_outside" + ;; The 'test_lazy_auto_backend_selection' fails + ;; because it would require an X server; skip it. + " and not test_lazy_auto_backend_selection")) #:phases #~(modify-phases %standard-phases (add-before 'build 'pretend-version @@ -8085,49 +8587,30 @@ backend=Agg basedirlist = ~a,~a [packages] -tests = True~%" (assoc-ref inputs "tcl") (assoc-ref inputs "tk")))))) +tests = True~%" #$(this-package-input "tcl") #$(this-package-input "tk")))))) (replace 'check - (lambda* (#:key tests? #:allow-other-keys) + (lambda* (#:key tests? test-flags #:allow-other-keys) (when tests? ;; Step out of the source directory to avoid interference. (with-directory-excursion "/tmp" ;; Run the installed tests, which is what we want since not ;; everything gets built in the source directory. - (invoke "pytest" - "-n" (number->string (parallel-job-count)) - "-m" "not network" "--pyargs" "matplotlib" - "-k" - (string-append - ;; The 'test_lazy_auto_backend_selection' fails - ;; because it would require an X server; skip it. - "not test_lazy_auto_backend_selection" - ;; test_getattr fails for the GTK backend because - ;; of an unexpected warning from Python 3.10 - ;; (via the gi module): - ;; https://gitlab.gnome.org/GNOME/pygobject/-/issues/494 - " and not test_getattr"))))))))) - (propagated-inputs - (list gobject-introspection - python-cairocffi - python-certifi + (apply invoke "pytest" + "-n" (number->string (parallel-job-count)) + "--pyargs" "matplotlib" + test-flags)))))))) + (propagated-inputs + (list python-contourpy python-cycler python-dateutil python-fonttools-minimal + python-importlib-resources python-kiwisolver python-numpy python-packaging python-pillow - ;; ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context' - ;; ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of - ;; ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi - ;; ;; object. For this reason we need to import both libraries. - ;; python-pycairo - python-pygobject python-pyparsing - python-pytz - python-six - `(,python "tk") - python-wxpython)) + `(,python "tk"))) (inputs (list cairo freetype @@ -8138,6 +8621,7 @@ tests = True~%" (assoc-ref inputs "tcl") (assoc-ref inputs "tk")))))) tk)) (native-inputs (list pkg-config + pybind11 python-pytest python-pytest-timeout python-pytest-xdist @@ -8262,6 +8746,113 @@ Jupyter.") three-way Venn diagrams in @code{matplotlib}.") (license license:expat))) +(define-public python-matplotx + (package + (name "python-matplotx") + (version "0.3.10") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nschloe/matplotx") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1j301mr7ai2jmbm5mkva0jd99fzxhyq585pqzqfmrf5pil8j4q8i")))) + (build-system pyproject-build-system) + (propagated-inputs + (list python-matplotlib + python-numpy + ;; optional dependencies + python-networkx + python-pypng + python-scipy)) + (native-inputs (list python-imageio + python-meshzoo + python-pytest + python-scikit-fem)) + (arguments + (list + #:test-flags + ;; This test fails with ValueError: not enough values to unpack. + #~(list "--deselect" "tests/test_spy.py::test_cli" + ;; XXX: unknown failure + "--deselect" "tests/test_spy.py::test_png"))) + (home-page "https://github.com/nschloe/matplotx") + (synopsis "Minimal matplotlib styles") + (description + "This package includes some extensions for Matplotlib to create +clean plots with a minimalistic style.") + (license license:expat))) + +(define-public python-cplot + (package + (name "python-cplot") + (version "0.9.3") + (source + (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/nschloe/cplot") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zk7hpq358sbympmkms7w2wjs7nw8mdfvkvdasblg2nhqayv42qz")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-matplotlib + python-matplotx + python-npx + python-numpy)) + (native-inputs (list python-pytest)) + (home-page "https://github.com/nschloe/cplot") + (synopsis "Plot complex-valued functions") + (description "@code{cplot} is a Python library for plotting +complex-valued functions.") + (license license:gpl3+))) + +(define-public python-cppy + (package + (name "python-cppy") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cppy" version)) + (sha256 + (base32 "06zysv86j7wqb1rl88ab4clbjf7iahhv9gfyqlasr18hggqkpd43")))) + (build-system pyproject-build-system) + (home-page "https://github.com/nucleic/cppy") + (synopsis "C++ header library for Python extension modules") + (description "This package is a small C++ header library which makes it +easier to write Python extension modules. The primary feature is a +@code{PyObject} smart pointer which automatically handles reference counting +and provides convenience methods for performing common object operations.") + (license license:bsd-3))) + +(define-public python-perfplot + (package + (name "python-perfplot") + (version "0.10.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "perfplot" version)) + (sha256 + (base32 + "0hbyv17f9ra6l6albcrqx4rylmfv2m6z4qsnhb4bar256dralvfp")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-matplotlib + python-matplotx + python-numpy + python-rich)) + (native-inputs (list python-flit-core + python-pytest)) + (home-page "https://github.com/nschloe/perfplot") + (synopsis "Performance plots for Python code snippets") + (description "@code{perfplot} extends Python's timeit by testing +snippets with input parameters (e.g., the size of an array) and plotting +the results.") + (license license:gpl3+))) + (define-public python-pysnptools (package (name "python-pysnptools") @@ -8708,6 +9299,39 @@ also add custom data, viewing options, and passwords to PDF files. It can retrieve text and metadata from PDFs as well as merge entire files together.") (license license:bsd-3))) +(define-public python-pdf2image + (package + (name "python-pdf2image") + (version "1.17.0") + ;; No tests in the PyPI tarball. + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Belval/pdf2image") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0xd8q939zqa8flfcdhbgyadiwqb8sgnd42cbr6n1l2jl9fnix45v")))) + (build-system pyproject-build-system) + (arguments + ;; The following excluded tests assume hardcoded binary paths to + ;; /usr/bin/pdftoppm and /usr/bin/pdftocairo. + '(#:test-flags '("--exclude=^test_use_poppler_path$" + "--exclude=^test_use_poppler_path_with_trailing_slash$"))) + (propagated-inputs (list python-pillow)) + (inputs (list poppler)) + (native-inputs (list python-nose which)) + (home-page "https://github.com/Belval/pdf2image") + (synopsis + "Python wrapper around @command{pdftoppm} and @command{pdftocairo}") + (description + "This package provides a Python API wrapping the @command{pdftoppm} and +@command{pdftocairo} command line tools. It can convert @file{PDF} files to a +Python list with elements of type @code{PIL.Image} (from the +@code{python-pillow} library).") + (license license:expat))) + (define-public python-pikepdf (package (name "python-pikepdf") @@ -8726,6 +9350,7 @@ retrieve text and metadata from PDFs as well as merge entire files together.") python-attrs python-coverage python-hypothesis + python-setuptools-scm python-psutil python-pytest python-pytest-cov @@ -9037,19 +9662,21 @@ regions of interest, geometric shapes, paths, text, etc for image overlays.") (define-public python-tifffile (package (name "python-tifffile") - (version "2021.4.8") + (version "2023.12.9") (source (origin (method url-fetch) (uri (pypi-uri "tifffile" version)) (sha256 (base32 - "16r0hw7shka1bqf28bv198lj2jhf2r9gy3s5zv4nf5cfsfm8pajm")))) + "1f6d8qdlq0zlksfdhp1mhj9icpwhw4cz47r4i80m6r0a328xmlcx")))) (build-system python-build-system) ;; Tests require lfdfiles, which depends on tifffile (arguments `(#:tests? #f)) (propagated-inputs - (list python-numpy python-imagecodecs)) + (list python-numpy)) + (native-inputs + (list python-pytest)) (home-page "https://www.lfd.uci.edu/~gohlke/") (synopsis "Read and write TIFF(r) files") (description "This package lets you read image and metadata from many @@ -9089,6 +9716,105 @@ converting, and viewing many of the proprietary file formats used to store experimental data and metadata at the Laboratory for Fluorescence Dynamics.") (license license:bsd-3))) +(define-public python-av + (package + (name "python-av") + (version "10.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "av" version)) + (sha256 + (base32 "01byqsjclkg65mhr6b4i2r2n4y7af9kdd2c35lxny27121b3vzca")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list + ;; Tests require outbound access to download data samples from + ;; http://fate.ffmpeg.org/fate-suite: + ;; + ;; E urllib.error.URLError: <urlopen error [Errno -3] + ;; Temporary failure in name resolution> + ;; + "--ignore=tests/test_doctests.py" + "--ignore=tests/test_timeout.py" + "-k" + (string-append + "not test_data" + " and not test_container_probing" + " and not test_stream_probing" + " and not test_transcode" + " and not test_codec_tag" + " and not test_parse" + " and not test_decode_audio_sample_count" + " and not test_decoded_motion_vectors" + " and not test_decoded_motion_vectors_no_flag" + " and not test_decoded_time_base" + " and not test_decoded_video_frame_count" + " and not test_encoding_aac" + " and not test_encoding_dnxhd" + " and not test_encoding_dvvideo" + " and not test_encoding_h264" + " and not test_encoding_mjpeg" + " and not test_encoding_mp2" + " and not test_encoding_mpeg1video" + " and not test_encoding_mpeg4" + " and not test_encoding_pcm_s24le" + " and not test_encoding_png" + " and not test_encoding_tiff" + " and not test_encoding_xvid" + " and not test_reading_from_buffer" + " and not test_reading_from_buffer_no_seek" + " and not test_reading_from_file" + " and not test_reading_from_pipe_readonly" + " and not test_reading_from_write_readonly" + " and not test_writing_to_custom_io_dash" + " and not test_writing_to_custom_io_image2" + " and not test_decode_half" + " and not test_seek_end" + " and not test_seek_float" + " and not test_seek_int64" + " and not test_seek_middle" + " and not test_seek_start" + " and not test_stream_seek" + " and not test_selection" + " and not test_stream_tuples" + " and not test_movtext" + " and not test_vobsub" + " and not test_roundtrip" + " and not test_stream_probing")) + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'build-extensions + (lambda _ + (invoke "python" "setup.py" "build_ext" "--inplace")))))) + (native-inputs + (list pkg-config + python-cython + python-editorconfig + python-numpy + python-pillow + python-pytest)) + (inputs + ;; XXX: Build is failing with FFmpeg 6.0, unresolved upstream. + ;; See https://github.com/PyAV-Org/PyAV/issues/1106 + (list ffmpeg-5)) + (home-page "https://github.com/PyAV-Org/PyAV") + (synopsis "Pythonic bindings for FFmpeg's libraries") + (description + "PyAV is a Python library that allows for direct and precise manipulation +of media through containers, streams, packets, codecs, and frames. It provides +access to the powerful FFmpeg libraries while managing the complex details as +much as possible. +PyAV also facilitates data transformation and integration with +other packages such as Numpy and Pillow. However, working with media is a +challenging task and PyAV cannot abstract it away or make all the best decisions +for you. If you can accomplish your tasks with the ffmpeg command, PyAV may not +be necessary. Nonetheless, PyAV is an essential tool when working with media +that requires its specific capabilities.") + (license license:bsd-3))) + (define-public python-ffmpeg-python ;; The latest release (0.2.0) is old and its test suite crashs on Python 3.10. (let ((commit "df129c7ba30aaa9ffffb81a48f53aa7253b0b4e6") (revision "0")) @@ -9168,14 +9894,14 @@ from FFMPEG, reliably terminating the process when done.") (define-public python-imageio (package (name "python-imageio") - (version "2.26.0") + (version "2.33.1") (source (origin (method url-fetch) (uri (pypi-uri "imageio" version)) (sha256 (base32 - "0dgddhi5dlpry5j4d3256v09pcziyj3ii47yx0zi68xprm11d7qn")))) + "1kn1gj9vc1mkirs39x3nkw2d56paiagi24kkxksrig9pn502swkq")))) (build-system pyproject-build-system) (arguments (list @@ -9202,9 +9928,10 @@ from FFMPEG, reliably terminating the process when done.") (delete-file "tests/test_freeimage.py")))))) (inputs (list freeimage)) (propagated-inputs - (list python-imageio-ffmpeg python-numpy python-pillow python-psutil)) + (list python-imageio-ffmpeg python-numpy python-pillow python-tifffile)) (native-inputs - (list python-pytest)) + (list python-black python-flake8 python-fsspec python-pytest + python-pytest-cov)) (home-page "https://imageio.github.io/") (synopsis "Library for reading and writing a wide range of image data") (description @@ -9466,6 +10193,43 @@ service. It allows you to invoke commands on target Windows machines from any machine that can run Python.") (license license:expat))) +(define-public python-manimpango + (package + (name "python-manimpango") + (version "0.5.0") + (source + (origin + (method git-fetch) ; no tests data in PyPi package + (uri (git-reference + (url "https://github.com/ManimCommunity/ManimPango") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "00mrvswk8yly0m13jq0f432pr19sy3j6w37lrv78ah1j6jz9n50h")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'build-extensions + (lambda _ + (invoke "python" "setup.py" "build_ext" "--inplace")))))) + (native-inputs + (list pkg-config + python-cython + python-pytest + python-pytest-cov)) + (inputs + (list pango)) + (home-page "https://manimpango.manim.community/") + (synopsis "Bindings for Pango for using with Manim") + (description + "Python bindings for ManimPango which is a C binding for Pango, +using Cython. + +ManimPango is internally used in Manim to render (non-LaTeX) text.") + (license license:expat))) + (define-public python-xcffib (package (name "python-xcffib") @@ -9651,11 +10415,18 @@ Python language binding specification.") (source (origin (method url-fetch) - (uri - (pypi-uri "grako" version ".zip")) + (uri (pypi-uri "grako" version ".zip")) (sha256 - (base32 - "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw")))) + (base32 "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw")) + (snippet + #~(begin (use-modules (guix build utils)) + (substitute* "grako/grammars.py" + (("from collections import defaultdict, Mapping") + (string-append "from collections import defaultdict\n" + "from collections.abc import Mapping"))) + (substitute* '("grako/util.py" + "grako/walkers.py") + (("collections\\.Mapping") "collections.abc.Mapping")))))) (build-system python-build-system) (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive. (native-inputs @@ -10121,6 +10892,67 @@ finding unresolved symbols in Python code and their corresponding imports.") class constructs.") (license license:expat))) +(define-public python-jaraco-collections + (package + (name "python-jaraco-collections") + (version "5.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "jaraco.collections" version)) + (sha256 + (base32 "0s7y3jr7c173k38pck1b17kxnvx2fl0qh9m9gdf64pr9kz8fi00n")))) + (build-system pyproject-build-system) + ;; Do not test pyproject.toml with python-pytest-checkdocs as it tries to + ;; download dependencies. + (arguments + '(#:test-flags '("-k" "not project"))) + (propagated-inputs (list python-jaraco-text)) + ;; TODO: Add python-pytest-ruff to native-inputs once it has been + ;; packaged. + (native-inputs (list python-pytest + python-pytest-black + python-pytest-checkdocs + python-pytest-cov + python-pytest-enabler + python-pytest-mypy)) + (home-page "https://github.com/jaraco/jaraco.collections") + (synopsis "Provides various collection objects") + (description + "This package provides models and classes to supplement the +standard library @code{collections} module. Examples include +@itemize +@item +RangeMap: A mapping that accepts a range of values for keys. +@item +Projection: A subset over an existing mapping. +@item +KeyTransformingDict: Generalized mapping with keys transformed by a function. +@item +FoldedCaseKeyedDict: A dict whose string keys are case-insensitive. +@item +BijectiveMap: A map where keys map to values and values back to their keys. +@item +ItemsAsAttributes: A mapping mix-in exposing items as attributes. +@item +IdentityOverrideMap: A map whose keys map by default to themselves unless overridden. +@item +FrozenDict: A hashable, immutable map. +@item +Enumeration: An object whose keys are enumerated. +@item +Everything: A container that contains all things. +@item +Least, Greatest: Objects that are always less than or greater than any other. +@item +pop_all: Return all items from the mutable sequence and remove them from that sequence. +@item +DictStack: A stack of dicts, great for sharing scopes. +@item +WeightedLookup: A specialized RangeMap for selecting an item by weights. +@end itemize") + (license license:expat))) + ;;; Variant used to break a cycle with python-pytest-enabler. (define-public python-jaraco-context-bootstrap (hidden-package @@ -10285,6 +11117,41 @@ releases.") (description "This package provides testing support by jaraco.") (license license:expat))) +(define-public python-jaraco-text + (package + (name "python-jaraco-text") + (version "3.12.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "jaraco.text" version)) + (sha256 + (base32 "0b2rmx0sa61f75lkkr4nfaj3mkgmn3x9c1akpwarfbmksk42b7iq")))) + (build-system pyproject-build-system) + ;; Do not test pyproject.toml with python-pytest-checkdocs as it tries to + ;; download dependencies. + (arguments + '(#:test-flags '("-k" "not project"))) + (propagated-inputs (list python-autocommand python-inflect + python-jaraco-context python-jaraco-functools + python-more-itertools)) + ;; TODO: Add python-pytest-ruff to native-inputs once it has been + ;; packaged. + (native-inputs (list python-pytest + python-pytest-black + python-pytest-checkdocs + python-pytest-cov + python-pytest-enabler + python-pytest-mypy)) + (home-page "https://github.com/jaraco/jaraco.text") + (synopsis "Provides various routines for text manipulation") + (description + "This package provides handy routines for dealing with text, +such as wrapping, substitution, trimming, stripping, prefix and suffix +removal, line continuation, indentation, comment processing, identifier +processing, values parsing, case insensitive comparison, and more.") + (license license:expat))) + (define-public python-simplegeneric (package (name "python-simplegeneric") @@ -10865,6 +11732,34 @@ MEDLINE XML repository.") abstract syntax tree (AST) nodes without side effects.") (license license:expat))) +(define-public python-ast-decompiler + (package + (name "python-ast-decompiler") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ast_decompiler" version)) + (sha256 + (base32 "0dw3fck4ajilphqw4hdpa8pmqxg3jfk2xkmjnk3kx5pqwl3sbhzg")) + ;; We need to manually create an __init__.py file under the tests/ + ;; directory, since it is not included in the distributed + ;; version. (See: + ;; https://github.com/JelleZijlstra/ast_decompiler/issues/52). + (modules '((guix build utils))) + (snippet '(call-with-output-file "tests/__init__.py" + (const #t))))) + (build-system pyproject-build-system) + (native-inputs (list python-flit-core python-pytest)) + (home-page "https://github.com/JelleZijlstra/ast_decompiler") + (synopsis + "Decompile an @acronym{AST, Abstract Syntax Tree} to Python code") + (description + "This library provides functionality to decompile @acronym{AST, Abstract +Syntax Tree} objects, as generated by the standard library @code{ast} module, +to Python code.") + (license license:asl2.0))) + (define-public python-asttokens (package (name "python-asttokens") @@ -11842,17 +12737,32 @@ SVG, EPS, PNG and terminal output.") (define-public python-seaborn (package (name "python-seaborn") - (version "0.12.0") + (version "0.13.1") (source (origin (method url-fetch) (uri (pypi-uri "seaborn" version)) (sha256 (base32 - "08vvnp4ps86857imxz2l5xi2vir5xdcdp3apq4badb4b5llifgw9")))) + "0ycibcs6kvd3xi4zsxna81claqifyb9dn6z6jwc5x7lqqplnbbdz")))) (build-system pyproject-build-system) - (propagated-inputs (list python-pandas python-matplotlib python-numpy - python-scipy)) - (native-inputs (list python-flit-core python-pypa-build python-pytest)) + (propagated-inputs + (list python-ipykernel + python-matplotlib + python-mypy + python-nbconvert + python-numpy + python-numpydoc + python-pandas + python-pyyaml + python-scipy + python-statsmodels)) + (native-inputs + (list python-flake8 + python-flit-core + python-pre-commit + python-pytest + python-pytest-cov + python-pytest-xdist)) (home-page "https://seaborn.pydata.org/") (synopsis "Statistical data visualization") (description @@ -12584,6 +13494,22 @@ validate this input and generate a PEP 643-compliant metadata file (e.g. @file{PKG-INFO}).") (license license:expat))) +(define-public python-pyproject-metadata-0.7 + (package + (inherit python-pyproject-metadata) + (name "python-pyproject-metadata") + (version "0.7.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/FFY00/python-pyproject-metadata") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0yvs59ymz5gdix34a95wxlxvk9bnvjgrzsnmnc3ws7whpfv3yasm")))))) + ;; pep621 was renamed to pyproject-metadata. (define-public python-pep621 (deprecated-package "python-pep621" python-pyproject-metadata)) @@ -12925,13 +13851,13 @@ TODO notes checker plugin for flake8.") (define-public python-flake8-isort (package (name "python-flake8-isort") - (version "4.1.1") + (version "6.1.0") (source (origin (method url-fetch) (uri (pypi-uri "flake8-isort" version)) (sha256 - (base32 "05r7z0j9rqgy0a9261bhisairrz6w8hy5hy5kf2mhvhfnx53056q")))) + (base32 "0gk4q504v42hdzpkndczc0kkwnr85jn1h5pvb561jh65p91r6qyl")))) (build-system python-build-system) (arguments (list @@ -12940,8 +13866,8 @@ TODO notes checker plugin for flake8.") (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? - (invoke "pytest" "-vv"))))))) - (propagated-inputs (list python-flake8 python-isort python-testfixtures)) + (invoke "pytest" "-vv" "run_tests.py"))))))) + (propagated-inputs (list python-flake8 python-isort)) (native-inputs (list python-pytest)) (home-page "https://github.com/gforcada/flake8-isort") (synopsis "Flake8 plugin integrating isort") @@ -13279,6 +14205,24 @@ almost any existing Python modules, and an easy way for outside developers to add functionality and customization to your projects with their own plugins.") (license license:expat))) +(define-public python-strenum + (package + (name "python-strenum") + (version "0.4.15") + (source + (origin + (method url-fetch) + (uri (pypi-uri "StrEnum" version)) + (sha256 + (base32 "1zrfr1shin5wyfnfxc7jpk013594wasrp4ni9l70fhjlf2mvb3w7")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;there are none. + (home-page "https://github.com/irgeek/StrEnum") + (synopsis "Enum that inherits from str") + (description "StrEnum is a Python @code{enum.Enum} that inherits from +@code{str} to complement @code{enum.IntEnum} in the standard library.") + (license license:expat))) + (define-public python-pysendfile (package (name "python-pysendfile") @@ -13587,19 +14531,8 @@ reading and writing MessagePack data.") (home-page "https://pypi.org/project/msgpack/") (license license:asl2.0))) -(define-public python-msgpack-1.0.2 - (package - (inherit python-msgpack) - (version "1.0.2") - (source (origin - (method url-fetch) - (uri (pypi-uri "msgpack" version)) - (sha256 - (base32 - "1109s2yynrahwi64ikax68hx0mbclz8p35afmpphw5dwynb49q7s")))))) - ;; This msgpack library's name changed from "python-msgpack" to "msgpack" with -;; release 0.5. Some packages like borg still call it by the old name for now. +;; release 0.5. Some packages like poetry still call it by the old name for now. ;; <https://bugs.gnu.org/30662> (define-public python-msgpack-transitional (package @@ -15890,7 +16823,7 @@ programmatically with command-line parsers like @code{getopt} and (define-public python-pythonanywhere (package (name "python-pythonanywhere") - (version "0.9.10") + (version "0.12.1") (source (origin (method git-fetch) @@ -15900,7 +16833,7 @@ programmatically with command-line parsers like @code{getopt} and (file-name (git-file-name name version)) (sha256 (base32 - "0vzzc1g8pl7cb9yvm3n1j5zlzxf0jd423rzspc2kvpb8yhvydklx")))) + "12898jrq8bi90s5v3wirj7zprk08smwzwdx09y07x770frqd80vl")))) (build-system python-build-system) (arguments `(#:phases @@ -15931,8 +16864,9 @@ programmatically with command-line parsers like @code{getopt} and (home-page "https://github.com/pythonanywhere/helper_scripts/") (synopsis "PythonAnywhere helper tools for users") (description "PythonAnywhere provides a command-line interface and an -application programming interface that allows managing Web apps and scheduled -tasks. It includes single-command deployment for the Django Girls tutorial.") +application programming interface that allows managing files Web apps, scheduled +tasks and students. It includes single-command deployment for the Django Girls +tutorial.") (license license:expat))) (define-public python-pythondialog @@ -16250,18 +17184,19 @@ applications.") (define-public python-click-default-group (package (name "python-click-default-group") - (version "1.2.2") + (version "1.2.4") (source (origin (method url-fetch) - (uri (pypi-uri "click-default-group" version)) + (uri (pypi-uri "click_default_group" version)) (sha256 (base32 - "015r78jk8gznfw0dphpwaqcx5mhg5822b55w5xbb6i7sin70wmnr")))) - (build-system python-build-system) - (arguments - `(#:tests? #f)) ; no target + "07i5w47lbihcb3cvs08vynz725z9skvhhzrarnk6qi8dxjckqgzb")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;there are none (propagated-inputs (list python-click)) + (native-inputs + (list python-flit-core python-pytest)) (synopsis "Extends click.Group") (description "This package extends click.Group to invoke a command without explicit subcommand name.") @@ -16847,13 +17782,13 @@ document.") (define-public python-symengine (package (name "python-symengine") - (version "0.10.0") + (version "0.11.0") (source (origin (method url-fetch) (uri (pypi-uri "symengine" version)) (sha256 - (base32 "0i97lb6h8jk0k98805mkw6id5r537469zbh2d95320azq9nfj824")))) + (base32 "0n54rdpmz3bmxrbjqflmlrgc27rvik1jkv6x3cjvgsq4p0lhvlqd")))) (build-system python-build-system) (arguments (list @@ -16867,7 +17802,7 @@ document.") (invoke "nosetests" "-v" "symengine.tests")) (format #t "test suite not run~%"))))))) (native-inputs - (list cmake python-cython python-nose)) + (list cmake python-cython-3 python-nose)) (inputs (list symengine)) (home-page "https://github.com/symengine/symengine.py") @@ -17337,28 +18272,47 @@ designed to work across multiple versions of Python.") (define-public python-cookiecutter (package (name "python-cookiecutter") - (version "1.7.3") + (version "2.5.0") (source (origin (method url-fetch) (uri (pypi-uri "cookiecutter" version)) (sha256 - (base32 "0mx49whhwcxmvcak27zr7p7ndzkn3w7psfd7fzh3n91fi1r4v6kb")))) + (base32 "1v1iafk8j2f5cciw9mf4263v91070c6z049cpnw42gwffhs907p6")))) (build-system python-build-system) - (native-inputs - (list python-freezegun python-pytest python-pytest-catchlog - python-pytest-cov python-pytest-mock)) - (propagated-inputs - (list python-binaryornot - python-click - python-future - python-jinja2 - python-jinja2-time - python-poyo - python-requests - python-slugify - python-text-unidecode - python-whichcraft)) + (arguments + (list + #:phases #~(modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + ;; test_get_user_config.py requires a writable home + ;; directory. + (setenv "HOME" + (getcwd)) + ;; test_hooks.py dynamically creates shell scripts + ;; with a /bin/bash shebang. We have to patch these. + (substitute* "tests/test_hooks.py" + (("/bin/bash") + (string-append #$(this-package-native-input + "bash-minimal") "/bin/bash"))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest"))))))) + (native-inputs (list bash-minimal + git + python-freezegun + python-pytest + python-pytest-cov + python-pytest-mock)) + (propagated-inputs (list python-arrow + python-binaryornot + python-click + python-jinja2 + python-pyyaml + python-requests + python-rich + python-slugify)) (home-page "https://github.com/cookiecutter/cookiecutter") (synopsis "Command-line utility that creates projects from project templates") @@ -17741,13 +18695,13 @@ ISO 8859, etc.).") (define-public python-pyqtgraph (package (name "python-pyqtgraph") - (version "0.13.1") + (version "0.13.3") (source (origin (method url-fetch) (uri (pypi-uri "pyqtgraph" version)) (sha256 - (base32 "026wq2p7h1dmg2ldwhxiv28i5qld0llhnak06dxp4rdrkpsqg3v9")))) + (base32 "1kiazyc8mqyx0479qdcvdclzq0g1hpp93dyq8444w1f72628s42q")))) (build-system pyproject-build-system) (arguments ;; This test fails. It suggests to disable assert rewriting in Pytest, @@ -19094,6 +20048,25 @@ and pluralizes English words, and transforms strings from CamelCase to underscored string.") (license license:expat))) +(define-public python-krb5 + (package + (name "python-krb5") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "krb5" version)) + (sha256 + (base32 "1jivws8dsscsmyqngbc71r4qw8qmn98pqmhylz01r5dd1ljfw9bi")))) + (build-system pyproject-build-system) + (inputs (list mit-krb5)) + (native-inputs (list python-cython python-k5test python-pytest)) + (home-page "https://github.com/jborean93/pykrb5") + (synopsis "Kerberos API bindings for Python") + (description "This library provides Python functions that wraps the +Kerberos 5 C API.") + (license license:expat))) + (define-public python-pylev (package (name "python-pylev") @@ -19515,6 +20488,36 @@ feels like an AST.") (arguments '(#:tests? #f)) (native-inputs '())))) +(define-public python-typeapi + (package + (name "python-typeapi") + (version "2.1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "typeapi" version)) + (sha256 + (base32 "1652fc04gn6nkw8izim0g7v586f64fla6clinp5xq9rf739w3cs9")))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #false ;there are none + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'patch-build-system + (lambda _ + (substitute* "pyproject.toml" + (("^docs =.*") "docs = []\n"))))))) + (propagated-inputs (list python-typing-extensions)) + (native-inputs (list python-poetry-core)) + (home-page "https://pypi.org/project/typeapi/") + (synopsis "Type hints") + (description "The typeapi package provides an object-oriented interface +for introspecting PEP484 type hints at runtime, including forward references +that make use of the more recent PEP585 and PEP604 type hint features in +Python versions that don't natively support them.") + (license license:expat))) + (define-public python-typing-inspect (package (name "python-typing-inspect") @@ -19539,16 +20542,18 @@ inspection of types defined in the Python standard typing module.") (define-public python-lazy-loader (package (name "python-lazy-loader") - (version "0.2") + (version "0.3") (source (origin (method url-fetch) (uri (pypi-uri "lazy_loader" version)) (sha256 (base32 - "12piaj94m5wbx33cxb80xgnsvzgya6cp90zj12qsq064fm8pmp0f")))) + "0dwghffnsjjf4pi4gwbl43rx04jmap375hdamafs5cpm6j78js1v")))) (build-system pyproject-build-system) (native-inputs - (list python-pytest python-pytest-cov)) + (list python-pre-commit + python-pytest + python-pytest-cov)) (propagated-inputs (list python-flit-core)) (home-page "https://scientific-python.org/specs/spec-0001/") @@ -20095,6 +21100,31 @@ etc.") support.") (license license:bsd-3))) +(define-public python-pymemcache + (package + (name "python-pymemcache") + (version "4.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pymemcache" version)) + (sha256 + (base32 "157z9blr8pjg9x84jph5hm0z2l6yaq6n421jcf1hzqn1pg8rpgr7")))) + (build-system pyproject-build-system) + (arguments + ;; We don't have the zstd module. + (list + #:test-flags + '(list "--ignore=pymemcache/test/test_compression.py"))) + (native-inputs + (list python-faker python-pytest python-pytest-cov)) + (home-page "https://github.com/pinterest/pymemcache") + (synopsis "Comprehensive, fast, pure Python memcached client") + (description + "This package provides a comprehensive, fast, pure Python memcached +client.") + (license license:asl2.0))) + (define-public python-pymodbus (package (name "python-pymodbus") @@ -20349,6 +21379,26 @@ multitouch applications.") Design spec without sacrificing ease of use or application performance.") (license license:expat))) +(define-public python-asyncinject + (package + (name "python-asyncinject") + (version "0.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "asyncinject" version)) + (sha256 + (base32 "0x57idiy19lzyn32klgm06r223z8gr2aqqk91gysbshq7jg8g3pf")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-pytest-asyncio)) + (home-page "https://github.com/simonw/asyncinject") + (synopsis + "Run async workflows using pytest-fixtures-style dependency injection") + (description + "This package lets you run asynchronous workflows using +pytest-fixtures-style dependency injection.") + (license license:asl2.0))) + (define-public python-asynckivy (package (name "python-asynckivy") @@ -20654,6 +21704,26 @@ JSON) codec.") ;; number of files with other licenses. (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0)))) +(define-public python-namex + (package + (name "python-namex") + (version "0.0.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "namex" version)) + (sha256 + (base32 "16ynrq245c3nywv476izrc4bcacm9gxjzgr67ng91g929ny6bfl4")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;there are none + (home-page "https://github.com/fchollet/namex") + (synopsis + "Separate implementation and public API surface of Python packages") + (description + "This package provides a simple utility to separate the +implementation of your Python package and its public API surface.") + (license license:asl2.0))) + (define-public python-natsort (package (name "python-natsort") @@ -23704,58 +24774,6 @@ profiling, and getting datetime-aware @acronym{UTC, Coordinated Universal Time} values as well as an event scheduler.") (license license:expat))) -(define-public python-activepapers - (package - (name "python-activepapers") - (version "0.2.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "ActivePapers.Py" version)) - (sha256 - (base32 - "12wkhjh90ffipjzv10swndp2xv9hd7xrxvg6v0n4n3i411pj4xb8")))) - (build-system python-build-system) - (arguments - `(#:modules ((ice-9 ftw) - (srfi srfi-1) - (guix build utils) - (guix build python-build-system)) - - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'delete-python2-code - (lambda _ - (for-each delete-file - '("lib/activepapers/builtins2.py" - "lib/activepapers/standardlib2.py" - "lib/activepapers/utility2.py")))) - (replace 'check - (lambda _ - ;; Deactivate the test cases that download files - (setenv "NO_NETWORK_ACCESS" "1") - ;; For some strange reason, some tests fail if nosetests runs all - ;; test modules in a single execution. They pass if each test - ;; module is run individually. - (for-each (lambda (filename) - (invoke "nosetests" - (string-append "tests/" filename))) - (scandir "tests" - (lambda (filename) - (string-suffix? ".py" filename))))))))) - (native-inputs - (list python-tempdir python-nose)) - (propagated-inputs - (list python-h5py)) - (home-page "https://www.activepapers.org/") - (synopsis "Executable papers for scientific computing") - (description - "ActivePapers is a tool for working with executable papers, which -combine data, code, and documentation in single-file packages, -suitable for publication as supplementary material or on repositories -such as figshare or Zenodo.") - (license license:bsd-3))) - (define-public python-semver (package (name "python-semver") @@ -23958,15 +24976,19 @@ such as lines length, trailing spaces, indentation, etc.") (define-public python-yapf (package (name "python-yapf") - (version "0.29.0") + (version "0.32.0") (source (origin (method url-fetch) (uri (pypi-uri "yapf" version)) (sha256 (base32 - "1pj3xzblmbssshi889b6n9hwqbjpabw6j0fimlng2sshd3226bki")))) - (build-system python-build-system) + "06vxqski7qss2h2iy4fd04czym0cwjrzkaab9h03wzpg6xfhixd3")))) + (build-system pyproject-build-system) + (propagated-inputs + (list python-importlib-metadata python-platformdirs python-tomli)) + (native-inputs + (list python-pytest)) (home-page "https://github.com/google/yapf") (synopsis "Formatter for Python code") (description "YAPF is a formatter for Python code. It's based off of @@ -24373,6 +25395,24 @@ based on the CPython 2.7 and 3.7 parsers.") with PEP 484 argument (and return) type annotations.") (license license:expat))) +(define-public python-typeguard-4 + (package + (inherit python-typeguard) + (name "python-typeguard") + ;; This is the latest version we can use, because python-typeguard >= + ;; 4.0.1 requires python-typing-extensions >= 4.7.0. + (version "4.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "typeguard" version)) + (sha256 + (base32 "11yrc7pv2fajmicwiyc92sb5gphlw3zbxww8f2prrsh6rgdv6kqr")))) + (build-system pyproject-build-system) + (arguments + '()) + (propagated-inputs (list python-typing-extensions)))) + (define-public bpython (package (name "bpython") @@ -25069,6 +26109,22 @@ library: to minimize boilerplate code in traditional extension modules by inferring type information using compile-time introspection.") (license license:bsd-3))) +;; Needed for scipy +(define-public pybind11-2.10 + (package + (inherit pybind11) + (name "pybind11") + (version "2.10.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pybind/pybind11") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0rbcfvl7y472sykzdq3vrkw83kar0lpzhk3wq9yj9cdydl8cpfcz")) + (file-name (git-file-name name version)))))) + ;; This is needed for python-vaex-core. (define-public pybind11-2.3 (package @@ -26175,7 +27231,8 @@ parentdir_prefix = dask- (add-before 'check 'pre-check (lambda _ (chdir "/tmp")))))) (propagated-inputs - (list python-cloudpickle + (list python-click ;needed at runtime + python-cloudpickle python-fsspec python-importlib-metadata ;needed at runtime for dask/_compatibility.py python-numpy @@ -26185,8 +27242,7 @@ parentdir_prefix = dask- python-toolz python-pyyaml)) (native-inputs - (list python-click - python-importlib-metadata + (list python-importlib-metadata python-pytest python-pytest-runner python-pytest-rerunfailures python-versioneer)) (home-page "https://github.com/dask/dask/") @@ -28167,14 +29223,24 @@ lowercase.") (define-public python-pypng (package (name "python-pypng") - (version "0.0.20") + (version "0.20220715.0") (source (origin (method url-fetch) (uri (pypi-uri "pypng" version)) (sha256 - (base32 "02qpa22ls41vwsrzw9r9qhj1nhq05p03hb5473pay6y980s86chh")))) - (build-system python-build-system) + (base32 "1hg24zja235bkbny82hx7sy7qlzfbabxph2lvqaq61vgm4xl773k")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + '(modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + (setenv "PYTHONPATH" + (string-append (getcwd) "/code:" + (getenv "GUIX_PYTHONPATH")))))))) + (native-inputs (list python-pytest)) (home-page "https://github.com/drj11/pypng") (synopsis "Pure Python PNG image encoder/decoder") (description @@ -29087,8 +30153,12 @@ workspace...") (method url-fetch) (uri (pypi-uri "python-osc" version)) (sha256 - (base32 - "0cnh0z5lnng7fh48nmfaqqn8j25k13gkd4rhxd3m6sjqiix9s3vn")))) + (base32 "0cnh0z5lnng7fh48nmfaqqn8j25k13gkd4rhxd3m6sjqiix9s3vn")) + (snippet + #~(begin (use-modules (guix build utils)) + (substitute* "pythonosc/udp_client.py" + (("from collections import Iterable") + "from collections.abc import Iterable")))))) (build-system python-build-system) (home-page "https://github.com/attwad/python-osc") (synopsis "Open Sound Control server and client implementations") @@ -29956,6 +31026,45 @@ heterogeneous and multi-platform clusters (including clusters running other applications with variable CPU loads).") (license license:bsd-3))) +(define-public python-djitellopy + (package + (name "python-djitellopy") + (version "2.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "djitellopy" version)) + (sha256 + (base32 "1kc0syb4hpn7fay0rxpazmczag6jw3pncrrc6v762jj0afiwkrps")))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:phases + #~(modify-phases %standard-phases + ;; OpenCV does not ship metadata files for its Python library, which + ;; makes it invisible to the sanity_check script (see: + ;; https://github.com/opencv/opencv/issues/24810). + (delete 'sanity-check)))) + (propagated-inputs + (list opencv ;for opencv-python + python-av + python-numpy + python-pillow)) + (home-page "https://github.com/damiafuentes/DJITelloPy") + (synopsis + "DJI Tello drone video streaming, swarms and state packets library") + (description + "DJI Tello drone Python interface using the official Tello SDK and Tello +EDU SDK. This library has the following features: +@itemize +@item Implementation of all tello commands +@item Retrieve a video stream easily +@item Receive and parse state packets +@item Control a swarm of drones. +@end itemize") + (license license:expat))) + (define-public python-djvulibre (package (name "python-djvulibre") @@ -31270,6 +32379,30 @@ graph can be output for rendering by GraphViz or yEd.") function implementations based on the types of the arguments.") (license license:bsd-3))) +(define-public python-multimethod + (package + (name "python-multimethod") + (version "1.10") + (source + (origin + ;; No tests in the PyPI tarball. + (method git-fetch) + (uri (git-reference + (url "https://github.com/coady/multimethod") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "07xv92q7f4bkp6dzkqvcv0zxr11729qdak4s3ldmbhdwgsf44g5h")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest)) + (home-page "https://github.com/coady/multimethod") + (synopsis "Python support for multiple argument dispatching") + (description + "This package provides a decorator for adding multiple argument +dispatching to functions. The decorator creates a multimethod object as +needed and registers the function with its annotations.") + (license license:asl2.0))) + (define-public python-logical-unification (package (name "python-logical-unification") @@ -32187,18 +33320,20 @@ of several plugins.") (define-public python-doit (package (name "python-doit") - (version "0.34.0") + (version "0.36.0") (source (origin (method url-fetch) (uri (pypi-uri "doit" version)) (sha256 - (base32 "0bf0m9n0hyjvjpv051zd26725j8jr23gyvc37v3kkadwbh8dxwcf")))) - (build-system python-build-system) + (base32 "1g1lwaxb9q3a6c24sr3gw5bspsk5frbrk2frb7z25jqljp67rl3i")))) + (build-system pyproject-build-system) + ;; This is not a serious test failure. It's probably due to the load path + ;; at test time. + (arguments (list #:test-flags '(list "-k" "not test_execute"))) (propagated-inputs - (list python-cloudpickle python-pyinotify)) - (native-inputs - (list python-pytest)) + (list python-cloudpickle python-importlib-metadata)) + (native-inputs (list python-pytest)) (home-page "https://pydoit.org") (synopsis "Automation tool to execute any kind of task in a build-tools fashion") @@ -32207,7 +33342,7 @@ build-tools to execute any kind of task. A task describes some computation to be done (actions), and contains some extra meta-data. The actions can be external programs or Python functions. A -single task may define more than one action.doit uses the task’s meta-data +single task may define more than one action. doit uses the task’s meta-data to: @itemize @@ -32239,6 +33374,26 @@ to: "This package provides a port of the serialize and unserialize functions of PHP for Python") (license license:bsd-3))) +(define-public python-pydevtool + (package + (name "python-pydevtool") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pydevtool" version)) + (sha256 + (base32 "12pwhvvm4pgvfxj18ylb66drxm28b2cpb5rbxqrsrk1k7m7vmqr5")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;no tests + (propagated-inputs (list python-doit python-rich-click)) + (home-page "https://github.com/pydoit/pydevtool") + (synopsis "CLI dev tools powered by pydoit") + (description "This package provides command line tools, powered by pydoit. +It offers integration with @code{click} and @code{rich} for custom CLI and +these linters: @code{pycodestlye}, @code{pyflakes}") + (license license:expat))) + (define-public nikola (package (name "nikola") @@ -32495,13 +33650,13 @@ Psycopg 2 is both Unicode and Python 3 friendly.") (define-public python-pyfuse3 (package (name "python-pyfuse3") - (version "3.2.1") + (version "3.3.0") (source (origin (method url-fetch) (uri (pypi-uri "pyfuse3" version)) (sha256 - (base32 "0cvybynv9igssfa4l13q09gb6m7afmwk34wsbq8jk14sqpd4dl92")))) + (base32 "1gbkwmk7gpyy70cqj9226qvwrx13xlwxfz86l86n5ybr4i0zwc9b")))) (build-system python-build-system) (native-inputs (list pkg-config)) (inputs (list fuse)) @@ -32572,13 +33727,13 @@ collection.") (define-public python-types-pytz (package (name "python-types-pytz") - (version "2021.3.6") + (version "2023.3.1.1") (source (origin (method url-fetch) (uri (pypi-uri "types-pytz" version)) (sha256 - (base32 "14yr5hg2ww8s4a0mz2bkd549fv8qgm538fnzxvqv92ld1pcpym3l")))) + (base32 "16mbinqac2fjjh4gqw2940q8ysjqwj0hrvj4p9mqz76l5hcx08yc")))) (build-system python-build-system) (home-page "https://github.com/python/typeshed") (synopsis "Typing stubs for pytz") @@ -33885,6 +35040,46 @@ package. It can be used by type-checking tools like mypy, PyCharm, pytype etc. to check code that uses @code{orjson}.") (license license:asl2.0))) +(define-public python-rpds-py + (package + (name "python-rpds-py") + (version "0.10.6") + (source (origin + (method url-fetch) + (uri (pypi-uri "rpds_py" version)) + (sha256 + (base32 + "0l5slkvhq2vf64mapimmj6ginsv01mc4niyj90vvz3assq4agrac")))) + (build-system cargo-build-system) + (arguments + (list + #:imported-modules `(,@%cargo-build-system-modules + ,@%pyproject-build-system-modules) + #:modules '((guix build cargo-build-system) + ((guix build pyproject-build-system) #:prefix py:) + (guix build utils)) + #:phases + #~(modify-phases %standard-phases + (add-after 'prepare-python-module 'build-python-module + (assoc-ref py:%standard-phases 'build)) + (add-after 'build-python-module 'install-python-module + (assoc-ref py:%standard-phases 'install))) + #:cargo-inputs + `(("rust-archery" ,rust-archery-1) + ("rust-pyo3" ,rust-pyo3-0.19) + ("rust-rpds" ,rust-rpds-1)) + #:install-source? #false)) + (inputs + (list maturin)) + (native-inputs + (list python-wrapper)) + (home-page "https://github.com/crate-py/rpds") + (synopsis "Bindings to Rust rpds for persistent data structures") + (description "This package provides Python bindings to the Rust rpds crate +for persistent data structures. It was written initially to support replacing +@code{python-pyrsistent}.") + (license license:expat))) + (define-public python-nanoid ;; There are no tests on PyPi. (let ((commit "061f9a598f310b0e2e91b9ed6ce725a22770da64") @@ -34183,6 +35378,51 @@ software by taking care of all interactions with low-level network programming interfaces.") (license license:gpl2))) +(define-public python-islenska + (package + (name "python-islenska") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "islenska" version)) + (sha256 + (base32 "0fdp90mzy0sd4kyw8kd8kybd1ni765fvqn8hz2wx5sqbjjkm4d5k")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-cffi python-typing-extensions)) + (home-page "https://github.com/mideind/BinPackage") + (synopsis + "Vocabulary of the modern Icelandic language, in a Python package") + (description + "Islenska is a Python package that embeds the vocabulary of the Database +of Icelandic Morphology and offers various lookups and queries of the data. +The database contains over 6.5 million entries, over 3.1 million unique word +forms, and about 300,000 distinct lemmas.") + (license license:expat))) + +(define-public python-icegrams + (package + (name "python-icegrams") + (version "1.1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "icegrams" version)) + (sha256 + (base32 "1ajcjngvr4rlgb0q6p6vjz2sncwhvq3msjy6qaiz5g37vgvw2ij8")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-cffi)) + (home-page "https://github.com/mideind/Icegrams") + (synopsis "Trigram statistics for Icelandic") + (description + "Icegrams is a Python package that encapsulates a large trigram +library for Icelandic. You can use Icegrams to obtain probabilities (relative +frequencies) of over a million different unigrams (single words or tokens), or of +bigrams (pairs of two words or tokens), or of trigrams. Icegrams is useful for +instance in spelling correction, predictive typing, to help disabled people +write text fast, and for various text generation, statistics, and modeling tasks.") + (license license:expat))) + (define-public python-zeroc-ice-3.6 (package (inherit python-zeroc-ice) |