diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 53483d22165..186a1ea5310 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1115,8 +1115,21 @@ on memory usage on GNU/Linux systems.") (base32 "058y4a4mvx9m179dyr4wi8mlm6i4ybywshadaj4cvfn9fv0r0nkx")) (file-name (git-file-name name version)))) (build-system gnu-build-system) + (arguments + (list + #:configure-flags + #~(list "--enable-sensors") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-dlopen + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "linux/LibSensors.c" + (("dlopen\\(\"libsensors\\.so") + (string-append "dlopen(\"" + (search-input-file + inputs "/lib/libsensors.so"))))))))) (inputs - (list ncurses)) + (list ncurses (list lm-sensors "lib"))) (native-inputs (list autoconf automake python-minimal-wrapper)) ; for scripts/MakeHeader.py (home-page "https://htop.dev") diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 5d218e6a690..75fc119f681 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -12165,26 +12165,19 @@ interpretation.") (define-public python-taggd (package (name "python-taggd") - (version "0.3.6") + (version "0.4.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/SpatialTranscriptomicsResearch/taggd") + (url "https://github.com/jfnavarro/taggd") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "0j19ah81z7aqrdljah9hyarp91gvgbk63pz6fz3pdpksy1yqyi6k")) - (modules '((guix build utils))) - (snippet - '(for-each delete-file - (find-files "taggd" "\\.c$"))))) + "17hi1vs1qwhxx8jnradnl9k471li6fjb6w5sljkpzjxy7rkxwb85")))) (build-system pyproject-build-system) (arguments (list - #:test-flags - ;; AssertionError: 0 is not true : Running Normal BAM test failed. - #~(list "-k" "not test_normal_bam_run") #:phases #~(modify-phases %standard-phases (add-before 'check 'remove-local-taggd @@ -12193,10 +12186,16 @@ interpretation.") ;; taggd when running tests. (delete-file-recursively "taggd")))))) (propagated-inputs - (list python-numpy python-pysam)) + (list python-numpy + python-pysam + python-tqdm + python-aiofiles + python-dnaio + python-types-aiofiles + python-types-tqdm)) (native-inputs (list python-cython python-pytest python-setuptools)) - (home-page "https://github.com/SpatialTranscriptomicsResearch/taggd") + (home-page "https://github.com/jfnavarro/taggd") (synopsis "Genetic barcode demultiplexing") (description "This package provides TagGD barcode demultiplexing utilities for Spatial Transcriptomics data.") @@ -12205,40 +12204,45 @@ for Spatial Transcriptomics data.") (define-public stpipeline (package (name "stpipeline") - (version "1.8.1") + (version "2.0.0") (source (origin - (method url-fetch) - (uri (pypi-uri "stpipeline" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/jfnavarro/st_pipeline") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "0har2g42fvaqpiz66lincy86aj1hvwzds26kxhxfamvyvv4721wk")))) + (base32 "1qah9sa7wy9ywf0si2ngqg0qyr9jjp5gxmjx3y65i78bxyq8pfyx")))) (build-system pyproject-build-system) (arguments (list #:phases '(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "requirements.txt" - (("argparse.*") - ""))))))) + ;; requirements.txt and pyproject.toml have all versions + ;; of the dependencies hardcoded. All tests pass, so it should + ;; be good enough. + ;; However, the sanity-check of any Python package that has + ;; stpipelines a dependency, would fail too. + (delete 'sanity-check)))) (propagated-inputs (list htseq - python-cython - python-invoke + python-distance + python-dnaio python-numpy python-pandas - python-pympler python-pysam python-regex python-scikit-learn python-scipy python-seaborn - python-setuptools - python-sqlitedict python-taggd + python-types-regex samtools star)) - (native-inputs (list python-setuptools python-wheel)) - (home-page "https://github.com/SpatialTranscriptomicsResearch/st_pipeline") + (native-inputs (list + python-cython + python-pytest + python-poetry-core)) + (home-page "https://github.com/jfnavarro/st_pipeline") (synopsis "Pipeline for spatial mapping of unique transcripts") (description "This package provides an automated pipeline for spatial mapping of diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index dbce7075e30..840cce37122 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -1041,6 +1041,7 @@ CONFIG_TOOLS_KWBIMAGE=n") (lambda* (#:key tests? #:allow-other-keys) (when tests? (invoke "./u_boot_pylib"))))))) + (native-inputs (list python-setuptools)) (synopsis "U-Boot Python library") (description "This package provides common Python code used by some of the commands part of the U-Boot project, such as Patman."))) @@ -1076,6 +1077,7 @@ commands part of the U-Boot project, such as Patman."))) ,(dirname (search-input-file inputs "libexec/git-core/git-send-email")))))))))) + (native-inputs (list python-setuptools)) (inputs (list git `(,git "send-email") diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 2451fd9d045..4b974917893 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -3184,25 +3184,6 @@ JSON APIs with Behave.") time by mocking the datetime module.") (license license:asl2.0))) -(define-public python-flexmock - (package - (name "python-flexmock") - (version "0.12.2") - (source (origin - (method url-fetch) - (uri (pypi-uri "flexmock" version)) - (sha256 - (base32 - "18dcr7mpldf3cxsqi9rak75n4z7x3j544l4ixdspairm7cf6cp23")))) - (build-system pyproject-build-system) - (native-inputs (list poetry python-pytest)) - (home-page "https://flexmock.readthedocs.org") - (synopsis "Testing library for Python") - (description - "flexmock is a testing library for Python that makes it easy to create -mocks, stubs and fakes.") - (license license:bsd-3))) - (define-public python-flaky (package (name "python-flaky") diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm index 06fa6676e23..93fe90a858f 100644 --- a/gnu/packages/chemistry.scm +++ b/gnu/packages/chemistry.scm @@ -701,10 +701,20 @@ symmetries written in C. Spglib can be used to: (sha256 (base32 "0w3c71wvhnc44pfafcjfgqkjimkcdkpjk3bahg9v6l1z8c0cyhfy")))) (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-six + (lambda _ + (substitute* "geometric/nifty.py" + (("import six") "") + (("six\\.string_types") "str")) + (substitute* "setup.py" + (("'six',") ""))))))) (native-inputs (list python-pytest - python-setuptools - python-wheel)) + python-setuptools)) (propagated-inputs (list python-numpy python-scipy diff --git a/gnu/packages/iso-codes.scm b/gnu/packages/iso-codes.scm index ad9b90a5641..000ea057b30 100644 --- a/gnu/packages/iso-codes.scm +++ b/gnu/packages/iso-codes.scm @@ -21,11 +21,11 @@ (define-module (gnu packages iso-codes) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) - #:use-module (guix build-system python) #:use-module (guix build-system pyproject) #:use-module (gnu packages check) #:use-module (gnu packages gettext) @@ -152,17 +152,42 @@ region, WIOD classification, ccTLD.") (version "0.4.5") (source (origin - (method url-fetch) - (uri (pypi-uri "iso-639" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/noumar/iso639") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0jffmh4m20q8j27xb2fqbnlghjj0cx8pgsbzqisdg65qh2wd976w")))) - (build-system python-build-system) + (base32 "02kx6kr3x43linxqafjlx85zdk04s6ab2fv5ikyglghwr5hsvic4")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "tests/tests.py" + "-k" (string-join + (list + ;; module 'collections' has no attribute 'Iterable' + "not test_iter" + ;; 'Moroccan Arabic' != 'Arabic' + "test_logic_part2" + ;; 'Languages' object has no attribute 'indices' + "test_compare_alpha2" + "test_compare_bibliographic" + "test_compare_terminology") + " and not ")) + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'configure-tests + (lambda _ + (setenv "PYTHONPATH" + (string-append (getcwd) ":" + (getenv "GUIX_PYTHONPATH")))))))) + (native-inputs (list python-pycountry python-pytest python-setuptools)) (home-page "https://github.com/noumar/iso639") (synopsis "Python library for ISO 639 standard") - (description "This package provides a Python library for ISO 639 standard -that is concerned with representation of names for languages and language -groups.") + (description + "This package provides a Python library for ISO 639 standard that is +concerned with representation of names for languages and language groups.") (license license:agpl3+))) (define-public python-iso3166 @@ -171,13 +196,64 @@ groups.") (version "2.1.1") (source (origin - (method url-fetch) - (uri (pypi-uri "iso3166" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/deactivated/python-iso3166") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "068p94gavc8gbmp5a2kw8hi5l551wfzbpmp6z7ll8sx6vnw53mgw")))) - (build-system python-build-system) + (base32 "0j0bnm4bd23cyb7dga00gb20myg9skylchkw4d23yh31b7a315m8")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/deactivated/python-iso3166") (synopsis "Self-contained ISO 3166-1 country definitions") (description "This package provides the ISO 3166-1 country definitions.") (license license:expat))) + +(define-public python-pycountry + (package + (name "python-pycountry") + (version "24.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pycountry/pycountry") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qs99acz1vsj96s8pcwbnp3z3s01mzzvdayk7fm0nnl6lf3lz1g1")))) + (build-system pyproject-build-system) + (native-inputs (list python-poetry-core python-pytest python-pytest-cov)) + (home-page "https://github.com/pycountry/pycountry") + (synopsis "ISO databases for languages, countries, currencies, etc.") + (description + "@code{pycountry} provides the ISO databases for the standards: + @enumerate + @item 639-3 (Languages) + @item 3166 (Countries) + @item 3166-3 (Deleted Countries) + @item 3166-2 (Subdivisions of countries) + @item 4217 (Currencies) + @item 15924 (Scripts) + @end enumerate + It includes a copy from Debian’s pkg-isocodes and makes the data accessible + through a Python API.") + (license license:lgpl2.1+))) + +(define-public python-pycountry-20.7.3 + (hidden-package + (package + (inherit python-pycountry) + (name "python-pycountry") + (version "20.7.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pycountry/pycountry") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1aqzbdqvy3pg0x33ay099vriazs28v6kw7fwc8ajg3avdcws2mgm")))) + (native-inputs (list python-pytest python-pytest-cov python-setuptools))))) diff --git a/gnu/packages/lean.scm b/gnu/packages/lean.scm index 82bca77dd71..8229c7e7306 100644 --- a/gnu/packages/lean.scm +++ b/gnu/packages/lean.scm @@ -24,11 +24,12 @@ #:use-module (ice-9 match) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages check) #:use-module (gnu packages llvm) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) #:use-module (guix build-system cmake) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix gexp) #:use-module (guix packages) @@ -165,18 +166,33 @@ interactive and automated theorem proving.") (package (name "python-mathlibtools") (version "1.1.1") - (source (origin - (method url-fetch) - (uri (pypi-uri "mathlibtools" version)) - (sha256 - (base32 - "089pql105imx8z7ar1wiz9fn000jp6xqdfixw4jf2vric94vn9fj")))) - (build-system python-build-system) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/leanprover-community/mathlib-tools") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1kllk99cd9vsbmb0ifi21gkhrg2w803z4y5xhx0a7hx3viyjb3cv")))) + (build-system pyproject-build-system) (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'check 'fix-home-directory - (lambda _ - (setenv "HOME" "/tmp")))))) + (list + #:test-flags + #~(list "-k" + ;; These tests require network access. + (string-join (list "not test_new" + "test_add" + "test_upgrade_project" + "test_upgrade_mathlib" + "test_get_tutorials") + " and not ")) + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'fix-home-directory + (lambda _ + (setenv "HOME" "/tmp")))))) + (native-inputs (list python-pytest python-setuptools)) (inputs (list python-toml python-pygithub python-certifi diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 1cd0865263a..82d878592ac 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -11316,8 +11316,12 @@ the Wolfram language.") (sha256 (base32 "1iagdic8f0yjx01kdds40jfcxcpdbrd3i0ywydl01dhyyvd2yjk9")))) (build-system pyproject-build-system) - (propagated-inputs (list python-mathics-scanner python-pygments)) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs + (list python-pytest + python-setuptools)) + (propagated-inputs + (list python-mathics-scanner + python-pygments)) (home-page "http://github.com/Mathics3/mathics-pygments/") (synopsis "Wolfram language lexer for Pygments") (description "This package provides a Wolfram language lexer for Pygments.") diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index c789ae54fa2..763c21b7933 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -154,6 +154,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages image-viewers) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages iso-codes) #:use-module (gnu packages java) #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages libevent) diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index c95596dd4d6..c6f52eb8439 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 Cyril Roelandt ;;; Copyright © 2015, 2019, 2020, 2021 Efraim Flashner ;;; Copyright © 2016-2022 Marius Bakke +;;; Copyright © 2016 宋文武 ;;; Copyright © 2017 Muriithi Frederick Muriuki ;;; Copyright © 2018-2020 Tobias Geerinckx-Rice ;;; Copyright © 2019-2025 Ricardo Wurmus @@ -23,6 +24,7 @@ ;;; Copyright © 2022 Tomasz Jeneralczyk ;;; Copyright © 2022 jgart ;;; Copyright © 2023 John Kehayias +;;; Copyright © 2024 Danny Milosavljevic ;;; Copyright © 2024-2025 Troy Figiel ;;; Copyright © 2024 Navid Afkhami ;;; Copyright © 2024, 2025 David Elsing @@ -786,6 +788,27 @@ list/set/dict comprehensions.") providing hints about what deprecated methods should be replaced with.") (license license:gpl2))) +(define-public python-flexmock + (package + (name "python-flexmock") + (version "0.12.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flexmock" version)) + (sha256 + (base32 "18dcr7mpldf3cxsqi9rak75n4z7x3j544l4ixdspairm7cf6cp23")))) + (build-system pyproject-build-system) + (native-inputs + (list python-poetry-core + python-pytest)) + (home-page "https://flexmock.readthedocs.io/") + (synopsis "Testing library for Python") + (description + "flexmock is a testing library for Python that makes it easy to create +mocks, stubs and fakes.") + (license license:bsd-3))) + (define-public python-gcovr (package (name "python-gcovr") diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 32b9f17aaa7..b20bec061fd 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -1771,6 +1771,7 @@ in different situations. @end enumerate") (license license:expat))) +;; XXX: Not maintained since 2016. (define-public python-pydes (package (name "python-pydes") @@ -1782,8 +1783,10 @@ in different situations. (sha256 (base32 "04lh71f47y04vspfrdrq6a0hn060ibxvdp5z1pcr0gmqs8hqxaz2")))) (build-system pyproject-build-system) - (native-inputs (list python-setuptools python-wheel)) - (home-page "http://twhiteman.netfirms.com/des.html") + (arguments + (list #:tests? #f)) ;no tests in PyPI, I could not fine Git + (native-inputs (list python-setuptools)) + (home-page "http://twhiteman.netfirms.com/des.html") ;XXX: Dead link (synopsis "Pure python implementation of the DES and TRIPLE DES encryption algorithms") (description diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index ee9b4aadaab..ed1f7fe8afb 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -64,6 +64,8 @@ ;;; Copyright © 2023 dan ;;; Copyright © 2023 John Kehayias ;;; Copyright © 2023 Ivan Vilata-i-Balaguer +;;; Copyright © 2024 Fabio Natali +;;; Copyright © 2024 Steve George ;;; Copyright © 2024 Troy Figiel ;;; Copyright © 2024, 2025 Sharlatan Hellseher ;;; Copyright © 2024 normally_js @@ -205,6 +207,112 @@ writing applications that talk to network enabled embedded @acronym{IoT,Internet of Things} devices.") (license license:expat))) +(define-public python-apprise + (package + (name "python-apprise") + (version "1.9.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "apprise" version)) + (sha256 + (base32 "126951n9lnlqrw5lbsvs9xs7jzg33bqqxm7cfnqag2csw6p24ca8")))) + (build-system pyproject-build-system) + (arguments + (list + ;; These tests used to be ran with --numprocesses, but that seems to have + ;; made them non-deterministic. + #:test-flags + #~(list "--ignore=tests/test_plugin_macosx.py" + "-k" "not test_plugin_glib_send_raises_generic"))) + (native-inputs + (list python-babel + python-pytest + python-pytest-mock + python-setuptools)) + (propagated-inputs + (list python-certifi + python-click + python-markdown + python-pygobject + python-pyyaml + python-requests + python-requests-oauthlib)) + (home-page "https://github.com/caronc/apprise") + (synopsis "Push notification library") + (description + "Apprise is a Python library that allows sending push notifications to a +broad range of notification services, such as Telegram, Discord, Slack, Amazon +SNS, Gotify, etc.") + (license license:bsd-2))) + +(define-public python-blacksheep + (package + (name "python-blacksheep") + (version "2.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/BlackSheep") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1iwlj6vl0rnvddbn9zsdgpya88z0lifr86wz3ci1d67li7w5bjiq")))) + (build-system pyproject-build-system) + (arguments + (list + ;; tests: 1443 passed, 3 skipped + ;; + ;; 1. Ignore integration tests. + ;; 2. Client tests use test fixture no longer available in + ;; pytest-asyncio, + ;; + ;; See: . + #:test-flags + #~(list "--ignore=itests" + "--ignore=tests/client") + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'cythonize + (lambda _ + (with-directory-excursion "blacksheep" + (for-each (lambda (file) + (invoke "cython" "-3" file "-I" ".")) + (find-files "." ".*\\.pyx$")))))))) + (native-inputs + (list python-cython + python-flask + python-jinja2 + python-pydantic + python-pyjwt + python-pytest + python-pytest-asyncio + python-setuptools)) + (propagated-inputs + (list python-certifi + python-dateutil + python-essentials-openapi + python-guardpost + python-itsdangerous)) + (home-page "https://github.com/Neoteroi/BlackSheep") + (synopsis "Asynchronous framework to build event based web applications") + (description + "BlackSheep is a lightweight, asynchronous, event driven Web framework. + +The framework offers +@itemize +@item A rich code API, based on dependency injection and inspired by Flask and +ASP.NET Core. +@item A typing-friendly codebase, which enables a comfortable development +experience thanks to hints when coding with IDEs. +@item Built-in generation of OpenAPI Documentation, supporting version 3, YAML, +and JSON. +@item A cross-platform framework, using the most modern versions of Python. +@item Good performance. +@end itemize") + (license license:expat))) + (define-public python-devpi-common (package (name "python-devpi-common") @@ -606,6 +714,40 @@ Async mode for @url{https://domainconnect.org/, Domain Connect protocol}.") Dropbox API v2.") (license license:expat))) +(define-public python-essentials-openapi + (package + (name "python-essentials-openapi") + (version "1.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/essentials-openapi") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0f3lhpkqhvv8sr1c34cvzdqkc61306m03w3jp0zdih1v6is05j8x")))) + (build-system pyproject-build-system) + (native-inputs + (list python-flask + python-hatchling + python-pydantic + python-pytest + python-rich)) + (propagated-inputs + (list python-essentials + python-httpx + python-jinja2 + python-markupsafe + python-pyyaml)) + (home-page "https://github.com/Neoteroi/essentials-openapi/") + (synopsis "Generator for OpenAPI Documentation") + (description + "Generator for OpenAPI Documentation version 2 and 3, in JSON and YAML +formats. Generator for other kinds of documents from OpenAPI Documentation +files.") + (license license:expat))) + (define-public python-eventlet (package (name "python-eventlet") @@ -773,6 +915,51 @@ formats (PDF/XML/CSV).") @url{https://www.globus.org/, Globus} APIs.") (license license:asl2.0))) +(define-public python-guardpost + (package + (name "python-guardpost") + (version "1.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/guardpost") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1cwxxxhazpaphhcysgpivk51vp76zdf7hrryc1vr6vlp2zzgwsxd")))) + (build-system pyproject-build-system) + (arguments + (list + ;; Possible timing issue, see: + ;; . + #:test-flags '(list "--ignore=tests/test_jwts.py"))) + (native-inputs + (list python-cryptography + python-flask + python-hatchling + python-pyjwt + python-pytest + python-pytest-asyncio)) + (propagated-inputs + (list python-rodi)) + (home-page "https://github.com/Neoteroi/GuardPost/") + (synopsis + "Authentication and authorization framework for Python applications") + (description + "GuardPost is a framework to handle authentication and +authorization in asynchronous Python applications. + +Its features include + +@itemize +@item Strategy to implement authentication. +@item Strategy to implement authorization. +@item Support for dependency injection +@item Built-in support for JSON Web Tokens (JWTs) authentication. +@end itemize") + (license license:expat))) + (define-public python-hookdns (package (name "python-hookdns") diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index f1fb89a2951..a990cef1365 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -237,6 +237,7 @@ #:use-module (gnu packages image-processing) #:use-module (gnu packages imagemagick) #:use-module (gnu packages inkscape) + #:use-module (gnu packages iso-codes) #:use-module (gnu packages java) #:use-module (gnu packages jupyter) #:use-module (gnu packages kerberos) @@ -344,46 +345,6 @@ protocol of git-annex, while leaving the behavior of the remote up to the user.") (license license:gpl3))) -(define-public python-apprise - (package - (name "python-apprise") - (version "1.9.3") - (source - (origin - (method url-fetch) - (uri (pypi-uri "apprise" version)) - (sha256 - (base32 "19k51ici58134m61f6di0m36mbqgdyr6r31i8v6rk22vldz6d0zm")))) - (build-system pyproject-build-system) - (arguments - (list - #:test-flags - #~(list "--numprocesses" (number->string (parallel-job-count)) - "--ignore=test/test_plugin_macosx.py" - ;; AssertionError - "--deselect=test/test_plugin_wxpusher.py::test_plugin_wxpusher_urls"))) - (native-inputs - (list python-babel - python-pytest - python-pytest-mock - python-pytest-xdist - python-setuptools - python-wheel)) - (propagated-inputs - (list python-certifi - python-click - python-markdown - python-pyyaml - python-requests - python-requests-oauthlib)) - (home-page "https://github.com/caronc/apprise") - (synopsis "Push notification library") - (description - "Apprise is a Python library that allows sending push notifications to a -broad range of notification services, such as Telegram, Discord, Slack, Amazon -SNS, Gotify, etc.") - (license license:bsd-2))) - (define-public python-archspec (package (name "python-archspec") @@ -646,7 +607,8 @@ line drawing algorithm}.") (sha256 (base32 "08dmi4chamk5dbdpvrc0nb09iybfhj3wqwxgffiqnkj7030qhqb8")))) (build-system pyproject-build-system) - (native-inputs (list python-setuptools python-wheel)) + ;; tests: 797 passed, 1 warning + (native-inputs (list python-pytest python-setuptools)) (propagated-inputs (list python-ply)) (home-page "https://github.com/calmjs/calmjs.parse/") (synopsis "Parsers for ECMA standards") @@ -4179,7 +4141,7 @@ with Numpy and SciPy.") (define-public python-rich-tables (package (name "python-rich-tables") - (version "0.6.1") + (version "0.8.0") (source (origin (method git-fetch) ; no tests data in PyPi package @@ -4188,8 +4150,13 @@ with Numpy and SciPy.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1wqr6sldf97ycs4gfvsqhbh1ki2kgsaicsy44g9lspvlda5nfcp1")))) + (base32 "1gkwgxcjnghn0alqw53kgb4ixf047dnb49kc0af3blvcwnmfmb5f")))) (build-system pyproject-build-system) + (arguments + (list + #:test-flags + ;; TypeError: can't subtract offset-naive and offset-aware datetimes + #~(list "--deselect=tests/test_outputs.py::test_outputs[tests/json/album.json]"))) (native-inputs (list python-freezegun python-poetry-core @@ -4197,6 +4164,7 @@ with Numpy and SciPy.") python-pytest-cov)) (propagated-inputs (list python-funcy + python-humanize python-multimethod python-platformdirs python-rgbxy @@ -6524,9 +6492,11 @@ other Python program.") (base32 "0skrs5i5pvpzvihgxw766zi1c9bbp33aisdldxgj470mlchvdgyy")))) (build-system pyproject-build-system) + (arguments + (list #:test-backend #~'custom + #:test-flags #~(list "tests/functional/tests.py"))) (native-inputs - (list python-setuptools - python-wheel)) + (list python-setuptools)) (home-page "https://agateau.com/projects/doxyqml") (synopsis "Doxygen input filter for QML files") (description @@ -7778,6 +7748,7 @@ something else) to Python data-types.") (base32 "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s")))))) +;; XXX: See: . (define-public python-kconfiglib (package (name "python-kconfiglib") @@ -7789,9 +7760,10 @@ something else) to Python data-types.") (sha256 (base32 "0g690bk789hsry34y4ahvly5c8w8imca90ss4njfqf7m2qicrlmy")))) (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;tests require complex set up (native-inputs (list python-setuptools - python-wheel `(,python "tk"))) (home-page "https://github.com/ulfalizer/Kconfiglib") (synopsis @@ -8543,6 +8515,7 @@ 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+)))) +;; XXX: See: . (define-public python-elevate (package (name "python-elevate") @@ -8555,13 +8528,14 @@ important tasks for becoming a daemon process: (base32 "02g23lxzzl64j1b4fsnrdxqiahl9lnrqyxpqwcfzn0g33px1kbak")))) (build-system pyproject-build-system) (arguments - `(#:phases + `(#:tests? #f ;no tests in PyPI + #:phases (modify-phases %standard-phases (add-after 'unpack 'clean-up (lambda _ ;; Uses stuff we don't have. (delete-file "elevate/windows.py")))))) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs (list python-setuptools)) (home-page "https://github.com/barneygale/elevate") (synopsis "Python library for requesting root privileges") (description "This package provides a Python library for requesting @@ -13770,10 +13744,10 @@ memoizing PEG/Packrat parser in Python.") (define-public python-grandalf (package (name "python-grandalf") - (version "0.7") + ;; `guix refresh` will try to upgrade to v0.55555, but that is older. + (version "0.8") (source (origin - ;; There's no source tarball on PyPI. (method git-fetch) (uri (git-reference (url "https://github.com/bdcht/grandalf") @@ -13781,16 +13755,18 @@ memoizing PEG/Packrat parser in Python.") (file-name (git-file-name name version)) (sha256 (base32 - "03p8w8ljpb87qbyldm3s6b7qi30hfcn43h33iwlgqcf31fjsyr4g")))) - (build-system python-build-system) + "199f86hz3g4p237ma4j27rzwmska3bxzsbgq20i4l4pczf9v7ax0")))) + (build-system pyproject-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "python" "setup.py" "pytest")))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'patch-requirements + (lambda _ + (substitute* "setup.py" + (("install_requires=\\['pyparsing'],") ""))))))) (native-inputs - (list python-pytest python-pytest-runner)) + (list python-setuptools python-pytest)) (propagated-inputs (list python-numpy python-ply)) (home-page "https://github.com/bdcht/grandalf") @@ -17304,7 +17280,7 @@ pseudo terminal (pty), and interact with both the process and its pty.") ;; XXX: Snippet below is required because on v1.1.30 the source code ;; has configshell_fb as softlink to configshell and guix ;; pyproject-build-system doesn't work with symlinks very well. - ;; + ;; ;; This package is only used in spdk for now and it's crucial to keep ;; it locked on version and keep the snipped for spdk to build ;; successfully. @@ -20396,6 +20372,33 @@ package and greatly reduce the number of imports for your users. It is a small pure Python module that works on virtually all Python versions.") (license license:expat))) +(define-public python-essentials + (package + (name "python-essentials") + (version "1.1.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/essentials") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1bh8yi79gn9fg26mp58nm9xhnxcfab7rhc076av4qg00mg5p9rn0")))) + (build-system pyproject-build-system) + (native-inputs + (list python-hatchling + python-pydantic + python-pytest-asyncio)) + (home-page "https://github.com/Neoteroi/essentials/wiki") + (synopsis + "Utility functions, exceptions, and classes for Python applications") + (description + "Essentials is a collection of functions, exceptions, and classes for Python +applications. Examples of utilities are exceptions for common scenarios, +friendly JSON encoder, decorators for retries and logging.") + (license license:expat))) + (define-public python-execnet (package (name "python-execnet") @@ -23220,7 +23223,7 @@ specified in POSIX.1-2001 and POSIX.1-2008.") (sha256 (base32 "1clb3lfw694crq8m767q0yjaazkplcrbzdr9fr2w39hhndivhcd6")))) (build-system pyproject-build-system) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/rocky/pycolumnize") (synopsis "Format a simple (i.e. not nested) list into aligned columns.") (description @@ -25315,6 +25318,41 @@ GraphQL schema describes your data model, and provides a GraphQL server with an associated set of resolve methods that know how to fetch data.") (license license:expat))) +(define-public python-rodi + (package + (name "python-rodi") + (version "2.0.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/rodi") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0kf98yjllrq7vqcp07r2gmkqcviqglsnai3sdigdsrwrfc0b44yp")))) + (build-system pyproject-build-system) + (native-inputs + (list python-hatchling + python-pytest + python-pytest-asyncio)) + (home-page "https://github.com/Neoteroi/rodi") + (synopsis "Dependency injection framework for Python") + (description + "Rodi is a dependency injection framework for Python applications. + +Its features include + +@itemize +@item Type resolution by signature types annotations. +@item Type resolution by class annotations. +@item Type resolution by names and aliases. +@item Build graph of objects without the need for source code changes. +@item Minimum overhead to obtain services, once the objects graph is built. +@item Support for singleton, transient, and scoped services. +@end itemize") + (license license:expat))) + ;; XXX: The last time updated in 2015, consider to remove it when nothing is ;; depend on it. (define-public python-snowballstemmer @@ -26019,46 +26057,6 @@ converting text with ANSI color codes to HTML or LaTeX.") can even create animations with the cursor controls.") (license license:expat))) -(define-public python-pycountry - (package - (name "python-pycountry") - (version "22.3.5") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pycountry" version)) - (sha256 - (base32 - "0ihnkh86zz01vi46gcwgq6h71jrpj7hq71zi13c98n2qdhj3l5mj")))) - (build-system python-build-system) - (home-page "https://bitbucket.org/flyingcircus/pycountry") - (synopsis "ISO databases for languages, countries, currencies, etc.") - (description - "@code{pycountry} provides the ISO databases for the standards: - @enumerate - @item 639-3 (Languages) - @item 3166 (Countries) - @item 3166-3 (Deleted Countries) - @item 3166-2 (Subdivisions of countries) - @item 4217 (Currencies) - @item 15924 (Scripts) - @end enumerate - It includes a copy from Debian’s pkg-isocodes and makes the data accessible - through a Python API.") - (license license:lgpl2.1+))) - -(define-public python-pycountry@20.7.3 - (package - (inherit python-pycountry) - (name "python-pycountry") - (version "20.7.3") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pycountry" version)) - (sha256 - (base32 "0hnbabsmqimx5hqh0jbd2f64i8fhzhhbrvid57048hs5sd9ll241")))))) - (define-public python-pycosat (package (name "python-pycosat") @@ -26996,9 +26994,10 @@ filetypes can be easily added by creating plugins for them.") (sha256 (base32 "0c3dgm1rf7ih79pgkj7adffn8hlyqh5qah8rbzlq436kz3srk83q")))) (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;no tests in PyPI or Git (native-inputs - (list python-setuptools - python-wheel)) + (list python-setuptools)) (home-page "https://github.com/benknight/hue-python-rgb-converter") (synopsis "RGB conversion tool in Python") (description @@ -29466,29 +29465,32 @@ supports the globstar @code{**} operator to match an arbitrary number of path components.") (license license:asl2.0))) +;; XXX: Not maintained since 2021. (define-public python-git-hammer (package (name "python-git-hammer") - (version "0.3.1") + (version "0.3.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/asharov/git-hammer") - (commit version))) + (url "https://github.com/asharov/git-hammer") + (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 - "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr")))) - (build-system python-build-system) + (base32 "0j0skpbhi7js45hp1w2n87093yz1hjdg5y3kicwvm84fb8i38gvx")))) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-setup.py + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements (lambda _ (substitute* "setup.py" - (("setup\\(") - "setup(\n test_suite=\"test\","))))))) + (("matplotlib <3.1") "matplotlib"))))))) + (native-inputs + (list python-pytest + python-setuptools)) (propagated-inputs (list python-beautifultable python-dateutil @@ -29500,8 +29502,8 @@ path components.") (home-page "https://github.com/asharov/git-hammer") (synopsis "Provide statistics for git repositories") (description - "Git Hammer is a statistics tool for projects in git repositories. -Its major feature is tracking the number of lines authored by each person for every + "Git Hammer is a statistics tool for projects in git repositories. Its major +feature is tracking the number of lines authored by each person for every commit, but it also includes some other useful statistics.") (license license:asl2.0))) @@ -30991,6 +30993,7 @@ module.") (properties '((upstream-name . "Wikidata"))) (license license:gpl3+))) +;; XXX: Not maintained since 2022, leaf package. (define-public python-attr (package (name "python-attr") @@ -31002,8 +31005,11 @@ module.") (sha256 (base32 "1x2627x0n2rxx8wib4cksbjjnncff8finq97k37dq70qd2kvrvhw")))) (build-system pyproject-build-system) + (arguments + (list #:test-backend #~'custom + #:test-flags #~(list "-c" "import dry_attr; dry_attr.test()"))) (native-inputs - (list python-setuptools python-wheel)) + (list python-setuptools)) (home-page "https://github.com/denis-ryzhkov/attr") (synopsis "Decorator for attributes of target function or class") (description "Simple decorator to set attributes of target function or @@ -32138,6 +32144,7 @@ register custom encoders and decoders.") bindings for Python 3.") (license license:bsd-3))) +;; XXX: See: . (define-public python-iocapture ;; The latest release is more than a year older than this commit. (let ((commit "fdc021c431d0840303908dfc3ca8769db383595c") @@ -32155,8 +32162,12 @@ bindings for Python 3.") (sha256 (base32 "1mkbhqibxvgwg0p7slr8dfraa3g2s6bsayladhax2jccwj4kcndz")))) (build-system pyproject-build-system) - (native-inputs (list python-flexmock python-pytest python-pytest-cov - python-setuptools python-wheel)) + (native-inputs + (list python-flexmock + python-pytest + python-pytest-cov + python-setuptools + python-six)) (home-page "https://github.com/oinume/iocapture") (synopsis "Python capturing tool for stdout and stderr") (description @@ -38001,6 +38012,43 @@ static types.") (description "This package providis typing stubs for python-dateutil.") (license license:asl2.0))) +(define-public python-types-aiofiles + (package + (name "python-types-aiofiles") + (version "24.1.0.20250822") + (source + (origin + (method url-fetch) + (uri (pypi-uri "types_aiofiles" version)) + (sha256 + (base32 "0ysar1an6il2rsd54fwzwdis209z3qq3i4zhgixfjzrh1j70vfcs")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;no tests in PyPI archive + (native-inputs (list python-setuptools)) + (home-page "https://github.com/python/typeshed") + (synopsis "Typing stubs for python-aiofiles") + (description "This package providis typing stubs for python-aiofiles.") + (license license:asl2.0))) + +(define-public python-types-tqdm + (package + (name "python-types-tqdm") + (version "4.67.0.20250809") + (source + (origin + (method url-fetch) + (uri (pypi-uri "types_tqdm" version)) + (sha256 + (base32 "006md2hnsq79p7d5z3kiaapvl9wwa4dz3yb39jf0n22n2awpmgq2")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;no tests in PyPI archive + (native-inputs (list python-setuptools)) + (propagated-inputs (list python-types-requests)) + (home-page "https://github.com/python/typeshed") + (synopsis "Typing stubs for python-tqdm") + (description "This package providis typing stubs for python-tqdm.") + (license license:asl2.0))) + (define-public python-types-docutils (package (name "python-types-docutils") @@ -39406,7 +39454,19 @@ client library.") (sha256 (base32 "122a8prbcj070y3fl82kvxmbciv36hj1h1d448l6zcdrb22q4mhx")))) (build-system pyproject-build-system) - (native-inputs (list python-setuptools python-wheel)) + (arguments + (list + ;; tests: 1571 passed, 37 deselected, 1 warning + ;; + ;; Two test fail with assertion not equal: + ;; + ;; test_decode_error[0001-unpack_from requires a buffer of at least 1 + ;; bytes] - AssertionError + ;; + ;; test_decode_error[00000101-unpack_from requires a buffer of at least + ;; 1 bytes] - AssertionError + #:test-flags #~(list "-k" "not test_decode_error"))) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://ndeflib.readthedocs.io/") (synopsis "NFC Data Exchange Format decoder and encoder.") (description "This package provides a NFC (Near-Field Communication) @@ -39817,6 +39877,24 @@ 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-types-regex + (package + (name "python-types-regex") + (version "2025.9.18.20250921") + (source + (origin + (method url-fetch) + (uri (pypi-uri "types_regex" version)) + (sha256 + (base32 "0gqc8b9d38pdm1l6nryi9rq9vmpis575hqnxlvj904n3n4hhqw71")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;no tests in PyPI archive + (native-inputs (list python-setuptools)) + (home-page "https://github.com/python/typeshed") + (synopsis "Typing stubs for regex") + (description "This package provides typing stubs for regex.") + (license license:asl2.0))) + (define-public python-rpds-py (package (name "python-rpds-py") @@ -40161,8 +40239,16 @@ read all zbar supported codes.") (base32 "0r46q4hd7xbpvnidbra1prkg4xhmajxjjmclfqgp3pv0lgyslqxh")))) (build-system pyproject-build-system) + (arguments + ;; XXX: No tests in PyPI, tere are tests in Git, but there is no 3.7.10.1 + ;; tag. + ;; + ;; See: + ;; - URL: + ;; - File: + (list #:tests? #f)) (inputs (list openssl)) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs (list python-setuptools)) (home-page "https://zeroc.com") (synopsis "RPC framework") (description @@ -40171,6 +40257,29 @@ software by taking care of all interactions with low-level network programming interfaces.") (license license:gpl2))) +;; Package variant to build python-omero-py@5.20.0 +(define-public python-zeroc-ice-3.6 + (package + (inherit python-zeroc-ice) + (version "3.6.5") + (source (origin + (method url-fetch) + (uri (pypi-uri "zeroc-ice" version)) + (sha256 + (base32 + "0mikjfvq26kh8asnn9v55z41pap4c5ypymqnwwi4xkavc3mzyda2")) + (patches + (search-patches + "python-zeroc-ice-3.6.5-python-3.11-support.patch")))) + (arguments + (substitute-keyword-arguments (package-arguments python-zeroc-ice) + ((#:phases phases #~%standard-phases) + #~(modify-phases #$phases + (add-before 'build 'relax-gcc-14-strictness + (lambda _ + (setenv "CFLAGS" + "-g -O2 -Wno-error=implicit-function-declaration"))))))))) + (define-public python-islenska (package (name "python-islenska") @@ -40271,20 +40380,6 @@ 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) - (version "3.6.5") - (source (origin - (method url-fetch) - (uri (pypi-uri "zeroc-ice" version)) - (sha256 - (base32 - "0mikjfvq26kh8asnn9v55z41pap4c5ypymqnwwi4xkavc3mzyda2")) - (patches - (search-patches - "python-zeroc-ice-3.6.5-python-3.11-support.patch")))))) - (define-public python-whenever (package (name "python-whenever") diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index bc52898c0ae..71d9cee818c 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -69,6 +69,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-build) + #:use-module (gnu packages python-check) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm index ee6cc9b6bfc..0261e92e8e7 100644 --- a/gnu/packages/tryton.scm +++ b/gnu/packages/tryton.scm @@ -33,6 +33,7 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) + #:use-module (gnu packages iso-codes) #:use-module (gnu packages pdf) #:use-module (gnu packages python) #:use-module (gnu packages python-build) @@ -1739,7 +1740,7 @@ month and a year of work.") (arguments (tryton-arguments "country" "--no-doctest")) (native-inputs (%standard-trytond-native-inputs)) (propagated-inputs - (list python-pycountry@20.7.3 trytond)) + (list python-pycountry-20.7.3 trytond)) (home-page "http://www.tryton.org/") (synopsis "Tryton module with countries") (description