diff options
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 579 |
1 files changed, 456 insertions, 123 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index b23108fbf4..fc6e997b6c 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2015, 2016, 2017, 2019, 2022 Leo Famulari <[email protected]> ;;; Copyright © 2015, 2017 Ben Woodcroft <[email protected]> ;;; Copyright © 2015, 2016 Erik Edrosa <[email protected]> -;;; Copyright © 2015-2023 Efraim Flashner <[email protected]> +;;; Copyright © 2015-2024 Efraim Flashner <[email protected]> ;;; Copyright © 2015, 2017, 2020 Kyle Meyer <[email protected]> ;;; Copyright © 2015, 2016 Chris Marusich <[email protected]> ;;; Copyright © 2016 Danny Milosavljevic <[email protected]> @@ -29,7 +29,7 @@ ;;; Copyright © 2016-2023 Marius Bakke <[email protected]> ;;; Copyright © 2016, 2017, 2021, 2022 Stefan Reichör <[email protected]> ;;; Copyright © 2016, 2017, 2019 Alex Vong <[email protected]> -;;; Copyright © 2016–2018, 2021–2023 Arun Isaac <[email protected]> +;;; Copyright © 2016–2018, 2021–2024 Arun Isaac <[email protected]> ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Julien Lepiller <[email protected]> ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <[email protected]> ;;; Copyright © 2016, 2017 Thomas Danckaert <[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]> @@ -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]> @@ -146,6 +146,7 @@ ;;; Copyright © 2023 Janneke Nieuwenhuizen <[email protected]> ;;; Copyright © 2023 Attila Lendvai <[email protected]> ;;; Copyright © 2023, 2024 Troy Figiel <[email protected]> +;;; Copyright © 2024 Timothee Mathieu <[email protected]> ;;; ;;; This file is part of GNU Guix. ;;; @@ -180,6 +181,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages crates-io) + #:use-module (gnu packages crates-windows) #:use-module (gnu packages crypto) #:use-module (gnu packages databases) #:use-module (gnu packages dbm) @@ -576,7 +578,13 @@ workspaces. (method url-fetch) (uri (pypi-uri "databind.core" version)) (sha256 - (base32 "130hr19kbzizx9n2q7cwfzfk20ii3cqmqjrzb16psnafll303k2d")))) + (base32 "130hr19kbzizx9n2q7cwfzfk20ii3cqmqjrzb16psnafll303k2d")) + (snippet + #~(begin (use-modules (guix build utils)) + ;; The problem with python-typing-extensions >= 4.7 is only + ;; with python-3.7. + (substitute* "pyproject.toml" + ((",<4.7.*") "\"\n")))))) (build-system pyproject-build-system) (arguments (list @@ -621,7 +629,13 @@ Python dataclasses.") (method url-fetch) (uri (pypi-uri "databind.json" version)) (sha256 - (base32 "1lm864d7arfq0pw64hyc83bwn1z94wjg7a22q1xf0qkjynqs70gg")))) + (base32 "1lm864d7arfq0pw64hyc83bwn1z94wjg7a22q1xf0qkjynqs70gg")) + (snippet + #~(begin (use-modules (guix build utils)) + ;; The problem with python-typing-extensions >= 4.7 is only + ;; with python-3.7. + (substitute* "pyproject.toml" + ((",<4.7.*") "\"\n")))))) (build-system pyproject-build-system) (arguments (list @@ -1100,19 +1114,29 @@ during long operations.") (define-public python-lunr (package (name "python-lunr") - (version "0.6.0") + (version "0.7.0.post1") (source (origin (method url-fetch) (uri (pypi-uri "lunr" version)) (sha256 - (base32 "106akalywfmnypzkdrhgz4n4740a8xayspybsw59kq06vz8i2qrc")))) - (build-system python-build-system) + (base32 "1njb23lw619ppidqdzygdrscna4z15n9xjc4cc7yxiskkgsriz00")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + '(list "-k" "not TestLanguageSupport" + "--ignore-glob=tests/acceptance_tests/*"))) (native-inputs - (list python-mock python-pytest)) + (list python-coverage + python-hatch-fancy-pypi-readme + python-hatchling + python-pytest + python-pytest-timeout + python-tox)) (propagated-inputs - (list python-nltk-3.4)) + (list python-importlib-metadata python-typing-extensions)) (home-page "https://github.com/yeraydiazdiaz/lunr.py") (synopsis "Full-text search library") @@ -1888,6 +1912,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") @@ -2239,13 +2289,13 @@ with Numpy and SciPy.") (define-public python-shapely (package (name "python-shapely") - (version "2.0.1") + (version "2.0.2") (source (origin (method url-fetch) (uri (pypi-uri "shapely" version)) (sha256 - (base32 "14v88k0y7qhp8n5clip6w96pkdzrfqa2hsjkhpy9gkifwyiv39k6")))) + (base32 "1rs90q4ys5cav0hz1dq72wq2mk4aqlqqbfjrnb2zzfkiq42cq4qp")))) (build-system pyproject-build-system) (arguments (list @@ -2256,8 +2306,7 @@ with Numpy and SciPy.") ;; Cython extensions have to be built before running the tests. (invoke "python" "setup.py" "build_ext" "--inplace")))))) (native-inputs - (list python-cython python-matplotlib python-pytest - python-pytest-cov)) + (list python-cython python-matplotlib python-pytest)) (inputs (list geos)) (propagated-inputs @@ -2532,13 +2581,13 @@ NetCDF files can also be read and modified. Python-HDF4 is a fork of (define-public python-h5netcdf (package (name "python-h5netcdf") - (version "1.1.0") + (version "1.3.0") (source (origin (method url-fetch) (uri (pypi-uri "h5netcdf" version)) (sha256 - (base32 "0mmzfr6k55zqxxpb64gvdqisak8s1zb2r04yzkmp0wzd7dbknb4k")))) + (base32 "1kw3cf01kziwxmb84x0cy6vbpsmqjm0k1dm34i6b4d7bv8kw0wd1")))) (build-system pyproject-build-system) (native-inputs (list python-netcdf4 @@ -4571,6 +4620,53 @@ a certain expected condition.") Cython for speed.") (license license:expat))) +(define-public python-daft + (package + (name "python-daft") + (version "0.1.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "daft" version)) + (sha256 + (base32 + "1r8jsfavd624q2q61f863lk6has6mv5csswh39saafd5khwf0xry")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + '(list "-k" + (string-append + ;; The following tests compare matplotlib output with + ;; previously generated images. They fail due to minor + ;; differences in where matplotlib places labels. + "not test_bca[png]" + " and not test_classic[png]" + " and not test_deconvolution[png]" + " and not test_exoplanets[png]" + " and not test_fixed[png]" + " and not test_gaia[png]" + " and not test_galex[png]" + " and not test_huey_p_newton[png]" + " and not test_logo[png]" + " and not test_no_circles[png]" + " and not test_no_gray[png]" + " and not test_recursive[png]" + " and not test_thick_lines[png]" + " and not test_weaklensing[png]" + " and not test_wordy[png]")))) + (propagated-inputs (list python-matplotlib python-numpy)) + (native-inputs (list python-pytest)) + (home-page "https://docs.daft-pgm.org/") + (synopsis "PGM rendering library") + (description "Daft is a Python package that uses matplotlib to +render pixel-perfect probabilistic graphical models for publication in +a journal or on the internet. With a short Python script and an +intuitive model-building syntax you can design directed (Bayesian +Networks, directed acyclic graphs) and undirected (Markov random fields) +models and save them in any formats that matplotlib supports (including +PDF, PNG, EPS and SVG).") + (license license:expat))) + (define-public python-portalocker (package (name "python-portalocker") @@ -5072,14 +5168,14 @@ interfaces.") (define-public python-click (package (name "python-click") - (version "8.1.3") + (version "8.1.7") (source (origin (method url-fetch) (uri (pypi-uri "click" version)) (sha256 (base32 - "13kvp8visj5xh9d43brnda6q0kc1s40flxa5cw0p0a9hzf5dr0kn")))) + "1pm6khdv88h764scik67jki98xbyj367h591j8hpwy4y8nnm766a")))) (build-system python-build-system) (arguments `(#:phases @@ -5742,7 +5838,7 @@ e.g. filters, callbacks and errbacks can all be promises.") (build-system python-build-system) (arguments (list #:tests? #f)) ; tests not distributed on pypi - (home-page "https://github.com/benfogle/virtualenv") + (home-page "https://github.com/benfogle/crossenv") (synopsis "Cross-compiling virtualenv for Python") (description "This package is a tool for cross-compiling extension modules. It creates a special virtual environment such that @command{pip} or @@ -6156,6 +6252,30 @@ important tasks for becoming a daemon process: ;; Only setup.py is gpl3+, everything else is apache 2.0 licensed. (license (list license:asl2.0 license:gpl3+)))) +(define-public python-annotated-types + (package + (name "python-annotated-types") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "annotated_types" version)) + (sha256 + (base32 "0paaz0i4xqk335ji5w887i2bhgm2krnzr6by4sfgsgz50zl3jcsn")))) + (build-system pyproject-build-system) + (native-inputs + (list python-hatchling + python-pytest)) + (propagated-inputs (list python-typing-extensions)) + (home-page "https://github.com/annotated-types/annotated-types") + (synopsis "Reusable constraint types to use with typing.Annotated") + (description "This package provides metadata objects which can be used to +represent common constraints such as upper and lower bounds on scalar values and +collection sizes, a Predicate marker for runtime checks, and descriptions of how +we intend these metadata to be interpreted. In some cases, we also note +alternative representations which do not require this package.") + (license license:expat))) + (define-public python-anytree (package (name "python-anytree") @@ -7314,6 +7434,101 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.") errors when data is invalid.") (license license:expat))) +(define-public python-pydantic-2 + (package + (inherit python-pydantic) + (name "python-pydantic") + (version "2.5.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pydantic" version)) + (sha256 + (base32 "0yiz75zp93x6x2czm772cz5pzn00i703irncjwb99c1m4p35gvxk")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags #~(list "--ignore=tests/test_docs.py" ; no pytest_examples + ;; need python-email-validator >= 2.0.0 + "-k not test_fastapi_startup_perf") + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + ;; Remove the addopts from pyproject.toml, it breaks the 'check phase. + (substitute* "pyproject.toml" + (("'--benchmark") "#'--benchmark"))))))) + (native-inputs + (list python-hatchling + python-hatch-fancy-pypi-readme + python-cloudpickle + python-dirty-equals + python-faker + python-pytest + python-pytest-benchmark + python-pytest-mock)) + (propagated-inputs + (list python-annotated-types + python-pydantic-core + python-typing-extensions)))) + +(define-public python-pydantic-core + (package + (name "python-pydantic-core") + (version "2.14.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pydantic_core" version)) + (sha256 + (base32 "0j79pd6ixapsiwsigsxzmvbrpmdr7f7c4l9sl7xl6a1pjp9w3l0z")))) + (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-ahash" ,rust-ahash-0.8) + ("rust-base64" ,rust-base64-0.21) + ("rust-enum-dispatch" ,rust-enum-dispatch-0.3) + ("rust-idna" ,rust-idna-0.4) + ("rust-jiter" ,rust-jiter-0.0.4) + ("rust-num-bigint" ,rust-num-bigint-0.4) + ("rust-python3-dll-a" ,rust-python3-dll-a-0.2) + ("rust-pyo3" ,rust-pyo3-0.20) + ("rust-pyo3-build-config" ,rust-pyo3-build-config-0.20) + ("rust-regex" ,rust-regex-1) + ("rust-strum" ,rust-strum-0.25) + ("rust-strum-macros" ,rust-strum-macros-0.25) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-smallvec" ,rust-smallvec-1) + ("rust-speedate" ,rust-speedate-0.13) + ("rust-url" ,rust-url-2) + ("rust-uuid" ,rust-uuid-1) + ("rust-version-check" ,rust-version-check-0.9)) + #:cargo-development-inputs + `(("rust-pyo3" ,rust-pyo3-0.20)) + #:install-source? #false)) + (native-inputs + (list maturin python-wrapper)) + (propagated-inputs + (list python-typing-extensions)) + (home-page "https://github.com/pydantic/pydantic-core") + (synopsis "Core validation logic for pydantic") + (description "This package provides the core functionality for pydantic +validation and serialization.") + (license license:expat))) + (define-public python-pydantic-cli (package (name "python-pydantic-cli") @@ -8810,6 +9025,29 @@ 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") @@ -14992,6 +15230,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") @@ -17761,17 +18020,17 @@ that deprecated code is eventually removed.") (define-public python-jmespath (package (name "python-jmespath") - (version "1.0.0") + (version "1.0.1") (source (origin (method url-fetch) (uri (pypi-uri "jmespath" version)) (sha256 (base32 - "0pmzfi230zfgiq2rz896kbb9f7mp0lnrjdl6x1npvxfixn0f5454")))) + "1gpdc1f0q5c9scmbw1l9g40jjfk3pxwg91ayvn7xbvvddlh1n9lh")))) (build-system python-build-system) (native-inputs - (list python-nose)) + (list python-pytest)) (synopsis "JSON Matching Expressions") (description "JMESPath (pronounced “james path”) is a Python library that allows one to declaratively specify how to extract elements from a JSON @@ -21594,20 +21853,6 @@ JSON) codec.") reasoning, wrappers for natural language processing libraries.") (license license:asl2.0))) -;; Versions >=3.5 breaks backward-compatibility, -;; so we keep version 3.4.x around for a while. -(define-public python-nltk-3.4 - (package - (inherit python-nltk) - (version "3.4.5") - (source - (origin - (method url-fetch) - (uri (pypi-uri "nltk" version ".zip")) - (sha256 - (base32 "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y")))) - (propagated-inputs (list python-six)))) - (define-public python-pymongo (package (name "python-pymongo") @@ -26296,7 +26541,7 @@ Public Suffix List's private domains as well.") (define-public python-tldr (package (name "python-tldr") - (version "3.1.0") + (version "3.2.0") (source (origin ;; There's no test in PyPI. @@ -26306,7 +26551,7 @@ Public Suffix List's private domains as well.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1hxmprqg8c4cvs19n7f80f3y7jj74i8sc2dmq2gdjmsdrb54bbzc")))) + (base32 "0hkjsnz03p9pdfgk85wampha4pyr82bwmnj8hj6kigc784ddy2ag")))) (build-system python-build-system) (arguments (list #:phases @@ -27729,13 +27974,7 @@ a mypy plugin that smooths over some limitations in the basic type hints. (file-name (git-file-name name version)) (sha256 (base32 "1yk2ak991kbl30xg8ldpggack1lwkizd7s5cpr28ir34z8iyjnpi")))) - (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? (invoke "pytest" "-vv"))))))) + (build-system pyproject-build-system) (native-inputs (list python-pytest python-pytest-trio python-trustme)) (propagated-inputs (list python-async-generator python-trio python-wsproto)) (home-page "https://github.com/HyperionGray/trio-websocket") @@ -27753,17 +27992,17 @@ the Trio framework}.") (define-public python-humanize (package (name "python-humanize") - (version "0.5.1") + (version "4.0.0") (source (origin (method url-fetch) (uri (pypi-uri "humanize" version)) (sha256 (base32 - "06dvhm3k8lf2rayn1gxbd46y0fy1db26m3h9vrq7rb1ib08mfgx4")))) - (arguments - '(#:tests? #f)) ; tests not in pypi archive - (build-system python-build-system) + "006vpl19bffy9fn0sssxbfakcvgrx7fhvy6l515fzln7vwpqf7zf")))) + (build-system pyproject-build-system) + (native-inputs + (list python-freezegun python-pytest)) (home-page "https://github.com/jmoiron/humanize") (synopsis "Print numerical information in a human-readable form") (description "This package provides a Python module that displays numbers @@ -27856,17 +28095,27 @@ format.") (define-public python-crontab (package (name "python-crontab") - (version "2.5.1") + (version "3.0.0") (source (origin (method url-fetch) (uri (pypi-uri name version)) (sha256 - (base32 "0cccrqc10r8781ba81x8r2frs3pl2m4hkm599k5358ak0xr7xgjb")))) + (base32 "0yd3vdhl7z8lxa30czsry65srha51ppdcwnhjgxx9pwx0djp9yvr")))) (build-system python-build-system) (arguments - ;; Comptability tests fail so they are disabled. - `(#:tests? #f)) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'disable-failing-tests + (lambda _ + (substitute* '("tests/test_compatibility.py" + "tests/test_frequency.py") + (("test_07_non_posix_shell") + "__off_test_07_non_posix_shell") + ;; AssertionError: 48 != 24 + (("test_20_frequency_at_year") + "__off_test_20_frequency_at_year"))))))) (inputs (list python-dateutil)) (home-page "https://gitlab.com/doctormo/python-crontab/") @@ -27875,6 +28124,42 @@ format.") access the system cron automatically and simply using a direct API.") (license license:lgpl3+))) +(define-public python-apscheduler + (package + (name "python-apscheduler") + (version "3.10.4") + (source (origin + (method url-fetch) + (uri (pypi-uri "APScheduler" version)) + (sha256 + (base32 + "0jpg9jyx95jafkq0hz6sx7r4l2z5gc599ivb9278kgnr4wdhgpz6")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-pytz + python-six + python-tzlocal)) + (native-inputs (list python-mock + python-twisted + python-gevent + python-setuptools-scm + python-sqlalchemy + python-pyside-6 + python-pytest + python-pytest-asyncio + python-pytest-cov + python-pytest-tornado5)) + (home-page "https://github.com/agronholm/apscheduler") + (synopsis "Task scheduling library for Python") + (description "Advanced Python Scheduler (APScheduler) is a Python library +that lets you schedule your Python code to be executed later, either just once +or periodically. + +You can add new jobs or remove old ones on the fly as you please. If you store +your jobs in a database, they will also survive scheduler restarts and maintain +their state. When the scheduler is restarted, it will then run all the jobs it +should have run while it was offline.") + (license license:expat))) + (define-public python-pylzma (package (name "python-pylzma") @@ -27931,22 +28216,17 @@ enumeration library in Python.") (file-name (git-file-name name version)) (sha256 (base32 "1p1a0ywlg5sq0ilcphmz9h4kayscz0q1lyfk57j7mwxyx4gl9cpi")))) - (build-system python-build-system) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) - (when tests? - (add-installed-pythonpath inputs outputs) - (invoke "python" "-m" "pytest" "-k" - (string-append - ;; Networking isn't available for these tests. - "not test_integration_with_listener_ipv6" - " and not test_launch_and_close_v4_v6" - " and not test_launch_and_close_context_manager" - " and not test_launch_and_close" - " and not test_close_multiple_times")))))))) + (list + #:test-flags + #~(list "-k" (string-append + ;; Networking isn't available for these tests. + "not test_integration_with_listener_ipv6" + " and not test_launch_and_close_v4_v6" + " and not test_launch_and_close_context_manager" + " and not test_launch_and_close" + " and not test_close_multiple_times")))) (native-inputs (list python-pytest)) (propagated-inputs @@ -28118,14 +28398,10 @@ translating between quadkey and tile coordinates.") (uri (pypi-uri "xyzservices" version)) (sha256 (base32 "1paxv4i0dws85md7csv7pf80jl3xh792mx8rxnsrk61ks3ivbsyg")))) - (build-system python-build-system) + (build-system pyproject-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "pytest" "-vv"))))))) + (list + #:test-flags #~(list "-m" "not request"))) (native-inputs (list python-pytest python-mercantile python-requests)) (home-page "https://github.com/geopandas/xyzservices") @@ -29067,17 +29343,9 @@ files. These files are used to translate strings in android apps.") (uri (pypi-uri "watchdog" version)) (sha256 (base32 "1rx2nyl0cyj0v4ja795cl3gi26577c5wg48syr3byz3ndkgpavm3")))) - (build-system python-build-system) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) - (when tests? - (add-installed-pythonpath inputs outputs) - (invoke "python" "-m" "pytest" "-k" - ;; This test failed. - "not test_kill_auto_restart"))))))) + (list #:test-flags #~(list "-k" "not test_kill_auto_restart"))) (propagated-inputs (list python-pathtools python-pyyaml)) (native-inputs @@ -29533,6 +29801,37 @@ usable as a configuration language. This Python package implements parsing and dumping of JSON5 data structures.") (license license:asl2.0))) +(define-public python-farama-notifications + (package + (name "python-farama-notifications") + (version "0.0.4") + (source + ;; The version on pypi does not include tests. + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Farama-Foundation/Farama-Notifications") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1k1x48xpvhankw7vbjp20ljwran247aphc2qncqrxivrkgzwjjji")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + '(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python3" "tests/ci-test.py"))))))) + (native-inputs (list python-pytest)) + (home-page "https://github.com/Farama-Foundation/Farama-Notifications") + (synopsis "Notifications for all Farama Foundation maintained libraries") + (description + "This package allows for providing notifications for all Farama +Foundation maintained libraries.") + (license license:expat))) + (define-public python-freetype-py (package (name "python-freetype-py") @@ -30617,7 +30916,7 @@ and have a maximum lifetime built-in.") (define-public python-devtools (package (name "python-devtools") - (version "0.6") + (version "0.12.2") (source (origin (method git-fetch) @@ -30626,18 +30925,28 @@ and have a maximum lifetime built-in.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "15zczdcm90wl54c68f1qjb05nkd5bjsc9xjl3lk4frs7k7wkmrvp")))) - (build-system python-build-system) + (base32 "0snmx7f0s44rzzx8advzmgj5av9dlpz1kx05f7ysya8xrhv5nwfl")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + ;; Disable some failing tests. + #~(list "-k" (string-append "not test_print_subprocess" + " and not test_simple") + "--ignore=tests/test_insert_assert.py") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "pyproject.toml" + ;; Pygments 2.12.0 is available. + (("2.15.0") "2.12.0") + ;; executing 0.8.2 is available. + (("1.1.1") "0.8.2"))))))) (native-inputs - (list python-pytest python-pytest-mock)) + (list python-hatchling python-pytest python-pytest-mock)) (propagated-inputs - (list python-pygments)) - (arguments - `(#:phases (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "pytest") - #t))))) + (list python-asttokens python-executing python-pygments)) (home-page "https://github.com/samuelcolvin/python-devtools") (synopsis "Debug command and development tools") (description @@ -30967,7 +31276,7 @@ module patches @code{asyncio} to allow nested use of @code{asyncio.run} and (define-public python-simpervisor (package (name "python-simpervisor") - (version "0.4") + (version "1.0.0") (source (origin ;; Tests not included in release. @@ -30977,20 +31286,18 @@ module patches @code{asyncio} to allow nested use of @code{asyncio.run} and (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1brsisx7saf4ic0dih1n5y7rbdbwn1ywv9pl32bch3061r46prvv")))) - (build-system python-build-system) + (base32 "0drvqxbr6fpydb4d7z5dhn97d578gf39sd8cawyl6ksf1f4y8yzg")))) + (build-system pyproject-build-system) (arguments - `(#:tests? #f ; Test suite can't find aiohttp. - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) - (when tests? - (add-installed-pythonpath inputs outputs) - (invoke "pytest" "--maxfail" "3" "--verbose")) - #t))))) + (list + #:test-flags '(list "-n" (number->string (parallel-job-count))))) (native-inputs - (list python-aiohttp python-pytest python-pytest-asyncio)) + (list python-aiohttp + python-hatchling + python-psutil + python-pytest + python-pytest-asyncio + python-pytest-xdist)) (home-page "https://github.com/yuvipanda/simpervisor") (synopsis "Simple async process supervisor") (description @@ -31751,7 +32058,18 @@ and frame grabber interface.") ;; nondeterministically (see: ;; https://github.com/scikit-build/scikit-build/issues/711). "and not test_generator_cleanup " - "and not test_generator_selection ")))))))) + "and not test_generator_selection " + ;; … and there's more of them + "and not test_cxx_compiler " + "and not test_fortran_compiler "))))) + (add-after 'install 'install-cmake + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") + "/lib/cmake/modules"))) + (mkdir-p lib) + (with-directory-excursion "skbuild/resources/cmake" + (for-each (lambda (file) (install-file file lib)) + (find-files "." "\\.cmake"))))))))) (native-inputs (list cmake-minimal gfortran @@ -33115,30 +33433,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 _ @@ -33146,14 +33474,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-0.16 python-toml python-tomli)) (native-inputs (list python-django python-flask python-pytest python-pytest-cov python-pytest-mock)) |