diff options
author | Liliana Marie Prikler <[email protected]> | 2024-02-03 14:39:49 +0100 |
---|---|---|
committer | Liliana Marie Prikler <[email protected]> | 2024-02-03 14:39:49 +0100 |
commit | e6c847defb6cb25c65172dec46a322e5d3d45088 (patch) | |
tree | 3d249dce1a1f58fcb3c83a41eaf9e1525d7b112e /gnu/packages/python-xyz.scm | |
parent | 3aef72ec5bf1027bc557daab7010848d80711a28 (diff) | |
parent | 179bb57d2532ee6b81791e078b0f782cbf88cb84 (diff) |
Merge branch 'master' into gnome-team
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 1067 |
1 files changed, 904 insertions, 163 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 47f4ce1e9c..cf1132d571 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2014, 2015 Federico Beffa <[email protected]> ;;; Copyright © 2015 Omar Radwan <[email protected]> ;;; Copyright © 2015 Pierre-Antoine Rault <[email protected]> -;;; Copyright © 2015-2023 Ricardo Wurmus <[email protected]> +;;; Copyright © 2015-2024 Ricardo Wurmus <[email protected]> ;;; Copyright © 2015, 2016, 2020 Christine Lemmer-Webber <[email protected]> ;;; Copyright © 2015 Eric Dvorsak <[email protected]> ;;; Copyright © 2015, 2016 David Thompson <[email protected]> @@ -63,7 +63,7 @@ ;;; Copyright © 2019, 2020 Alex Griffin <[email protected]> ;;; Copyright © 2019, 2020, 2021, 2022, 2023 Pierre Langlois <[email protected]> ;;; Copyright © 2019 Jacob MacDonald <[email protected]> -;;; Copyright © 2019-2021, 2023 Giacomo Leidi <[email protected]> +;;; Copyright © 2019-2021, 2023, 2024 Giacomo Leidi <[email protected]> ;;; Copyright © 2019 Wiktor Żelazny <[email protected]> ;;; Copyright © 2019, 2020, 2021, 2022 Tanguy Le Carrour <[email protected]> ;;; Copyright © 2019, 2021-2023 Mădălin Ionel Patrașcu <[email protected]> @@ -80,7 +80,7 @@ ;;; Copyright © 2020 Josh Holland <[email protected]> ;;; Copyright © 2020 Yuval Kogman <[email protected]> ;;; Copyright © 2020, 2022 Michael Rohleder <[email protected]> -;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <[email protected]> +;;; Copyright © 2020, 2021, 2022, 2023, 2024 Vinicius Monego <[email protected]> ;;; Copyright © 2020 Guy Fleury Iteriteka <[email protected]> ;;; Copyright © 2020 Hendursaga <[email protected]> ;;; Copyright © 2020 Malte Frank Gerdes <[email protected]> @@ -94,7 +94,7 @@ ;;; Copyright © 2020, 2021 Zheng Junjie <[email protected]> ;;; Copyright © 2020 EuAndreh <[email protected]> ;;; Copyright © 2021, 2022 Morgan Smith <[email protected]> -;;; Copyright © 2021-2023 Sharlatan Hellseher <[email protected]> +;;; Copyright © 2021-2024 Sharlatan Hellseher <[email protected]> ;;; Copyright © 2021 Ellis Kenyő <[email protected]> ;;; Copyright © 2021 LibreMiami <[email protected]> ;;; Copyright © 2021 Xinglu Chen <[email protected]> @@ -119,7 +119,7 @@ ;;; Copyright © 2022 Evgeny Pisemsky <[email protected]> ;;; Copyright © 2022 drozdov <[email protected]> ;;; Copyright © 2022 Peter Polidoro <[email protected]> -;;; Copyright © 2022 Wamm K. D. <[email protected]> +;;; Copyright © 2022, 2023 Wamm K. D. <[email protected]> ;;; Copyright © 2022 Jai Vetrivelan <[email protected]> ;;; Copyright © 2022 Artyom V. Poptsov <[email protected]> ;;; Copyright © 2022 Paul A. Patience <[email protected]> @@ -258,6 +258,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) @@ -401,6 +402,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") @@ -539,6 +569,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") @@ -591,6 +762,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 @@ -692,6 +864,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") @@ -866,6 +1039,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") @@ -1127,10 +1340,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")) @@ -1226,30 +1455,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 @@ -1432,6 +1661,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") @@ -1580,6 +1890,32 @@ progress bar and a percentage indicator object that let you track the progress of a loop structure or other iterative computation.") (license license:bsd-3))) +(define-public python-gh-md-to-html + (package + (name "python-gh-md-to-html") + (version "1.21.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "gh_md_to_html" version)) + (sha256 + (base32 "1cnaqnckpcrpc4b8ba18s5ds05w1yfiszcp7ql7pmx0jnrj25qax")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #false)) ;there are none + (propagated-inputs + (list python-beautifulsoup4 + python-emoji + python-pillow + python-requests + python-shellescape + python-webcolors)) + (home-page "https://github.com/phseiff/github-flavored-markdown-to-html/") + (synopsis "Github-flavored Markdown") + (description + "This package provides a feature-rich Github-flavored Markdown to HTML +Python library and command line interface.") + (license license:expat))) + (define-public python-glymur (package (name "python-glymur") @@ -2387,6 +2723,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))) @@ -2402,9 +2739,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 @@ -3764,6 +4103,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") @@ -6991,6 +7370,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") @@ -7274,6 +7698,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) @@ -7646,7 +8084,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, @@ -8095,16 +8533,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 @@ -8168,49 +8615,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 @@ -8221,6 +8649,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 @@ -8374,7 +8803,9 @@ three-way Venn diagrams in @code{matplotlib}.") (list #:test-flags ;; This test fails with ValueError: not enough values to unpack. - #~(list "--deselect" "tests/test_spy.py::test_cli"))) + #~(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 @@ -8407,6 +8838,48 @@ clean plots with a minimalistic style.") complex-valued functions.") (license license:gpl3+))) +(define-public python-cppheaderparser + (package + (name "python-cppheaderparser") + (version "2.7.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "CppHeaderParser" version)) + (sha256 + (base32 "0hncwd9y5ayk8wa6bqhp551mcamcvh84h89ba3labc4mdm0k0arq")))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #f)) ; no tests + (propagated-inputs (list python-ply)) + (home-page "http://senexcanis.com/open-source/cppheaderparser/") + (synopsis + "Parse C++ header files and generate a data structure representing the class") + (description + "CppHeaderParser is a pure python module that will parse C++ header files +and generate a data structure representing the class.") + (license license:bsd-3))) + +(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") @@ -8877,6 +9350,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") @@ -9207,19 +9713,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 @@ -9437,14 +9945,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 @@ -9471,9 +9979,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 @@ -9735,6 +10244,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") @@ -12242,17 +12788,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 @@ -12984,6 +13545,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)) @@ -13697,6 +14274,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") @@ -14466,6 +15061,27 @@ tasks, sockets, files, locks, and queues.") designed to efficiently cope with extremely large amounts of data.") (license license:bsd-3))) +(define-public python-tasklogger + (package + (name "python-tasklogger") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "tasklogger" version)) + (sha256 + (base32 "1901mibcp6aiyjy8afnybrxnb0dkbdxlbvjqbr3gginlw7dr18xh")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-deprecated)) + (native-inputs (list python-coverage python-coveralls python-nose2 + python-numpy)) + (home-page "https://github.com/scottgigante/tasklogger") + (synopsis "Extension to the core Python logging library") + (description "This package provides an extension to the core Python +logging library for logging the beginning and completion of tasks and +subtasks.") + (license license:gpl2))) + (define-public python-sniffio (package (name "python-sniffio") @@ -16658,18 +17274,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.") @@ -17255,13 +17872,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 @@ -17275,7 +17892,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") @@ -19521,6 +20138,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") @@ -19942,6 +20578,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") @@ -19966,16 +20632,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/") @@ -20801,6 +21469,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") @@ -21106,6 +21794,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") @@ -24156,58 +24864,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") @@ -24410,15 +25066,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 @@ -24825,6 +25485,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") @@ -25521,6 +26199,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 @@ -26627,7 +27321,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 @@ -26637,8 +27332,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/") @@ -28665,14 +29359,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 @@ -32547,30 +33251,40 @@ Python @code{set} interface.") (define-public dynaconf (package (name "dynaconf") - (version "3.1.7") + (version "3.2.4") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/rochacbruno/dynaconf") + (url "https://github.com/dynaconf/dynaconf") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "0pjyjsdzairpn5vq8nzddhxwxmr18grn272nj31wcy2ipwdl3c3h")) + "0fj2ffvzfvjf4d7f672h5x5fzq26f8hax9j3dfsix158fwm0212w")) (patches (search-patches "dynaconf-unvendor-deps.patch")) (modules '((guix build utils))) (snippet '(begin ;; Remove vendored dependencies (let ((unvendor '("click" "dotenv" "ruamel" "toml"))) (with-directory-excursion "dynaconf/vendor" - (for-each delete-file-recursively unvendor)) - (with-directory-excursion "dynaconf/vendor_src" - (for-each delete-file-recursively unvendor))))))) - (build-system python-build-system) + (for-each delete-file-recursively unvendor))) + ;; Lower coverage quality gate for unit tests + (substitute* ".coveragerc" + (("fail_under = 95") "fail_under = 50")))))) + (build-system pyproject-build-system) (arguments - `(#:phases + `(#:test-flags + '("-k" + ,(let ((click-tests '("test_negative_get" + "test_inspect_invalid_format"))) + ;; Disable integration tests + (string-append "not integration and not " + ;; These tests fail because we use Click 8.* instead of + ;; Click 7 + (string-join click-tests " and not ")))) + #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-for-click-8 (lambda _ @@ -32578,14 +33292,19 @@ Python @code{set} interface.") (("click.get_os_args\\()") ;deprecated from Click 8.1+ "sys.argv[1:]")))) (replace 'check - (lambda* (#:key tests? outputs #:allow-other-keys) + (lambda* (#:key tests? test-flags #:allow-other-keys) (when tests? ;; These tests depend on hvac and a live Vault process. (delete-file "tests/test_vault.py") - (invoke "make" "test_only"))))))) + (apply invoke + `("py.test" ,@test-flags "-v" + "--cov-config" ".coveragerc" + "--cov=dynaconf" + "-l" "--tb=short" + "--maxfail=1" "tests/")))))))) (propagated-inputs (list python-click python-configobj python-dotenv-0.13.0 - python-ruamel.yaml python-toml)) + python-ruamel.yaml python-toml python-tomli)) (native-inputs (list python-django python-flask python-pytest python-pytest-cov python-pytest-mock)) @@ -32752,18 +33471,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") @@ -32772,7 +33493,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 @@ -32804,6 +33525,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") |