Merge remote-tracking branch 'origin/python-team'

Change-Id: I08cf47c4ee8c4019615ba45cef4cca1bd362d31b
This commit is contained in:
Sharlatan Hellseher 2025-04-19 16:49:36 +01:00
commit e417d6fe81
No known key found for this signature in database
GPG key ID: 76D727BFF62CD2B5
73 changed files with 5574 additions and 3350 deletions

View file

@ -1927,7 +1927,6 @@ dist_patch_DATA = \
%D%/packages/patches/ocaml-4.09-multiple-definitions.patch \
%D%/packages/patches/omake-fix-non-determinism.patch \
%D%/packages/patches/oneko-remove-nonfree-characters.patch \
%D%/packages/patches/onionshare-cli-async-mode.patch \
%D%/packages/patches/online-judge-tools.patch \
%D%/packages/patches/onnx-optimizer-system-library.patch \
%D%/packages/patches/onnx-1.13.1-use-system-googletest.patch \
@ -2006,9 +2005,11 @@ dist_patch_DATA = \
%D%/packages/patches/prusa-slicer-fix-tests.patch \
%D%/packages/patches/prusa-wxwidgets-makefile-fix.patch \
%D%/packages/patches/pthreadpool-system-libraries.patch \
%D%/packages/patches/python-3.11-fix-tests.patch \
%D%/packages/patches/python-3.12-fix-tests.patch \
%D%/packages/patches/python-accupy-use-matplotx.patch \
%D%/packages/patches/python-accupy-fix-use-of-perfplot.patch \
%D%/packages/patches/python-bed-reader-use-store-samples.patch \
%D%/packages/patches/python-chai-drop-python2.patch \
%D%/packages/patches/python-clarabel-blas.patch \
%D%/packages/patches/python-docrepr-fix-tests.patch \
@ -2023,7 +2024,6 @@ dist_patch_DATA = \
%D%/packages/patches/python-sgmllib3k-assertions.patch \
%D%/packages/patches/python-sphobjinv-defer-ssl-import.patch \
%D%/packages/patches/python-sphinx-prompt-docutils-0.19.patch \
%D%/packages/patches/python-wxwidgets-type-errors.patch \
%D%/packages/patches/qcodeeditor-qt6.patch \
%D%/packages/patches/qtdeclarative-5-disable-qmlcache.patch \
%D%/packages/patches/qtdeclarative-disable-qmlcache.patch \
@ -2130,6 +2130,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-memcached-syntax-warnings.patch \
%D%/packages/patches/python-mox3-python3.6-compat.patch \
%D%/packages/patches/python-packaging-test-arch.patch \
%D%/packages/patches/python-property-cached-asyncio-3_11.patch \
%D%/packages/patches/python-pyan3-fix-absolute-path-bug.patch \
%D%/packages/patches/python-pyan3-fix-positional-arguments.patch \
%D%/packages/patches/python-pytorch-fix-codegen.patch \
@ -2143,6 +2144,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
%D%/packages/patches/python-unittest2-python3-compat.patch \
%D%/packages/patches/python-unittest2-remove-argparse.patch \
%D%/packages/patches/python-vaex-core-fix-tsl-use.patch \
%D%/packages/patches/python-vega-datasets-remove-la-riots-code.patch \
%D%/packages/patches/python-versioneer-guix-support.patch \
%D%/packages/patches/python-werkzeug-tests.patch \
@ -2329,7 +2331,6 @@ dist_patch_DATA = \
%D%/packages/patches/tpetra-remove-duplicate-using.patch \
%D%/packages/patches/transcode-ffmpeg.patch \
%D%/packages/patches/transmission-4.0.6-fix-build.patch \
%D%/packages/patches/trytond-add-egg-modules-to-path.patch \
%D%/packages/patches/trytond-add-guix_trytond_path.patch \
%D%/packages/patches/ttf2eot-cstddef.patch \
%D%/packages/patches/tup-unbundle-dependencies.patch \

View file

@ -1065,25 +1065,29 @@ memory, disks, network and processes.")
(uri (pypi-uri "bpytop" version))
(sha256
(base32 "1clvajbv7pzlya9s1xs6dvjic8rv3kx7aqiwnjxapiypx246gdjk"))))
(build-system python-build-system)
(build-system pyproject-build-system)
(arguments
(list
#:tests? #f ; No tests in Pypi archive.
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'use-poetry-core
(lambda _
;; Patch to use the core poetry API.
(substitute* "pyproject.toml"
(("poetry.masonry.api")
"poetry.core.masonry.api"))))
(add-after 'install 'install-themes
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((themes (string-append (site-packages inputs outputs)
"/bpytop-themes")))
(mkdir-p themes)
(copy-recursively "themes" themes)))))))
(inputs
(list python-psutil))
(arguments
`(#:phases
(modify-phases %standard-phases
;; sanity-check phase fail, but the application seems to be working
(delete 'sanity-check)
(add-after 'install 'install-themes
(lambda* (#:key outputs #:allow-other-keys)
(let ((themes (string-append (assoc-ref outputs "out")
"/lib/python"
,(version-major+minor
(package-version python))
"/site-packages/bpytop-themes")))
(mkdir-p themes)
(copy-recursively "themes" themes)))))))
(home-page
"https://github.com/aristocratos/bpytop")
(native-inputs
(list python-poetry-core))
(home-page "https://github.com/aristocratos/bpytop")
(synopsis "Resource monitor")
(description "Resource monitor that shows usage and stats for processor,
memory, disks, network and processes. It's a Python port and continuation of
@ -3280,7 +3284,7 @@ provides the following commands:
;; variable in the tests/cpan.scm test.
(list (search-path-specification
(variable "GUIX_PYTHONPATH")
(files (list "lib/python3.10/site-packages")))))
(files (list "lib/python3.11/site-packages")))))
(home-page "https://www.ansible.com/")
(synopsis "Radically simple IT automation")
(description "Ansible aims to be a radically simple IT automation system.

View file

@ -179,7 +179,7 @@ C/C++ programs to use its capabilities without restrictions or overhead.")
(define-public zbar
(package
(name "zbar")
(version "0.23.92")
(version "0.23.93")
(source
(origin
(method git-fetch)
@ -189,7 +189,7 @@ C/C++ programs to use its capabilities without restrictions or overhead.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0k3g0ql2m4dnflppp9r3k804d927g7zslczblzcrbvhp02g6n5an"))))
(base32 "0x71clkkm4w765c2d5h3svr29w08dj03r6785f9jwqx5r4ral0za"))))
(build-system glib-or-gtk-build-system)
(arguments
(list

View file

@ -738,7 +738,10 @@ file system.")
(base32
"11as7n2mj3nbqsqb3ivyv9985n73i022s748qvjg36cs8ig50afx"))))
(build-system pyproject-build-system)
(inputs (list python-requests python-argcomplete python-urllib3 gnupg))
(inputs (list python-requests
python-argcomplete
python-urllib3-1.26
gnupg))
(native-inputs (list python-setuptools python-wheel))
(arguments
(list #:phases #~(modify-phases %standard-phases

View file

@ -2059,7 +2059,10 @@ simulated Astronomical data in Python.")
"--ignore=astroML/density_estimation/tests/test_bayesian_blocks.py"
"--ignore=astroML/density_estimation/tests/test_bayesian_blocks.py"
"--ignore=astroML/density_estimation/tests/test_hist_binwidth.py"
"--ignore=astroML/density_estimation/tests/test_hist_binwidth.py")
"--ignore=astroML/density_estimation/tests/test_hist_binwidth.py"
;; Disalbe tests with NumPy, see
;; <https://github.com/astroML/astroML/issues/281>.
"--ignore=astroML/tests/test_resample.py")
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'patch-build-system
@ -2085,11 +2088,18 @@ simulated Astronomical data in Python.")
;; Some tests need this
(lambda _
(setenv "HOME" "/tmp"))))))
(propagated-inputs (list python-astropy python-matplotlib python-numpy
python-scikit-learn python-scipy))
(native-inputs (list python-pytest-astropy-header python-pytest-cov
python-pytest-doctestplus python-pytest-remotedata
python-wheel))
(native-inputs
(list python-pytest-astropy-header
python-pytest-cov
python-pytest-doctestplus
python-pytest-remotedata
python-wheel))
(propagated-inputs
(list python-astropy
python-matplotlib
python-numpy
python-scikit-learn
python-scipy))
(home-page "https://astroml.org")
(synopsis "Tools for machine learning and data mining in astronomy")
(description "This package provides tools for machine learning and data
@ -2136,7 +2146,9 @@ mining in astronomy.")
"test_table_comp[t16-t26]"
;; UnboundLocalError: local variable 'ihd'
;; referenced before assignment
"test_delay_doc_updates")
"test_delay_doc_updates"
;; assert 13 == 1
"test_skip_meta")
" and not "))
#:phases
#~(modify-phases %standard-phases
@ -2488,6 +2500,46 @@ attempting to maintain ISTP compliance
"This package contains a helper functionality to test ROMAN and JWST.")
(license license:bsd-3)))
(define-public python-cesium
(package
(name "python-cesium")
(version "0.12.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "cesium" version))
(sha256
(base32
"0jr0ycqz9ns6mcskm4sxx92k40fj3v0x9knjaw5ac9f3mpqxsfbv"))))
(build-system pyproject-build-system)
(arguments
(list
#:phases
#~(modify-phases %standard-phases
;; The installed test files contain the /gnu/store location, not the
;; location of the discovered test files from the build directory.
;; The test framework doesn't like this. The easiest way around
;; this mismatch is to jump to the output directory.
(add-before 'check 'check-chdir
(lambda _ (chdir #$output))))))
(propagated-inputs
(list python-click ;XXX required by python-dask
python-cloudpickle
python-dask
python-gatspy
python-joblib
python-numpy
python-pandas
python-scikit-learn
python-scipy
python-toolz))
(native-inputs (list python-cython python-pytest python-setuptools-scm
python-setuptools python-wheel))
(home-page "https://pypi.org/project/cesium/")
(synopsis "Library for time-series feature extraction and processing")
(description
"Cesium is a library for time-series feature extraction and processing.")
(license license:bsd-3)))
(define-public python-cmyt
(package
(name "python-cmyt")
@ -3132,7 +3184,9 @@ zooming windows, star catalog access, cuts, star pick/FWHM, thumbnails, etc.")
"--ignore=glue_astronomy/io/spectral_cube/tests/test_spectral_cube.py"
"--ignore=glue_astronomy/io/spectral_cube/tests/test_spectral_cube.py"
"--ignore=glue_astronomy/translators/tests/test_trace.py"
"--ignore=glue_astronomy/translators/tests/test_trace.py")))
"--ignore=glue_astronomy/translators/tests/test_trace.py"
;; This is a Numpy DeprecationWarning, remove it on next update.
"-k" "not test_spectral_cube_io")))
(propagated-inputs
(list python-astropy
python-glue-core

View file

@ -647,17 +647,25 @@ Filter) modules follow the convention of 1V / Octave.")
"1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
(build-system waf-build-system)
(arguments
`(#:tests? #f ; no check target
#:configure-flags
(list
(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
"--enable-fftw3f"
"--enable-jack"
"--enable-sndfile"
"--enable-samplerate"
"--enable-avcodec")))
(list
#:tests? #f ; no check target
#:configure-flags
#~(list
(string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
"--enable-fftw3f"
"--enable-jack"
"--enable-sndfile"
"--enable-samplerate"
"--enable-avcodec")
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'python3.11-compatibility
(lambda _
(substitute* '("waflib/Context.py"
"waflib/ConfigSet.py")
(("'rU'") "'r'")))))))
(inputs
(list jack-1
(list jack-2
libsndfile
libsamplerate
ffmpeg-4 ;for libavcodec
@ -2664,7 +2672,13 @@ partial release of the General MIDI sound set.")
#:configure-flags
#~(list
;; Add the output lib directory to the RUNPATH.
(string-append "--ldflags=-Wl,-rpath=" #$output "/lib"))))
(string-append "--ldflags=-Wl,-rpath=" #$output "/lib"))
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'python3.11-compatibility
(lambda _
(substitute* "wscript"
(("'rU'") "'r'")))))))
(inputs
(list libsndfile
boost
@ -2872,6 +2886,14 @@ synchronous execution of all clients, and low latency operation.")
#:configure-flags '("--dbus" "--alsa")
#:phases
(modify-phases %standard-phases
;; Python 3.11 has removed the 'U' (universal newline) mode. It has
;; been the default since Python 3.3.
(add-after 'unpack 'python-compatibility
(lambda _
(substitute* '("waflib/Context.py"
"waflib/ConfigSet.py")
(("m='rU'") "m='r'")
(("read\\('rU'") "read('r'"))))
(add-before 'configure 'set-linkflags
(lambda _
;; Ensure -lstdc++ is the tail of LDFLAGS or the simdtests.cpp

View file

@ -1443,7 +1443,9 @@ borgmatic is powered by borg.")
python-pytest-mock
python-pytest-qt
python-pytest-runner
python-setuptools-git))
python-setuptools
python-setuptools-git
python-wheel))
(inputs
(list borg
python-appdirs

View file

@ -402,7 +402,7 @@ setup against another one.")
(define-public python-locust
(package
(name "python-locust")
(version "2.32.5")
(version "2.33.2")
;; The archive on Pypi has no tests.
(source (origin
(method git-fetch)
@ -412,7 +412,7 @@ setup against another one.")
(file-name (git-file-name name version))
(sha256
(base32
"0nmhk2k0mbza9slqgms42s6hsfwwmyr275l90an02qaypx066l1n"))))
"055is6plxjajzp7v5q108n90j5mvdaylpna98kw9zsqn7mvfq7ms"))))
(build-system pyproject-build-system)
(arguments
(list
@ -484,10 +484,21 @@ setup against another one.")
"not test_ramp_up_from_0_to_100_000_users_with_50_user_classes_and_1000_workers_and_5000_spawn_rate"
;; This test fails with "AssertionError:
;; 'stopped' != 'stopping'".
"not test_distributed_shape") " and "))
"not test_distributed_shape"
;; This test fails with AssertionError:
;; "locust [...] != .locust-real"
"not test_invalid_stop_timeout_string"
) " and "))
#:phases
#~(modify-phases %standard-phases
;; The build system attempts to detect the version by spawning git.
(add-after 'unpack 'pretend-version
(lambda _
(substitute* "pyproject.toml"
(("^dynamic = \\[\"version\"\\].*$")
(format #f "version = ~s~%" #$version))
(("^source = \"vcs\".*$")
"source = \"static\"\n"))))
(add-after 'unpack 'fix-version
(lambda _
(let ((tuple (list
@ -518,9 +529,15 @@ version_tuple = __version_tuple__
")))))
(substitute* "pyproject.toml"
(("setuptools = \">=70.0.0\"") "setuptools = \">=67.0.0\"")
(("^version =.*") (string-append "version = \"" #$version "\"\n"))
(("enable = true") "enable = false"))))
(("\"setuptools>=.*\",")
(string-append "\"setuptools>="
#$(package-version
(this-package-input "python-setuptools"))
"\","))
(("^version =.*")
(string-append "version = \"" #$version "\"\n"))
(("enable = true")
"enable = false"))))
(add-before 'check 'increase-resource-limits
(lambda _
;; XXX: Copied from ungoogled-chromium.
@ -552,8 +569,8 @@ version_tuple = __version_tuple__
python-werkzeug))
(native-inputs
(list nss-certs-for-test
python-poetry-core
python-poetry-dynamic-versioning
python-hatchling
python-hatch-vcs
python-pyquery
python-pytest
python-retry))

File diff suppressed because it is too large Load diff

View file

@ -70,6 +70,7 @@
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
@ -79,6 +80,7 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages unicode)
#:use-module (gnu packages version-control)
#:use-module (gnu packages xml)
#:use-module (guix build-system gnu)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python))
@ -436,7 +438,7 @@ other lower-level build files.")))
(define-public scons
(package
(name "scons")
(version "4.4.0")
(version "4.5.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -446,7 +448,7 @@ other lower-level build files.")))
(patches (search-patches "scons-test-environment.patch"))
(sha256
(base32
"1czswx1fj2j48rspkrvarkr43k0vii9rsmz054c9yby1dq362fgr"))))
"1skz1kzhwsp54i71jrsg46rkxwicfici7pq6qmfhlqd5zhrg21zb"))))
(build-system python-build-system)
(arguments
(list
@ -467,7 +469,9 @@ other lower-level build files.")))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "python" "runtest.py" "--all" "--unit-only"))))
;; remove these tests as they require a read/write filesystem
(delete-file "SCons/Variables/PathVariableTests.py")
(invoke "python" "runtest.py" "--all" "--unit-only" ))))
(add-after 'install 'move-manuals
(lambda _
;; XXX: For some reason manuals get installed to the top-level
@ -483,7 +487,7 @@ other lower-level build files.")))
stray-manuals))))))))
(native-inputs
;; TODO: Add 'fop' when available in Guix to generate manuals.
(list python-wheel
(list python-setuptools python-lxml python-wheel
;;For tests.
python-psutil))
(home-page "https://scons.org/")

View file

@ -1027,40 +1027,43 @@ definition language, a safe runtime engine for test suites and a powerful
report generation engine.")
(license license:bsd-3)))
(define-public python-gixy
;; The 0.1.20 release is missing some important fixes.
;; XXX: Commit 'e9008dcbd11f43ccac109b0cf2bf98a94e76b449' breaks tests
;; since it improperly removes an import.
(let ((commit "303eb6887ddecab18138b6e427b04ae77c41d2f1")
(revision "0")
(base-version "0.1.20"))
(package
(name "python-gixy")
(version (git-version base-version revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/yandex/gixy")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0gymjcnvjx9snyrzdbmjnk93ibb161q72xam29vnl3yyac4r1330"))))
(build-system pyproject-build-system)
(native-inputs (list python-nose python-setuptools python-wheel))
(propagated-inputs
(list python-cached-property python-configargparse
python-jinja2 python-six
;; XXX: gixy is incompatible with pyparsing >= 3.x.
;; See <https://github.com/yandex/gixy/pull/132> and
;; <https://github.com/yandex/gixy/pull/122>.
python-pyparsing-2.4.7))
(home-page "https://github.com/yandex/gixy")
(synopsis "Static NGINX configuration analyzer")
(description "Gixy is a static analyzer whose main goal is to help
(define-public python-gixy-ng
(package
(name "python-gixy-ng")
(version "0.2.7")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/dvershinin/gixy")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0dipvy8y1nlhpka0cdk6hyv1j2388y7isbajpwskjrgqc5vayqx8"))))
(build-system pyproject-build-system)
;; This package currently doesn't test properly, but we can't add
;; pytest because it propagates another version of python-pyparsing
;; that takes precedence over the right one.
(propagated-inputs (list python-configargparse
python-jinja2
python-pyparsing-2.4.7
python-six))
(native-inputs (list python-cached-property
python-setuptools
python-wheel))
(home-page "https://github.com/dvershinin/gixy")
(synopsis "Static NGINX configuration analyzer")
(description "Gixy is a static analyzer whose main goal is to help
prevent common NGINX misconfigurations. It provides the @command{gixy}
command.")
(license license:mpl2.0))))
command.
Note: This is an actively maintained fork of the original @code{python-gixy}
package.")
(license license:mpl2.0)))
(define-deprecated/public python-gixy python-gixy-ng
(package/inherit python-gixy-ng
(name "python-gixy")))
(define-public googletest
(package
@ -1413,34 +1416,6 @@ syntax validation, ...
(define-public python-parameterized
(package
(name "python-parameterized")
(version "0.8.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "parameterized" version))
(sha256
(base32 "0p1vhfw552rgd7gb2vy4l4l4k8mnbdz7f3chgzvk0r0qsqvzzfs1"))))
(build-system python-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(if tests?
(invoke "nosetests" "-v")
(format #t "test suite not run~%"))
#t)))))
(native-inputs
(list python-mock python-nose))
(home-page "https://github.com/wolever/parameterized")
(synopsis "Parameterized testing with any Python test framework")
(description
"Parameterized is a Python library that aims to fix parameterized testing
for every Python test framework. It supports nose, py.test, and unittest.")
(license license:bsd-2)))
(define-public python-parameterized-next
(package
(inherit python-parameterized)
(version "0.9.0")
(source
(origin
@ -1450,18 +1425,29 @@ for every Python test framework. It supports nose, py.test, and unittest.")
(base32 "1c89vc40zj5aj2zvbvw875wqpyf0x6xrqhm3q5jg797g5hkhbjbz"))))
(build-system pyproject-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(substitute* "parameterized/test.py"
(("import mock") "from unittest import mock"))
(invoke "python3" "-m" "unittest")))))))
(list
#:test-flags #~(list "parameterized/test.py")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'fix-tests
(lambda _
(substitute* "parameterized/test.py"
;; It's taken from NixOS package definition.
;; <https://github.com/wolever/parameterized/issues/167>,
;; <https://github.com/wolever/parameterized/pull/162>.
(("assert_equal\\(missing, \\[\\])") "")
(("assertRaisesRegexp") "assertRaisesRegex")))))))
(native-inputs
(list python-jinja2
(list python-pytest
python-mock
python-setuptools
python-wheel))))
python-wheel))
(home-page "https://github.com/wolever/parameterized")
(synopsis "Parameterized testing with any Python test framework")
(description
"Parameterized is a Python library that aims to fix parameterized testing
for every Python test framework. It supports nose, py.test, and unittest.")
(license license:bsd-2)))
(define-public python-minimock
(package
@ -2004,35 +1990,29 @@ Python's @code{random.seed}.")
(define-public python-pytest-runner
(package
(name "python-pytest-runner")
(version "6.0.0")
(version "6.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest-runner" version))
(sha256
(base32
"11dnhxnjmh4nf1j8rnvx944ha3wg8ggrgrwdcx4c7d19xmi57n5l"))))
"16zly218ij0n6fxzqsasia3vh9xkzl9w0cs9pwvqy057hnap7m3h"))))
(build-system pyproject-build-system)
(arguments
(list
;; FIXME: The test suite requires 'python-pytest-virtualenv',
;; but that introduces a circular dependency.
#:tests? #f
#:phases
#~(modify-phases %standard-phases
(replace 'build
(lambda _
(let ((circa-1980 (* 10 366 24 60 60)))
(setenv "SOURCE_DATE_EPOCH" (number->string circa-1980))
(invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))))
(replace 'install
(lambda _
(let ((whl (car (find-files "dist" "\\.whl$"))))
(invoke "pip" "--no-cache-dir" "--no-input"
"install" "--no-deps" "--prefix" #$output whl)))))))
#:tests? #f))
(native-inputs
(list python-pip python-pypa-build python-pytest
python-setuptools python-setuptools-scm python-wheel))
(list python-pytest
python-pytest-checkdocs
python-pytest-enabler
;; python-pytest-virtualenv
python-setuptools
python-setuptools-scm
python-types-setuptools
python-wheel))
(home-page "https://github.com/pytest-dev/pytest-runner")
(synopsis "Invoke py.test as a distutils command")
(description
@ -2825,13 +2805,13 @@ instantly.")
(define-public python-crosshair
(package
(name "python-crosshair")
(version "0.0.76")
(version "0.0.84")
(source
(origin
(method url-fetch)
(uri (pypi-uri "crosshair-tool" version))
(sha256
(base32 "1yvbhzs7r85gn4d7drl7p7vi1f5cga1xyy3mzxy3fglyf8kxyakh"))))
(base32 "1j6icn5f206yld9871p7a3v45jg8d8v4bhxh09lq3kzi09gr7maz"))))
(build-system pyproject-build-system)
(arguments
(list
@ -2853,7 +2833,7 @@ instantly.")
(("typing-inspect>=0.7.1") "typing-inspect>=0.6.0")
;; 'sanity-check fails for z3-solver, although it is
;; included in 'propagated-inputs.
(("z3-solver==4.13.0.0") ""))))
(("z3-solver>=4.13.0.0") ""))))
(add-before 'check 'set-test-env
(lambda _
(setenv "PYTHONHASHSEED" "0")))))) ;tests rely on this value
@ -2863,10 +2843,16 @@ instantly.")
python-mypy
python-numpy
python-pytest
python-pytest-xdist))
python-pytest-xdist
python-setuptools
python-wheel))
(propagated-inputs
(list python-typeshed-client
(list python-importlib-metadata
python-packaging
;; python-pygls
python-typeshed-client
python-typing-inspect
python-typing-extensions
z3))
(home-page "https://crosshair.readthedocs.io")
(synopsis "Analysis tool for Python using symbolic execution")
@ -3132,39 +3118,6 @@ produces a given output. As mypy can be told to display the type of an
expression this allows you to check mypys type interference.")
(license (list license:expat license:asl2.0))))
(define-public python-pytest-pep8
(package
(name "python-pytest-pep8")
(version "1.0.6")
(source (origin
(method url-fetch)
(uri (pypi-uri "pytest-pep8" version))
(sha256
(base32
"06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-dependencies
(lambda _
(substitute* "setup.py"
(("'pytest-cache', ") "")))) ; Included in recent pytest
(replace 'check
(lambda* (#:key tests? inputs outputs #:allow-other-keys)
(when tests?
(add-installed-pythonpath inputs outputs)
(invoke "pytest" "-v")))))))
(native-inputs
(list python-pytest))
(propagated-inputs
(list python-pep8))
(home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
(synopsis "Py.test plugin to check PEP8 requirements")
(description "Pytest plugin for checking PEP8 compliance.")
(license license:expat)))
(define-public python-pytest-perf
(package
(name "python-pytest-perf")
@ -3231,19 +3184,13 @@ each of the environments.")
(sha256
(base32
"0959qfxb4ayvfxvmpargvh4zfhwdq5l77gczhzv33bhmfblk8ccm"))))
(build-system python-build-system)
(build-system pyproject-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'check)
(add-after 'install 'check
(lambda* (#:key outputs inputs #:allow-other-keys)
;; It's easier to run tests after install.
;; Make installed package available for running the tests
(add-installed-pythonpath inputs outputs)
(invoke "py.test" "-vv" "-k" "not test_syntax_error"))))))
(list
#:test-flags
'(list "-k" "not test_syntax_error")))
(native-inputs
(list python-coverage python-pytest python-pytest-pep8))
(list python-coverage python-pytest python-setuptools python-wheel))
(propagated-inputs
(list python-pyflakes))
(home-page "https://github.com/fschulze/pytest-flakes")
@ -3485,7 +3432,6 @@ backported from Python 2.7 for Python 2.4+.")
(build-system pyproject-build-system)
(native-inputs
(list python-mock
python-nose
python-assertpy
python-pathpy
python-pyhamcrest
@ -3541,37 +3487,6 @@ tests written in a natural language style, backed up by Python code.")
JSON APIs with Behave.")
(license license:expat)))
(define-public python-rednose
(package
(name "python-rednose")
(version "1.2.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "rednose" version))
(sha256
(base32
"11x5nx5b4wdq04s7vj1gcdl07jvvkfb37p0r5lg773gr5rr8mj6h"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-setup.py
(lambda _
;; Six is only required for tests and later versions
;; work fine.
(substitute* "setup.py"
(("six==1.10.0") "six"))
#t)))))
(propagated-inputs
(list python-colorama python-termstyle))
(native-inputs
(list python-six python-nose))
(home-page "https://github.com/JBKahn/rednose")
(synopsis "Colored output for Python nosetests")
(description "This package provides colored output for the
@command{nosetests} command of the Python Nose unit test framework.")
(license license:bsd-3)))
(define-public python-nose-exclude
(package
(name "python-nose-exclude")
@ -3632,30 +3547,6 @@ running your code against a large number of randomly generated input
scenarios.")
(license license:expat)))
(define-public python-nose-randomly
(package
(name "python-nose-randomly")
(version "1.2.6")
(source
(origin
(method url-fetch)
(uri (pypi-uri "nose-randomly" version))
(sha256
(base32 "0z662rqhfk4bjmg806mn4frb8nz4gbh7mrddsrhfffp1g4yklj3y"))))
(build-system python-build-system)
(native-inputs
(list python-nose python-numpy))
(home-page "https://github.com/adamchainz/nose-randomly")
(synopsis
"Nose plugin to randomly order tests and control random.seed")
(description
"This is a @code{Nose} plugin to randomly order tests which can be quite
powerful in discovering hidden flaws in the tests themselves, while helping to
reduce inter-test dependencies. It also helps in controlling @code{random.seed},
by resetting it to a repeatable number for each test, enabling the tests to
create data based on random numbers and yet remain repeatable.")
(license license:bsd-3)))
(define-public python-nose-timer
(package
(name "python-nose-timer")
@ -4398,23 +4289,25 @@ directories and files.")
(define-public python-pytest-regressions
(package
(name "python-pytest-regressions")
(version "2.5.0")
(version "2.7.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest-regressions" version))
(uri (pypi-uri "pytest_regressions" version))
(sha256
(base32 "1nbg20m83jsj9p12fm4qn5b7hc3vqb5h5fzfi6zvmwygq627i341"))))
(base32 "0pph1935rq180ax0szwwf3c6zq2v40snypagr49914i31570cc2c"))))
(build-system pyproject-build-system)
(arguments
(list
;; Do not fail on warning.
;; DeprecationWarning: module 'sre_constants' is deprecated
#:test-flags #~(list "-W" "ignore::DeprecationWarning")))
(native-inputs
(list python-matplotlib
python-numpy
(list python-numpy
python-pandas
python-pillow
python-restructuredtext-lint
python-pytest
python-setuptools
python-setuptools-scm
python-pytest))
python-setuptools-scm))
(propagated-inputs
(list python-pytest-datadir
python-pyyaml))

View file

@ -8,7 +8,7 @@
;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
;;; Copyright © 2020, 2021, 2023, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020, 2021, 2023, 2024, 2025 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020, 2021, 2022, 2024 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
@ -45,6 +45,7 @@
;;; Copyright © 2025 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2025 Sergio Pastor Pérez <sergio.pastorperez@gmail.com>
;;; Copyright © 2025 Ashish SHUKLA <ashish.is@lostca.se>
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1549,7 +1550,7 @@ tools:
;; header
(package
(name "cpp-httplib")
(version "0.18.5")
(version "0.20.0")
(source
(origin
(method git-fetch)
@ -1557,7 +1558,7 @@ tools:
(url "https://github.com/yhirose/cpp-httplib")
(commit (string-append "v" version))))
(sha256
(base32 "1jc31n4xdrknal4i1dvf8j6j9kafpczi0w5gbbi89xlir9dgm5kp"))
(base32 "0w5klyfsaws793xb0cbkjxg7lwrdm6f3m4z4v7pzkwl957f9q70m"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
@ -1606,7 +1607,7 @@ library.")
(define-public cpplint
(package
(name "cpplint")
(version "1.5.5")
(version "2.0.0")
(source
(origin
(method git-fetch)
@ -1616,7 +1617,7 @@ library.")
(url "https://github.com/cpplint/cpplint")
(commit version)))
(sha256
(base32 "13l86aq0h1jga949k79k9x3hw2xqchjc162sclg2f99vz98zcz15"))
(base32 "06km4wh4944az1hk61g5w8pjhbvbccpgarz1dy7vhwkhfvmvggnk"))
(file-name (git-file-name name version))))
(build-system pyproject-build-system)
(arguments
@ -1625,6 +1626,11 @@ library.")
,@%pyproject-build-system-modules)
#:phases
#~(modify-phases (@ (guix build pyproject-build-system) %standard-phases)
(add-after 'unpack 'patch-build-system
(lambda _
(substitute* "pyproject.toml"
(("setuptools\\.build_meta:__legacy__")
"setuptools.build_meta"))))
(add-before 'wrap 'reduce-GUIX_PYTHONPATH
(lambda _
;; Hide the transitive native inputs from GUIX_PYTHONPATH
@ -1651,9 +1657,11 @@ library.")
(getenv "TMP_PYTHONPATH")))))))
(native-inputs
(list python-coverage
python-parameterized
python-pytest
python-pytest-cov
python-pytest-runner
python-pytest-timeout
python-setuptools
python-testfixtures
python-wheel))
@ -2614,6 +2622,40 @@ union, difference & exclusive-or, and line & polygon offsetting.
The library is based on Vatti's clipping algorithm.")
(license license:boost1.0)))
(define-public clipper2
(package
(inherit clipper)
(name "clipper2")
(version "1.5.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/AngusJohnson/Clipper2")
(commit (string-append "Clipper2_" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1w8cmx712k45cb8gh9dakmbmybiwdx8c0b45mwpcldywx2lwxi2j"))
(modules '((guix build utils)))
(snippet #~(for-each
delete-file-recursively
'("CSharp" "DLL" "Delphi")))))
(build-system cmake-build-system)
(arguments
(list
#:configure-flags
#~(list "-DUSE_EXTERNAL_GTEST=ON"
"-DCLIPPER2_EXAMPLES=OFF")
#:phases #~(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _
(chdir "CPP"))))))
(native-inputs (list googletest))
(home-page "https://github.com/AngusJohnson/Clipper2")
(description
(string-append (package-description clipper) "\
Note: This package is a major update of the original clipper library."))))
(define-public pcg-cpp
(let ((commit "ffd522e7188bef30a00c74dc7eb9de5faff90092")
(revision "2"))
@ -3754,6 +3796,26 @@ file name and location, as well as filters with friendly names (such as
\"source files\" or \"image files\") where supported.")
(license license:zlib)))
(define-public string-view-lite
(package
(name "string-view-lite")
(version "1.8.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/martinmoene/string-view-lite")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1mfp3lmqx7ac0545akxd2v05rrapa3byz8q4gb9rqy94pcqbfyc5"))))
(build-system cmake-build-system)
(home-page "https://github.com/martinmoene/string-view-lite")
(synopsis "C++17 string-view for older C++")
(description "This package provides a compatibility header-only library
for C++17 string-view.")
(license license:boost1.0)))
(define-public tsl-hopscotch-map
(package
(name "tsl-hopscotch-map")

View file

@ -47545,8 +47545,45 @@ without performing I/O.")
("rust-rustversion" ,rust-rustversion-1)
("rust-tempfile" ,rust-tempfile-3))))))
(define-public rust-notify-7
(package
(name "rust-notify")
(version "7.0.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "notify" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "02a0a1n0raxqslwhfprwmz7w34v54r42006q0m8bmy89jz1v8cy5"))))
(build-system cargo-build-system)
(arguments
(list
#:cargo-inputs (list rust-bitflags-2
rust-crossbeam-channel-0.5
rust-filetime-0.2
rust-fsevent-sys-4
rust-inotify-0.10
rust-kqueue-1
rust-libc-0.2
rust-log-0.4
rust-mio-1
rust-notify-types-1
rust-walkdir-2
rust-windows-sys-0.52)
#:cargo-development-inputs (list rust-insta-1
rust-nix-0.27
rust-serde-json-1
rust-tempfile-3)))
(home-page "https://github.com/notify-rs/notify")
(synopsis "Cross-platform filesystem notification library")
(description "This package contains a cross-platform filesystem
notification library.")
(license license:cc0)))
(define-public rust-notify-6
(package
(inherit rust-notify-7)
(name "rust-notify")
(version "6.1.1")
(source
@ -47556,7 +47593,6 @@ without performing I/O.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "0bad98r0ilkhhq2jg3zs11zcqasgbvxia8224wpasm74n65vs1b2"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-bitflags" ,rust-bitflags-2)
("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
@ -47572,12 +47608,7 @@ without performing I/O.")
("rust-windows-sys" ,rust-windows-sys-0.48))
#:cargo-development-inputs (("rust-nix" ,rust-nix-0.23)
("rust-serde-json" ,rust-serde-json-1)
("rust-tempfile" ,rust-tempfile-3))))
(home-page "https://github.com/notify-rs/notify")
(synopsis "Cross-platform filesystem notification library")
(description "This package contains a cross-platform filesystem
notification library.")
(license license:cc0)))
("rust-tempfile" ,rust-tempfile-3))))))
(define-public rust-notify-5
(package
@ -47740,6 +47771,29 @@ client and server")
Rust dbus client and server.")
(license (list license:expat license:asl2.0))))
(define-public rust-notify-types-1
(package
(name "rust-notify-types")
(version "1.0.1")
(source
(origin
(method url-fetch)
(uri (crate-uri "notify-types" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "0x5idrpxzf70ng88rz28dqmgx1jyddf0vxx1x3csw09fw6skqpaq"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-instant" ,rust-instant-0.1)
("rust-serde" ,rust-serde-1))
#:cargo-development-inputs (("rust-insta" ,rust-insta-1)
("rust-rstest" ,rust-rstest-0.21)
("rust-serde-json" ,rust-serde-json-1))))
(home-page "https://github.com/notify-rs/notify")
(synopsis "Types used by the notify crate")
(description "This package provides rust types used by the notify crate.")
(license (list license:expat license:asl2.0))))
(define-public rust-notmuch-0.8
(package
(name "rust-notmuch")

View file

@ -3,6 +3,7 @@
;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 c4droid <c4droid@foxmail.com>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,9 +31,11 @@
#:use-module (gnu packages engineering)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-compression)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages time)
#:use-module (gnu packages bioinformatics) ;python-intervaltree
#:use-module (gnu packages emulators))
@ -123,24 +126,26 @@ chains of gadgets to execute system calls.")
(define-public pwntools
(package
(name "pwntools")
(version "4.4.0")
(version "4.15.0b1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pwntools" version))
(sha256
(base32
"1qw7j0wwm1878aia08gyw5xljjr26qsbp45w65n4qff672sha5n5"))))
"091fsk9rvbjkcsp8mmww0ka26dvznmj4pbqwaiygcw90g3v94zgd"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ;XXX: needs a specific version of unicorn
(propagated-inputs
(list capstone
python-colored-traceback
python-dateutil
python-intervaltree
python-mako
python-packaging
python-paramiko
python-pathlib2
python-psutil
python-pyelftools
python-pygments
@ -148,9 +153,14 @@ chains of gadgets to execute system calls.")
python-pysocks
python-requests
ropgadget
python-rpyc
python-six
python-sortedcontainers
python-unix-ar
python-zstandard
unicorn))
(native-inputs
(list python-setuptools python-toml python-wheel))
(home-page "https://github.com/Gallopsled/pwntools")
(synopsis
"Capture-the-flag (CTF) framework and exploit development library")

View file

@ -3371,20 +3371,24 @@ coroutine-specific markup.")
(define-public python-asyncpg
(package
(name "python-asyncpg")
(version "0.25.0")
(version "0.30.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "asyncpg" version))
(sha256
(base32 "0h1573lp4607nppflnnjrhn7yrfy6i54cm98gi4qbcikjykfdy33"))))
(build-system python-build-system)
(propagated-inputs (list python-typing-extensions))
(base32 "0lf8xbrsb2ycpqx1vzlb05p48g5sh9zq24a8yh17cw5nia9fjlf5"))))
(build-system pyproject-build-system)
(native-inputs
(list postgresql
python-cython
python-pytest
python-uvloop))
python-uvloop
python-distro
python-setuptools
python-wheel))
(propagated-inputs
(list python-async-timeout))
(home-page "https://github.com/MagicStack/asyncpg")
(synopsis "Fast PostgreSQL database client library for Python")
(description "@code{asyncpg} is a database interface library designed
@ -4574,7 +4578,11 @@ reasonable substitute.")
"test_tfunction_load_delete"
"test_tfunction_list"
;; AssertionError: assert 3 == 2
"test_acl_list")
"test_acl_list"
;; XXX: This test occasionally fails on i686-linux
#$@(if (target-x86-32?)
'("test_geopos")
'()))
" and not "))
#:phases
#~(modify-phases %standard-phases
@ -4608,7 +4616,7 @@ reasonable substitute.")
(define-public python-rq
(package
(name "python-rq")
(version "1.11.1")
(version "2.3.1")
(source
(origin
(method git-fetch)
@ -4617,24 +4625,20 @@ reasonable substitute.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0dnjm2s036l4j4ypq0h903vh132dp2wiwjrn8jicz1nw829dqpzf"))))
(build-system python-build-system)
(base32 "1w9aqvbvh1mfpgng0mdcskxl5y3ybcqqai5dnwgvg18am0xxhya6"))))
(build-system pyproject-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(add-before 'check 'start-redis
(lambda _
(invoke "redis-server" "--daemonize" "yes")))
(replace 'check
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; Drop test that needs the SDK for Sentry.io.
(delete-file "tests/test_sentry.py")
;; Ensure 'rq' and 'rqworker' ends up on PATH.
(setenv "PATH" (string-append out "/bin:"
(getenv "PATH")))
(invoke "pytest" "-vv")))))))
(list
#:phases #~(modify-phases %standard-phases
(add-before 'check 'start-redis
(lambda _
(invoke "redis-server" "--daemonize" "yes"))))))
(native-inputs
(list python-mock python-psutil python-pytest redis))
(list python-hatchling
python-mock
python-psutil
python-pytest
redis))
(propagated-inputs
(list python-click python-redis))
(home-page "https://python-rq.org/")
@ -4648,7 +4652,7 @@ is designed to have a low barrier to entry.")
(define-public python-rq-scheduler
(package
(name "python-rq-scheduler")
(version "0.10.0")
(version "0.14")
(home-page "https://github.com/rq/rq-scheduler")
(source (origin
(method git-fetch)
@ -4658,21 +4662,30 @@ is designed to have a low barrier to entry.")
(file-name (git-file-name name version))
(sha256
(base32
"0xg6yazqs5kbr2ayvhvljs1h5vgx5k5dds613fmhswln7gglf9hk"))))
(build-system python-build-system)
"09fh9m2vcl1jndq35xp1x0j8ih009r71qmhn2pkl93fykrqfavyn"))))
(build-system pyproject-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(add-before 'check 'start-redis
(lambda _
(invoke "redis-server" "--daemonize" "yes")))
(replace 'check
(lambda _
(substitute* "run_tests.py"
(("/usr/bin/env")
(which "env")))
(invoke "./run_tests.py"))))))
(list
#:test-flags
#~(list "-k" (string-append "not test_cron"
" and not test_job_creation_with"
" and not test_job_with_crontab"))
#:phases #~(modify-phases %standard-phases
(add-before 'check 'start-redis
(lambda _
(invoke "redis-server" "--daemonize" "yes")))
(add-after 'unpack 'loosen-requirements
(lambda _
(substitute* "setup.py"
(("crontab>=[0-9.]*")
"python-crontab")))))))
(native-inputs
(list redis which))
(list python-crontab
python-freezegun
python-pytest
python-setuptools
python-wheel
redis))
(propagated-inputs
(list python-croniter python-rq))
(synopsis "Job scheduling capabilities for RQ (Redis Queue)")
@ -4724,14 +4737,15 @@ provides support for parsing, splitting and formatting SQL statements.")
(define-public python-sql
(package
(name "python-sql")
(version "1.3.0")
(version "1.5.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-sql" version))
(uri (pypi-uri "python_sql" version))
(sha256
(base32 "0xnimfzlxj1ddrb5xj3s4gaii278a0gpxrvwmdmrdxgjfdi3lq4x"))))
(build-system python-build-system)
(base32 "0dnd0vai9z1fjkppv2xv2f4vlwwz0dqa137f39mrbjw744vm4pvk"))))
(build-system pyproject-build-system)
(native-inputs (list python-setuptools python-wheel))
(home-page "https://python-sql.tryton.org/")
(synopsis "Library to write SQL queries in a pythonic way")
(description "@code{python-sql} is a library to write SQL queries, that
@ -5359,7 +5373,7 @@ other traditional Python scientific computing packages.")
(define-public python-fastparquet
(package
(name "python-fastparquet")
(version "2024.2.0")
(version "2024.11.0")
(source
(origin
;; Fastparquet uses setuptools-scm to find the current version. This
@ -5372,7 +5386,7 @@ other traditional Python scientific computing packages.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0f32dj1xvd11l0siznqd33dpjlhg9siylcjcfkcdlqfcy45jfj3v"))))
(base32 "0dhmyag06d073g1q58npbcikr9hjd6jgf05721gkl6m1gsprv7hq"))))
(build-system pyproject-build-system)
(arguments
(list
@ -5398,6 +5412,13 @@ other traditional Python scientific computing packages.")
;; Cython extensions need to be built for the check phase.
(lambda _
(invoke "python" "setup.py" "build_ext" "--inplace"))))))
(native-inputs
(list python-cython
python-pytest
python-pytest-xdist
python-setuptools
python-setuptools-scm
python-wheel))
(propagated-inputs
(list python-cramjam
python-fsspec
@ -5405,11 +5426,6 @@ other traditional Python scientific computing packages.")
python-numpy
python-packaging
python-pandas))
(native-inputs
(list python-cython
python-pytest-runner
python-pytest-xdist
python-setuptools-scm))
(home-page "https://github.com/dask/fastparquet")
(synopsis "Python implementation of the Parquet file format")
(description

View file

@ -148,26 +148,10 @@ to the @dfn{don't repeat yourself} (DRY) principle.")
;; This CVE seems fixed since 4.2.1.
(lint-hidden-cve . ("CVE-2023-31047"))))))
(define-public python-django-3.2
(package
(inherit python-django-4.2)
(version "3.2.21")
(source (origin
(method url-fetch)
(uri (pypi-uri "Django" version))
(sha256
(base32
"0g3zm2glh76g31q06g6fwkwvkrphjj3mnap5sgk1hx3v9r44rpm5"))))
(native-search-paths '()) ;no need for TZDIR
(propagated-inputs
(modify-inputs (package-propagated-inputs python-django-4.2)
;; Django 4.0 deprecated pytz in favor of Pythons built-in zoneinfo.
(append python-pytz)))))
;; archivebox requires django>=3.1.3,<3.2
(define-public python-django-3.1.14
(package
(inherit python-django-3.2)
(inherit python-django-4.2)
(version "3.1.14")
(source (origin
(method url-fetch)
@ -176,7 +160,7 @@ to the @dfn{don't repeat yourself} (DRY) principle.")
(base32
"0ix3v2wlnplv78zxjrlw8z3hiap2d5mxvk0ny2fc65526shsb93j"))))
(propagated-inputs
(modify-inputs (package-propagated-inputs python-django-3.2)
(modify-inputs (package-propagated-inputs python-django-4.2)
;; Django 4.0 deprecated pytz in favor of Pythons built-in zoneinfo.
(append python-pytz)))))
@ -1055,39 +1039,41 @@ support, and optional data-URI image and font embedding.")
(define-public python-django-rq
(package
(name "python-django-rq")
(version "2.7.0")
(version "3.0.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "django-rq" version))
(sha256
(base32
"0aw0fi0lg80qgdp9fhjbnlhvfh2p09rgy1nj6hxpyhi37kihni2h"))))
"1b371w4cdjlz83i2sg4gpx0z3svl3bfrn6zfy661374hv62xpnkv"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
#~(list "-k" "not test_scheduled_jobs and not test_started_jobs")
#:phases
'(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "redis-server" "--daemonize" "yes")
(invoke "django-admin" "test" "django_rq"
"--settings=django_rq.tests.settings"
"--pythonpath=.")))))))
#~(modify-phases %standard-phases
(add-before 'check 'pre-check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "redis-server" "--daemonize" "yes")
(setenv "DJANGO_SETTINGS_MODULE" "django_rq.tests.settings")
(setenv "PYTHONPATH" (getcwd))))))))
(native-inputs
(list python-django-redis
python-mock
python-pytest
python-pytest-django
python-rq-scheduler
python-setuptools
python-wheel
redis
tzdata-for-tests))
(propagated-inputs
(list python-django python-rq))
(list python-django python-redis python-rq python-pyaml))
(home-page "https://github.com/ui/django-rq")
(synopsis "Django integration with RQ")
(description
"Django integration with RQ, a Redis based Python queuing library.
"Django integration with RQ, a Redis based Python queuing library.
Django-RQ is a simple app that allows you to configure your queues in django's
settings.py and easily use them in your project.")
(license license:expat)))

View file

@ -41,6 +41,7 @@
#:use-module (guix build-system copy)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system qt)
#:use-module (guix deprecation)
#:use-module (guix utils)
@ -51,6 +52,7 @@
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages bison)
#:use-module (gnu packages kde-frameworks)
@ -315,6 +317,8 @@ format, and supports the file types JPG, GIF, TIFF, PNG, and PNM for embedded
objects.")
(license license:artistic2.0)))
;; XXX: This project looks not maintained, and some tests fail to pass, see
;; <https://github.com/spyder-ide/docrepr/issues/49>.
(define-public python-docrepr
(package
(name "python-docrepr")
@ -329,9 +333,10 @@ objects.")
(base32
"1ma5gwy93m1djd3zdlnqfrwhgr8ic1qbsz5kkrb9f987ax40lfkd"))
(patches (search-patches "python-docrepr-fix-tests.patch"))))
(build-system python-build-system)
(build-system pyproject-build-system)
(arguments
(list
#:tests? #f ; all tests fail
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-sources
@ -344,17 +349,13 @@ objects.")
;; https://github.com/spyder-ide/docrepr/issues/54).
(substitute* "docrepr/utils.py"
(("except TypeError")
"except (TypeError, shutil.Error)"))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "pytest" "-p" "no:warnings" "-vv")))))))
"except (TypeError, shutil.Error)")))))))
(native-inputs
(list python-ipython
python-matplotlib
python-numpy
python-pytest
python-pytest-asyncio))
python-setuptools
python-wheel))
(propagated-inputs
(list python-docutils
python-jinja2

View file

@ -249,7 +249,7 @@ tags = [\"WS_X11\"]")
(string-append "[tool.sip.project]
sip-include-dirs = [\""
#$(this-package-input "python-pyqt")
"/lib/python3.10/site-packages/PyQt5/bindings\"]")))
"/lib/python3.11/site-packages/PyQt5/bindings\"]")))
(substitute* "src/calibre/ebooks/pdf/pdftohtml.py"
(("PDFTOHTML = 'pdftohtml'")
(string-append "PDFTOHTML = \""

View file

@ -3138,7 +3138,9 @@ Microwave engineering.")
python-scipy
python-sympy
python-wheel))
(native-inputs (list python-pytest))
(native-inputs (list python-pytest
python-setuptools
python-wheel))
(home-page "https://github.com/mph-/lcapy")
(synopsis "Symbolic linear circuit analysis")
(description "Lcapy is a Python package for linear circuit analysis. It
@ -5188,22 +5190,23 @@ more.")
(package
(name "python-asyncua")
(version "1.1.5")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/FreeOpcUa/opcua-asyncio.git")
(commit (string-append "v" version))
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
(base32
"0aisj8cpfhq50h4pv2p0c9iw5cqy3hxhn5adp8wd01c46dhg6y2x"))))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/FreeOpcUa/opcua-asyncio.git")
(commit (string-append "v" version))
;; XXX: It clones <https://github.com/OPCFoundation/UA-Nodeset>
;; submodule, check if it may be unbundled.
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
(base32 "0aisj8cpfhq50h4pv2p0c9iw5cqy3hxhn5adp8wd01c46dhg6y2x"))))
(build-system pyproject-build-system)
(native-inputs
(list python-asynctest
(list python-pytest
python-pytest-asyncio-0.21
python-pytest-mock
python-pytest-runner
python-setuptools
python-wheel))
(propagated-inputs
@ -5342,7 +5345,7 @@ and mogan.")
(("'\" [+] python_path [+]")
(string-append "'\" + std::string(\""
(assoc-ref outputs "out")
"/lib/python3.10/site-packages"
"/lib/python3.11/site-packages"
"\") +")))))
(add-before 'check 'prepare-checks
(lambda _

View file

@ -2035,33 +2035,6 @@ compatible directories.")
(home-page "https://github.com/trapexit/mergerfs-tools")
(license license:isc))))
(define-public python-dropbox
(package
(name "python-dropbox")
(version "12.0.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "dropbox" version))
(sha256
(base32 "0qlrc2ykl7zmv808apqv5ycfzrwnm13ngz1daizh9kszmpapy1ah"))
(snippet
'(begin
(use-modules (guix build utils))
(substitute* "setup.py"
(("pytest-runner==5\\.2\\.0") "pytest-runner"))))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; Tests not included in the release tarball.
(native-inputs
(list python-pytest python-pytest-runner))
(propagated-inputs
(list python-requests python-six python-stone))
(home-page "https://www.dropbox.com/developers")
(synopsis "Official Dropbox API Client")
(description "This package provides a Python SDK for integrating with the
Dropbox API v2.")
(license license:expat)))
(define-public dbxfs
(package
(name "dbxfs")

View file

@ -1039,15 +1039,23 @@ of Bitcoin BIP-0039.")
(package
(name "python-u2flib-host")
(version "3.0.3")
(source (origin
(method url-fetch)
(uri (pypi-uri "python-u2flib-host" version))
(sha256
(base32
"02pwafd5kyjpc310ys0pgnd0adff1laz18naxxwsfrllqafqnrxb"))))
(build-system python-build-system)
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-u2flib-host" version))
(sha256
(base32 "02pwafd5kyjpc310ys0pgnd0adff1laz18naxxwsfrllqafqnrxb"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
#~(list
"--deselect=test/test_soft.py::TestSoftU2FDevice::test_registeration"
"--deselect=test/test_reg_auth.py::TestRegister::test_register" "-k"
"not test_forget")))
(propagated-inputs (list python-hidapi python-requests))
(native-inputs (list python-cryptography))
(native-inputs (list python-cryptography python-pytest python-setuptools
python-wheel))
(home-page "https://github.com/Yubico/python-u2flib-host")
(synopsis "Python based U2F host library")
(description
@ -1059,32 +1067,36 @@ of Bitcoin BIP-0039.")
(name "python-ledgerblue")
(version "0.1.54")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ledgerblue" version))
(sha256
(base32
"0ghpvxgih1zarp788qi1xh5xmprv6yhaxglfbix4974i7r4pszqy"))))
(origin
(method url-fetch)
(uri (pypi-uri "ledgerblue" version))
(sha256
(base32 "0ghpvxgih1zarp788qi1xh5xmprv6yhaxglfbix4974i7r4pszqy"))))
(build-system pyproject-build-system)
(arguments
`(#:tests? #f)) ; no tests
(native-inputs
(list python-setuptools python-wheel))
(propagated-inputs
(list python-bleak
python-pyelftools
python-pycryptodome
python-ecpy
python-future
python-gnupg
python-hidapi
python-nfcpy
python-pillow
python-protobuf
python-pycryptodomex
python-pyscard
python-u2flib-host
python-websocket-client))
(list
#:tests? #f
#:phases
#~(modify-phases %standard-phases
(add-before 'build 'pretend-version
(lambda _
(setenv "SETUPTOOLS_SCM_PRETEND_VERSION"
#$version))))))
(native-inputs (list python-setuptools python-setuptools-scm python-wheel))
(propagated-inputs (list python-bleak
python-pyelftools
python-pycryptodome
python-ecpy
python-future
python-gnupg
python-hidapi
python-nfcpy
python-pillow
python-protobuf
python-pycryptodomex
python-pyscard
python-u2flib-host
python-websocket-client))
(home-page "https://github.com/LedgerHQ/blue-loader-python")
(synopsis "Python library to communicate with Ledger Blue/Nano S")
(description "@code{ledgerblue} is a Python library to communicate with
@ -1216,9 +1228,11 @@ the KeepKey Hardware Wallet.")
(sha256
(base32
"03zj602m2rln9yvr08dswy56vzkbldp8b074ixwzz525dafblr92"))))
(build-system python-build-system)
(build-system pyproject-build-system)
(inputs
(list python-ledgerblue python-trezor-agent))
(native-inputs
(list python-setuptools python-wheel))
(home-page "https://github.com/romanz/trezor-agent")
(synopsis "Ledger as hardware SSH/GPG agent")
(description "This package allows using Ledger as hardware SSH/GPG agent.")
@ -1414,42 +1428,22 @@ Luhn and family of ISO/IEC 7064 check digit algorithms.")
(define-public python-duniterpy
(package
(name "python-duniterpy")
(version "1.1.1")
(version "1.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "duniterpy" version))
(method git-fetch)
(uri (git-reference
(url "https://git.duniter.org/clients/python/duniterpy")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0h0fsawsrjd50lb1bkysb21ph39qlhmiymd3r5vs695qxvbwaqaa"))))
(base32 "1ysh9b5lzg053hv4iw3zbn7hid05qssiwmrl8sir8qlk958r8x60"))))
(build-system pyproject-build-system)
(arguments
;; FIXME: Tests fail with: "TypeError: block_uid() missing 1 required
;; positional argument: 'value'".
`(#:tests? #f
#:phases (modify-phases %standard-phases
(add-after 'unpack 'loosen-requirements
(lambda _
(substitute* "pyproject.toml"
(("mnemonic = \"\\^0\\.19")
"mnemonic = \">=0.19")
(("jsonschema = \"\\^3\\.2")
"jsonschema = \">=3.2"))))
(add-after 'unpack 'adjust-for-new-libnacl
(lambda _
;; Mimic upstream commit ad8f6a26e9e7067; remove
;; for newer versions of duniterpy.
(substitute* "pyproject.toml"
(("libnacl = \"1\\.8")
"libnacl = \">=1.9"))
(substitute* "duniterpy/key/ascii_armor.py"
(("from libnacl\\.version import version as libnacl_version")
"import importlib.metadata
libnacl_version = importlib.metadata.version('libnacl')")))))))
(native-inputs
(list python-poetry-core))
(list python-poetry-core-next
python-pytest))
(propagated-inputs
(list python-attrs
python-base58
(list python-base58
python-graphql-core
python-jsonschema
python-libnacl

View file

@ -505,14 +505,19 @@ subroutinizer for fontTools.")
(uri (pypi-uri "cu2qu" version ".zip"))
(sha256
(base32 "1x762r7bf39g6aivfvrmq00h6f07abvs9x1xm0fz8l81vq8jz64c"))))
(build-system python-build-system)
(build-system pyproject-build-system)
(arguments
;; XXX: Try to remove it when updating python-fonttools.
(list #:test-flags #~(list "-k" "not test_ignore_single_points")))
(propagated-inputs (list python-fonttools))
(native-inputs
(list python-cython
python-defcon
python-pytest
python-pytest-runner
python-setuptools
python-setuptools-scm
python-wheel
unzip))
(home-page "https://github.com/googlefonts/cu2qu")
(synopsis "Cubic-to-quadratic bezier curve conversion")

View file

@ -68,6 +68,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (guix build-system perl)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system qt)
@ -128,6 +129,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages polkit)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
@ -789,7 +791,7 @@ other applications that need to directly deal with input devices.")
(define-public libei
(package
(name "libei")
(version "1.3.0")
(version "1.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -797,7 +799,7 @@ other applications that need to directly deal with input devices.")
(commit version)))
(sha256
(base32
"0idbl20ax060s7m435rszfv7c0bvpinjvq45qbqwvcvp0hg8r9y8"))
"04ll43616pyfm7c835azdggx9x3vfykpcg3pzmsfz4f2vl5whalm"))
(snippet
#~(begin
(use-modules (guix build utils))
@ -819,17 +821,18 @@ other applications that need to directly deal with input devices.")
;; liboeffis-1.0.pc requires.private libelogind
(list elogind))
(native-inputs
(list doxygen
(list dbus
doxygen
libxml2
munit
pkg-config
python
python-attrs
python-black
python-dbusmock
python-jinja2
python-pytest
python-structlog
python-pyaml
valgrind/interactive))
(home-page "https://libinput.pages.freedesktop.org/libei/")
(synopsis "Emulated Input protocol implementation")
@ -2872,17 +2875,19 @@ encoding names are iconv-compatible.")
(define-public python-cchardet
(package
(name "python-cchardet")
(version "2.1.7")
(version "2.2.0a2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cchardet" version))
(sha256
(base32
"1bqfz85cd51sw0bvhvdq9ikccxi2ld7g5jpni4jkq1a5clrvca64"))))
(build-system python-build-system)
"08wq5yfaafbjipabfc6kpyvivkk2394w7isv0mwx5agcf8cbnwnx"))))
(build-system pyproject-build-system)
(inputs
(list uchardet))
(native-inputs
(list python-setuptools python-wheel))
(home-page "https://github.com/PyYoshi/cChardet")
(synopsis "High-performance character encoding detection for Python")
(description "cChardet is a character encoding detector, written in

View file

@ -67,10 +67,10 @@
#:use-module (gnu packages ibus)
#:use-module (gnu packages inkscape)
#:use-module (gnu packages image)
#:use-module (gnu packages maths)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-science)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages ssh)
#:use-module (gnu packages tls)

View file

@ -7479,60 +7479,6 @@ almost all of them.")
principles are simplicity and standards compliance.")
(license license:gpl2+)))
(define-public d-feet
(package
(name "d-feet")
(version "0.3.16")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"1jqw5ndpgyb0zxh0g21ai1911lfrm56vz18xbccfqm4sk95wwcw7"))
(patches
(search-patches "d-feet-drop-unused-meson-argument.patch"))))
(build-system meson-build-system)
(arguments
(list
#:glib-or-gtk? #t
#:phases
#~(modify-phases %standard-phases
(add-before 'check 'pre-check
(lambda _
;; The test suite requires a running X server.
(system "Xvfb :1 &")
(setenv "DISPLAY" ":1")))
(add-before 'install 'disable-gtk-update-icon-cache
(lambda _
(setenv "DESTDIR" "/")))
(add-after 'install 'wrap-program
(lambda* (#:key outputs #:allow-other-keys)
(wrap-program (search-input-file outputs "bin/d-feet")
`("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
`("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
(native-inputs
(list `(,glib "bin")
intltool
itstool
libxml2
pkg-config
python-pep8
xorg-server-for-tests))
(inputs
(list bash-minimal
gobject-introspection
gtk+
python-wrapper
python-pygobject))
(home-page "https://wiki.gnome.org/Apps/DFeet")
(synopsis "D-Bus debugger")
(description
"D-Feet is a D-Bus debugger, which can be used to inspect D-Bus interfaces
of running programs and invoke methods on those interfaces.")
(license license:gpl2+)))
(define-public d-spy
(package
(name "d-spy")
@ -7574,6 +7520,9 @@ programs via D-Bus. It also ships a library for integration into development
environments.")
(license license:gpl2+)))
(define-public d-feet
(deprecated-package "d-feet" d-spy))
(define-public yelp-xsl
(package
(name "yelp-xsl")

View file

@ -5,7 +5,7 @@
;;; Copyright © 2014, 2015, 2016, 2020 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015-2021, 2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017, 2019, 2025 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
;;; Copyright © 2016 Christopher Baines <mail@cbaines.net>
@ -585,10 +585,17 @@ interface (FFI) of Guile.")
"1ji3ynhp36m1ccx7bmaq75dhij9frpn19v9mpi4aajn8csl194il"))))
(build-system python-build-system)
(arguments
'(#:phases
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'set-environment
(lambda _
;; GPGME is built with large file support, so we need to set
;; _FILE_OFFSET_BITS to 64 in all users of the GPGME library.
,@(if (or (target-x86-32?) (target-arm32?))
`((substitute* "setup.py"
(("extra_macros = dict\\(\\)")
"extra_macros = { \"_FILE_OFFSET_BITS\": 64 }")))
'())
(substitute* "setup.py"
(("cc") (which "gcc")))
#t)))

View file

@ -8,7 +8,7 @@
;;; Copyright © 2017, 2023 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017, 2018 Nikita <nikita@n0.is>
;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018, 2020, 2025 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
;;; Copyright © 2020, 2024 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
@ -142,6 +142,14 @@
"--with-intl-api")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'python-3.11-compatibility
(lambda _
(substitute* '("python/mozbuild/mozpack/files.py"
"python/mozbuild/mozbuild/util.py"
"python/mozbuild/mozbuild/action/process_define_files.py"
"python/mozbuild/mozbuild/backend/base.py"
"python/mozbuild/mozbuild/preprocessor.py")
(("\"rU\"") "\"r\""))))
(add-after 'patch-source-shebangs 'patch-cargo-checksums
(lambda _
(let ((null-hash
@ -278,6 +286,15 @@ in C/C++.")
(substitute-keyword-arguments (package-arguments mozjs)
((#:phases phases)
#~(modify-phases #$phases
(add-after 'unpack 'python-3.11-compatibility
(lambda _
(substitute* '("python/mozbuild/mozpack/files.py"
"python/mozbuild/mozbuild/util.py"
"python/mozbuild/mozbuild/action/process_define_files.py"
"python/mozbuild/mozbuild/backend/base.py"
"python/mozbuild/mozbuild/preprocessor.py"
"python/mozbuild/mozbuild/virtualenv.py")
(("'rU'") "'r'"))))
(add-after 'unpack 'patch-for-python-3.10
(lambda _
;; Some classes were moved from collections to collections.abc
@ -1650,7 +1667,7 @@ their corresponding VERSION, SOURCE and LOCALES variables."
(setenv "MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE" "system")
(setenv "GUIX_PYTHONPATH"
(string-append (getcwd)
"/obj/_virtualenvs/build/lib/python3.10/site-packages"))
"/obj/_virtualenvs/build/lib/python3.11/site-packages"))
(setenv "BUILD_BACKENDS" "FasterMake,RecursiveMake")))
(replace 'build ;build and install data files
(lambda* (#:key outputs #:allow-other-keys)

View file

@ -389,9 +389,9 @@ subplots, multiple-axes, polar charts, and bubble charts.")
(patches (search-patches "python-louvain-fix-test.patch"))
(sha256
(base32 "0sx53l555rwq0z7if8agirjgw4ddp8r9b949wwz8vlig03sjvfmp"))))
(build-system python-build-system)
(build-system pyproject-build-system)
(native-inputs
(list python-setuptools-57)) ;for use_2to3 support
(list python-setuptools python-wheel))
(propagated-inputs
(list python-networkx python-numpy))
(home-page "https://github.com/taynaud/python-louvain")

View file

@ -209,7 +209,7 @@ structure and layout algorithms.")
(define-public python-uqbar
(package
(name "python-uqbar")
(version "0.6.9")
(version "0.7.2")
(source
(origin
(method git-fetch)
@ -218,27 +218,23 @@ structure and layout algorithms.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "037qj3rymm6xzdpklddfhmfp2p1bq9fi3jrvxj6gmharphd5z869"))))
(base32 "1limp2m2smg0l3v6vn2fwhjcw1d8gakw5v0q7krb03q539qiql87"))))
(build-system pyproject-build-system)
(arguments ; XXX: Disable failing tests.
(list #:test-flags '(list "tests" "-k" "not test_find_executable \
and not test_sphinx_book_text_broken_strict")))
(arguments
(list
#:test-flags #~(list "--pyargs" "uqbar")))
(native-inputs
(list graphviz
python-flake8
python-isort
python-mypy
python-defusedxml
python-pytest
python-pytest-cov
python-setuptools
python-typing-extensions
python-wheel))
(propagated-inputs
(list python-black python-sphinx-5 python-unidecode
(package/inherit python-sphinx-rtd-theme
(propagated-inputs
(modify-inputs
(package-propagated-inputs python-sphinx-rtd-theme)
(replace "python-sphinx" python-sphinx-5))))))
(list python-black
python-sphinx
python-unidecode))
(home-page "https://github.com/josiah-wolf-oberholtzer/uqbar")
(synopsis "Tools for building documentation with Sphinx, Graphviz and LaTeX")
(description

View file

@ -1812,63 +1812,55 @@ processing pipelines.")
(define-public labelme
(package
(name "labelme")
(version "4.5.13")
;; It's the latest available version which does not require not packaged
;; <https://github.com/wkentaro/osam>.
(version "5.2.1")
(source
(origin
;; PyPi tarball lacks tests.
(method git-fetch)
(uri (git-reference
(url "https://github.com/wkentaro/labelme.git")
(url "https://github.com/wkentaro/labelme")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0cmi2xb4dgh7738l259rgwhn9l134f0vnaaqc2gflc5yr3lqhrv2"))))
(build-system python-build-system)
(base32 "1xpyad6rlkxyx51jaai4xhdy15k1gvm62xnkjn152hc1vj1c77sr"))))
(build-system pyproject-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'loosen-requirements
(lambda _
;; Don't require an outdated version of matplotlib.
(substitute* "setup.py"
(("matplotlib<3\\.3")
"matplotlib"))))
(add-before 'check 'start-xserver
(lambda* (#:key inputs #:allow-other-keys)
(let ((xorg-server (assoc-ref inputs "xorg-server")))
;; Options taken from CI workflow.
(system (string-append xorg-server "/bin/Xvfb :99 -screen 0 "
"1920x1200x24 -ac +extension GLX +render "
"-noreset &"))
(setenv "DISPLAY" ":99.0"))))
(replace 'check
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
(add-installed-pythonpath inputs outputs)
;; Fails when invoking help2man for unknown reason.
(delete-file "tests/docs_tests/man_tests/test_labelme_1.py")
;; One test hangs.
(delete-file "tests/labelme_tests/widgets_tests/test_label_dialog.py")
;; Calls incompatible function signatures.
(delete-file "tests/labelme_tests/widgets_tests/test_label_list_widget.py")
(setenv "MPLBACKEND" "agg")
(invoke "pytest" "-v" "tests" "-m" "not gpu")))))))
(propagated-inputs
(list python-imgviz
python-matplotlib
python-numpy
python-pillow
python-pyyaml
python-qtpy
python-termcolor))
(list
#:test-flags
#~(list "-m" "not gpu"
;; Fails when invoking help2man for unknown reason.
"--ignore=tests/docs_tests/man_tests/test_labelme_1.py")
#:phases
#~(modify-phases %standard-phases
(add-before 'check 'start-xserver
(lambda* (#:key inputs #:allow-other-keys)
(let ((xorg-server #$(this-package-native-input "xorg-server")))
;; Options taken from CI workflow.
(system (string-append xorg-server "/bin/Xvfb :99 -screen 0 "
"1920x1200x24 -ac +extension GLX +render "
"-noreset &"))
(setenv "DISPLAY" ":99.0")))))))
(native-inputs
(list python-pytest python-pytest-qt xorg-server-for-tests))
(list python-pytest
python-pytest-qt
xorg-server-for-tests
python-wheel))
(propagated-inputs
(list python-imgviz
python-matplotlib
python-natsort
python-numpy
python-pillow
python-pyyaml
python-qtpy
python-termcolor))
(home-page "https://github.com/wkentaro/labelme")
(synopsis
"Image Polygonal Annotation")
(synopsis "Image Polygonal Annotation")
(description
"Image and video labeling tool supporting different shapes like
polygons, rectangles, circles, lines, points and VOC/COCO export.")
"Image and video labeling tool supporting different shapes like polygons,
rectangles, circles, lines, points and VOC/COCO export.")
(license license:gpl3+)))
(define-public charls

View file

@ -2761,6 +2761,10 @@ GIF, TIFF, WEBP, BMP, PNG, XPM formats.")
(guix build utils))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'python3.11-compatibility
(lambda _
(substitute* "setup.py"
(("\"rU\"") "\"r\""))))
(add-after 'install 'glib-or-gtk-wrap
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
(add-after 'install 'wrap-program

View file

@ -919,7 +919,7 @@ parsers")
;; unmaintained clone of <https://github.com/ircdocs/parser-tests>
;; which is packed in Guix as python-irc-parser-tests. Tests data
;; (YAML files) are distributed as Python package and located in
;; <lib/python3.10/site-packages/parser_tests/data/>.
;; <lib/python3.11/site-packages/parser_tests/data/>.
(add-before 'check 'install-testcases-data
(lambda* (#:key import-path #:allow-other-keys)
(with-directory-excursion (string-append "src/" import-path)

View file

@ -122,7 +122,8 @@ information.")
(build-system pyproject-build-system)
(native-inputs
(list python-pytest
python-setuptools))
python-setuptools
python-wheel))
(propagated-inputs
(list python-pandas))
(home-page "https://github.com/IndEcol/country_converter")

View file

@ -64,13 +64,6 @@
(sha256
(base32 "1qrhzazq10dz64y9mawr3ns595fsdhrj1wvbb42xhmcl66r1xq8a"))))
(build-system pyproject-build-system)
(arguments
(list
#:phases
;; Because python-jsonschema has an old python-webcolor. Remove this
;; when python-team branch is merged.
'(modify-phases %standard-phases
(delete 'sanity-check))))
(propagated-inputs (list python-argon2-cffi
python-ipykernel
python-ipython-genutils
@ -96,7 +89,7 @@
python-pytest-jupyter
python-pytest-tornasync
python-requests
python-requests-unixsocket
python-requests-unixsocket2
python-testpath))
(home-page "https://github.com/jupyter/nbclassic")
(synopsis "Jupyter Notebook as a Jupyter Server extension")
@ -601,7 +594,7 @@ JavaScript build steps.")
(setenv "PATH"
(string-append #$output "/bin:" (getenv "PATH"))))))))
(propagated-inputs
(list python-anyio/without-dataclasses
(list python-anyio
python-argon2-cffi
python-jinja2
python-jupyter-client
@ -1062,13 +1055,13 @@ a notebook.")
(define-public python-ipympl
(package
(name "python-ipympl")
(version "0.9.1")
(version "0.9.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ipympl" version))
(sha256
(base32 "11rppjdqzgs4pfiq8gww5xkpbk21fp86vvv839v56b9rqq06j2b4"))))
(base32 "12qgiy08klqb5gipm23yzh09p5g2k8ihcq2bprprdya84acw2rf8"))))
(build-system python-build-system)
(propagated-inputs
(list python-ipython
@ -1079,7 +1072,7 @@ a notebook.")
python-pillow
python-traitlets))
(native-inputs
(list python-jupyter-packaging))
(list python-hatchling python-jupyter-packaging))
(home-page "https://matplotlib.org/ipympl/")
(synopsis "Matplotlib Jupyter Extension")
(description "Leveraging the Jupyter interactive widgets framework, ipympl

View file

@ -663,7 +663,7 @@ output), and Binutils.")
(rename-file (string-append #$output "/share/opt-viewer")
opt-viewer-share))))
;; The build daemon goes OOM on i686-linux on this phase.
#$@(if (and (version>=? version "16.0")
#$@(if (and (version>=? version "15.0")
(target-x86-32?))
#~((delete 'make-dynamic-linker-cache))
#~()))))

View file

@ -234,8 +234,16 @@ family of functions.")
(sha256
(base32 "0cgysij0dix0fikyz2x4f8jvaskm5s5a04s07chzaz2dw1fpxdq8"))))
(build-system pyproject-build-system)
(arguments ; disable flaky test
(list #:test-flags '(list "-k" "not test_integrate_variable[x23-i]")))
(arguments
(list
#:test-flags
'(list "-k"
(string-append
;; Disable flaky test
"not test_integrate_variable[x23-i]"
;; XXX This test fails because the length of arguments
;; is longer than the length of inputs.
" and not test_function_of_numeric_array"))))
(propagated-inputs (list python-makefun python-multipledispatch
python-numpy python-opt-einsum
python-typing-extensions))
@ -423,33 +431,25 @@ machine learning algorithms based on GPs.")
(define-public python-ml-collections
(package
(name "python-ml-collections")
(version "0.1.1")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ml_collections" version))
(method git-fetch)
(uri (git-reference
(url "https://github.com/google/ml_collections")
(commit (string-append "v" version))))
(sha256
(base32 "1k38psfzqsqnl99fl578bd07zdmvfkja61r3sgjs2fj3xircrvrz"))))
(base32 "1f3rwbgnnvgh2jgnkwxfjdw18yly41hlx9fy56h0x36zyy8p0j21"))))
(build-system pyproject-build-system)
(arguments
(list
#:phases
#~(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; TODO: we can't seem to run the config_flags tests, because
;; the installed Python files conflict with those from the
;; source directory, resulting in constants to be defined more
;; than once.
(invoke "pytest" "ml_collections/config_dict/tests"
;; This one fails because we're testing the __main__
;; class, not config_dict_test.
"-k" "not testJSONConversionBestEffort")))))))
#:test-flags '(list "--pyargs" "ml_collections/config_dict/tests")))
(propagated-inputs
(list python-absl-py python-contextlib2 python-pyyaml python-six))
(native-inputs (list python-mock python-pytest python-setuptools
python-wheel))
(list python-absl-py python-pyyaml))
(native-inputs (list python-pylint
python-pytest
python-pytest-xdist
python-flit-core))
(home-page "https://github.com/google/ml_collections")
(synopsis "Python collections designed for Machine Learning usecases")
(description
@ -1843,7 +1843,7 @@ in terms of new algorithms.")
pybind11
python-coverage
python-fb-re2
python-parameterized-next
python-parameterized
python-pytest
python-pytest-runner
python-setuptools
@ -2553,7 +2553,7 @@ standard feature selection algorithms.")
(define-public python-cleanlab
(package
(name "python-cleanlab")
(version "2.7.0")
(version "2.7.1")
;; The version on pypi does not come with tests.
(source (origin
(method git-fetch)
@ -2563,7 +2563,7 @@ standard feature selection algorithms.")
(file-name (git-file-name name version))
(sha256
(base32
"0f8v5246nzy22r7zswv9vbpxc7wxaqjwry9iq0fqjp2ffch88h6j"))))
"073w45azq496x4bhrh8mdywcrg3gk33n13w1pqh1kiykw826ld9b"))))
(build-system pyproject-build-system)
(arguments
(list
@ -2681,37 +2681,37 @@ Covariance Matrix Adaptation Evolution Strategy (CMA-ES) for Python.")
(license license:expat)))
(define-public python-autograd
(let* ((commit "c6d81ce7eede6db801d4e9a92b27ec5d409d0eab")
(revision "0")
(version (git-version "1.5" revision commit)))
(package
(name "python-autograd")
(home-page "https://github.com/HIPS/autograd")
(source (origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit commit)))
(sha256
(base32
"04kljgydng42xlg044h6nbzxpban1ivd6jzb8ydkngfq88ppipfk"))
(file-name (git-file-name name version))))
(version version)
(build-system pyproject-build-system)
(native-inputs
(list python-nose python-pytest python-setuptools python-wheel))
(propagated-inputs
(list python-future python-numpy))
(synopsis "Efficiently computes derivatives of NumPy code")
(description "Autograd can automatically differentiate native Python and
NumPy code. It can handle a large subset of Python's features, including loops,
ifs, recursion and closures, and it can even take derivatives of derivatives
of derivatives. It supports reverse-mode differentiation
(package
(name "python-autograd")
(version "1.7.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/HIPS/autograd")
(commit (string-append "v" version))))
(sha256
(base32 "1fpnmm3mzw355iq7w751j4mjfcr0yh324cxidba1l22652gg8r8m"))
(file-name (git-file-name name version))))
(build-system pyproject-build-system)
(native-inputs
(list python-hatchling
python-pytest))
(propagated-inputs
(list python-future
python-numpy))
(home-page "https://github.com/HIPS/autograd")
(synopsis "Efficiently computes derivatives of NumPy code")
(description
"Autograd can automatically differentiate native Python and NumPy code.
It can handle a large subset of Python's features, including loops, ifs,
recursion and closures, and it can even take derivatives of derivatives of
derivatives. It supports reverse-mode differentiation
(a.k.a. backpropagation), which means it can efficiently take gradients of
scalar-valued functions with respect to array-valued arguments, as well as
forward-mode differentiation, and the two can be composed arbitrarily. The
main intended application of Autograd is gradient-based optimization.")
(license license:expat))))
(license license:expat)))
(define-public lightgbm
(package
@ -3370,8 +3370,14 @@ Python.")
;; SOURCE_DATE_EPOCH is respected, which we set to some time in
;; 1980.
(lambda _ (setenv "SOURCE_DATE_EPOCH" "315532800")))
(add-after 'unpack 'python3.10-compatibility
(add-after 'unpack 'python3.11-compatibility
(lambda _
;; Py_TYPE was changed to an inline static function in Python
;; 3.11, so it cannot be used on the left-hand side.
(substitute* "tensorflow/python/lib/core/bfloat16.cc"
(("Py_TYPE\\(&NPyBfloat16_Descr\\) = &PyArrayDescr_Type;")
"Py_SET_TYPE(&NPyBfloat16_Descr, &PyArrayDescr_Type);"))
;; See https://github.com/tensorflow/tensorflow/issues/20517#issuecomment-406373913
(substitute* '("tensorflow/python/eager/pywrap_tfe_src.cc"
"tensorflow/python/lib/core/ndarray_tensor.cc"
@ -3421,6 +3427,16 @@ Python.")
(string-append m
" and not isinstance(existing, type(object.__or__))")))
;; ArgSpec has been replaced with FullArgSpec.
(substitute* "tensorflow/python/util/tf_inspect.py"
(("ArgSpec = _inspect.ArgSpec") "\
ArgSpec = namedtuple('ArgSpec', [ 'args', 'varargs', 'keywords', 'defaults' ])
def makeargspec(s):
return ArgSpec(args=s.args, varargs=s.varargs, keywords=s.varkw, defaults=s.defaults)
")
(("_inspect.getargspec\\((.*)\\)" m target)
(string-append "makeargspec(_inspect.getfullargspec(" target "))")))
;; Fix the build with numpy >= 1.19.
;; Suggested in https://github.com/tensorflow/tensorflow/issues/41086#issuecomment-656833081
(substitute* "tensorflow/python/lib/core/bfloat16.cc"
@ -3441,7 +3457,22 @@ Python.")
(substitute* '("tensorflow/python/framework/fast_tensor_util.pyx"
"tensorflow/python/estimator/canned/linear_testing_utils.py")
(("np.asscalar") "np.ndarray.item"))))
(add-after 'python3.10-compatibility 'chdir
(add-after 'python3.11-compatibility 'numpy-compatibility
(lambda _
(substitute* (cons* "tensorflow/compiler/xla/python/xla_client.py"
"tensorflow/contrib/layers/python/ops/sparse_ops_test.py"
(find-files "tensorflow/python/" "\\.py$"))
(("np.object") "object"))
(substitute* (append
'("tensorflow/compiler/tests/unary_ops_test.py"
"tensorflow/compiler/xla/python/xla_client.py"
"tensorflow/compiler/xla/python/xla_client_test.py")
(find-files "tensorflow/python/" "\\.py$")
(find-files "tensorflow/contrib/" "\\.py$"))
(("np.bool,") "bool,")
(("np.bool\\)") "bool)")
(("np.bool:") "bool:"))))
(add-after 'numpy-compatibility 'chdir
(lambda _ (chdir "tensorflow/contrib/cmake")))
(add-after 'chdir 'disable-downloads
(lambda* (#:key inputs #:allow-other-keys)
@ -4169,7 +4200,7 @@ project, and it will potentially also do the same for the Lime project.")
(propagated-inputs
(list python-h5py python-numpy))
(native-inputs
(list python-pytest python-pytest-cov python-pytest-pep8
(list python-pytest python-pytest-cov
python-pytest-xdist))
(home-page "https://github.com/keras-team/keras-applications")
(synopsis "Reference implementations of popular deep learning models")
@ -4339,7 +4370,6 @@ with image data, text data, and sequence data.")
python-pandas
python-pytest
python-pytest-cov
python-pytest-pep8
python-pytest-timeout
python-pytest-xdist
python-pyux
@ -5558,7 +5588,10 @@ Note: currently this package does not provide GPU support.")
;; These refuse to be run on CPU and really want a GPU
" and not test_add_random_walk_pe"
" and not test_asap"
" and not test_two_hop"))
" and not test_two_hop"
;; Failed when switched to python@3.11
;; typing module internals
" and not test_type_repr"))
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'delete-top-level-directories
@ -6315,7 +6348,7 @@ tokenizers, @code{rust-tokenizers}.")
python-tokenizers
python-tqdm))
(native-inputs
(list python-parameterized-next
(list python-parameterized
python-pytest python-setuptools python-wheel))
(home-page "https://github.com/huggingface/transformers")
(synopsis "Machine Learning for PyTorch and TensorFlow")
@ -6459,34 +6492,33 @@ of Hidden Markov Models.")
(define-public python-lap
(package
(name "python-lap")
(version "0.4.0")
(version "0.5.12")
(source (origin
(method url-fetch)
(uri (pypi-uri "lap" version))
(sha256
(base32
"0fqfxpq4jg9h4wxjw540gjmvfg1ccc1nssk7i9njg7qfdybxknn4"))))
(build-system python-build-system)
"1za4mf5nd7vzwd24sy2mfxrk8mnwq7d8rv6h96yh8v5flx7422sp"))))
(build-system pyproject-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
(invoke "python" "setup.py" "build"
"--cpu-baseline=sse2")))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; The tests must be run from elsewhere.
(mkdir-p "/tmp/test")
(copy-recursively "lap/tests" "/tmp/test")
(with-directory-excursion "/tmp/test"
(invoke "pytest" "-vv"))))))))
(list
#:test-flags #~(list "-v" #$output)
#:phases
#~(modify-phases %standard-phases
(add-after 'check 'check-cleanup
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(for-each
delete-file-recursively
(find-files #$output
(lambda (file stat)
(or (member (basename file)
'("tests" ".pytest_cache"))))
#:directories? #t))))))))
(propagated-inputs
(list python-numpy
python-scipy))
(list python-numpy))
(native-inputs
(list python-cython python-pytest))
(list python-cython python-pytest python-setuptools python-wheel))
(home-page "https://github.com/gatagat/lap")
(synopsis "Linear Assignment Problem solver (LAPJV/LAPMOD)")
(description "Lap is a linear assignment problem solver using Jonker-Volgenant
@ -6581,24 +6613,23 @@ inference.")
(define-public python-linear-operator
(package
(name "python-linear-operator")
(version "0.5.2")
(version "0.6")
(source (origin
(method url-fetch)
(uri (pypi-uri "linear_operator" version))
(sha256
(base32
"03drb4hn9nn8jrqd9vbalihhahgpdm956hbs05bix7svradhknaw"))))
"0m56f3zrm8xh1bpwh4g7jfc79rf4j94g6zmz663b58pig4w6dqm9"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-jaxtyping
python-mpmath
python-pytorch
python-scipy
python-typeguard))
(native-inputs (list python-flake8
python-flake8-print
python-pytest
python-scipy))
(native-inputs (list python-pytest
python-setuptools
python-setuptools-scm
python-twine))
python-typeguard
python-wheel))
(home-page "https://github.com/cornellius-gp/linear_operator/")
(synopsis "Linear operator implementation")
(description "LinearOperator is a PyTorch package for abstracting away the
@ -6608,29 +6639,34 @@ linear algebra routines needed for structured matrices (or operators).")
(define-public python-gpytorch
(package
(name "python-gpytorch")
(version "1.12")
(version "1.14")
(source (origin
(method url-fetch)
(uri (pypi-uri "gpytorch" version))
(sha256
(base32
"1pwsccll1hrgkifdmlxzcn6cvnwvyq2cimqzbfgihr13yw51cb6w"))))
"13cs6dx8qa5j4ygji9w5xbmaqc68ihqyzz33fyyf9qa6d8gc2b03"))))
(build-system pyproject-build-system)
(arguments
(list #:test-flags
;; test_deprecated_methods fails with an AssertionError.
#~(list "-k" (string-append "not test_deprecated_methods"))))
(propagated-inputs (list python-linear-operator
#~(list "-k" (string-append
;; test_deprecated_methods fails with an AssertionError.
"not test_deprecated_methods"
;; This test is flaky: Expects gradients of 0 exactly,
;; can get negligible ones (e-10 to e-16).
" and not test_optimization_optimal_error")
;; Ignore lenghty tests of little relevance.
"--ignore=test/examples/")))
(propagated-inputs (list python-jaxtyping
python-linear-operator
python-mpmath
python-scikit-learn
python-scipy))
(native-inputs (list python-coverage
python-flake8
python-flake8-print
python-nbval
(native-inputs (list python-nbval
python-pytest
python-setuptools
python-twine))
python-setuptools-scm
python-wheel))
(home-page "https://gpytorch.ai")
(synopsis "Implementation of Gaussian Processes in PyTorch")
(description
@ -6640,7 +6676,7 @@ linear algebra routines needed for structured matrices (or operators).")
(define-public python-botorch
(package
(name "python-botorch")
(version "0.11.3")
(version "0.13.0")
(source (origin
(method git-fetch) ;no tests in PyPI
(uri (git-reference
@ -6649,7 +6685,7 @@ linear algebra routines needed for structured matrices (or operators).")
(file-name (git-file-name name version))
(sha256
(base32
"0nf9zrg1khvckb8kdpffqc3bnlhc0x03jd1560qmjamwl3j59m02"))))
"1sxgxdq892vg5xj30kb86003b9rwsipc95c7p1zdv865y4f38a8y"))))
(build-system pyproject-build-system)
(arguments
(list #:test-flags #~(list "-k" "not test_all_cases_covered")
@ -6668,9 +6704,12 @@ linear algebra routines needed for structured matrices (or operators).")
python-pyro-ppl
python-pytorch
python-scipy))
(native-inputs (list python-pytest
(native-inputs (list python-pyre-extensions
python-pytest
python-pytest-cov
python-setuptools-scm))
python-setuptools
python-setuptools-scm
python-wheel))
(home-page "https://botorch.org")
(synopsis "Bayesian Optimization in PyTorch")
(description
@ -6779,7 +6818,7 @@ simple speech recognition.")
"library_dirs=["
"'" #$vosk-api "/lib'"
"],\n\t"
"libraries=['vosk', 'python3.10'],\n\t"
"libraries=['vosk', 'python3.11'],\n\t"
"include_dirs=["
"'" #$vosk-api "/src'" "])")))
(substitute* "vosk/__init__.py"

View file

@ -3588,14 +3588,17 @@ an SMTP transaction before a message is committed to queue.")
(define-public mailman
(package
(name "mailman")
(version "3.3.2")
(version "3.3.10")
(source
(origin
(method url-fetch)
(uri (pypi-uri "mailman" version))
(sha256
(base32 "0a5ckbf8hc3y28b7p5psp0d4bxk601jlr5pd3hhh545xd8d9f0dg"))))
(build-system python-build-system)
(base32 "0cjn8karkgrapgiv3ra6ddcngkf5c5779hrq369mvwi6ygy7ir0d"))))
(build-system pyproject-build-system)
(arguments
;; XXX: Too much failing tests to try and isolate them.
(list #:tests? #f))
(propagated-inputs
(list gunicorn
python-aiosmtpd
@ -3620,7 +3623,7 @@ an SMTP transaction before a message is committed to queue.")
python-zope-event
python-zope-interface))
(native-inputs
(list python-nose))
(list python-pytest python-pdm-backend))
(home-page "https://www.list.org")
(synopsis "Mailing list manager")
(description
@ -3755,21 +3758,17 @@ interfaces interacting with Mailman.")
(define-public python-mailman-hyperkitty
(package
(name "python-mailman-hyperkitty")
(version "1.2.0")
(version "1.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "mailman-hyperkitty" version))
(sha256
(base32
"1ni6vf1yi14c0l895fk278x4na7ymhpkl1q0vnpzbkzplpa7200i"))))
(build-system python-build-system)
(propagated-inputs
(list python-requests python-zope-interface))
(inputs
(list mailman))
(native-inputs
(list python-mock python-nose python-nose2))
(origin
(method url-fetch)
(uri (pypi-uri "mailman-hyperkitty" version))
(sha256
(base32 "0f6c1fs28w3r9k9mbg7gsv6pa45aayaadaa0dn4q5dfcqvxrvmpq"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-requests python-zope-interface))
(inputs (list mailman))
(native-inputs (list python-nose2 python-setuptools python-wheel))
(home-page "https://gitlab.com/mailman/mailman-hyperkitty/")
(synopsis "Mailman archiver plugin for HyperKitty")
(description
@ -4681,18 +4680,20 @@ the RFC 8617 Authenticated Received Chain (ARC) protocol.")
(define-public python-authheaders
(package
(name "python-authheaders")
(version "0.13.0")
(version "0.16.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "authheaders" version))
(sha256
(base32
"14k6i72k5f8dyvps8vc0aq0cczc8lvqpgjfjzsy6qqychjvjcmwk"))))
(build-system python-build-system)
"12hl93336w64iyqalpv4rma2ijigav68qy1xmgziibdi7inxr3hi"))))
(build-system pyproject-build-system)
(propagated-inputs
(list python-authres python-dkimpy python-dnspython
python-publicsuffix2))
(native-inputs
(list python-setuptools python-wheel))
(home-page "https://github.com/ValiMail/authentication-headers")
(synopsis "Library wrapping email authentication header verification and generation")
(description
@ -4707,30 +4708,27 @@ DKIM and ARC sign messages and output the corresponding signature headers.")
(define-public python-aiosmtpd
(package
(name "python-aiosmtpd")
(version "1.2.2")
(version "1.4.6")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/aio-libs/aiosmtpd")
(commit version)))
(commit (string-append "v" version))))
(sha256
(base32 "0083d6nf75xv8nq1il6jabz36v6c452svy4p402csxwwih5pw6sk"))
(base32 "0b5y94zc8pq75sjwsifblzgjnliyclkwypi68b2zffrxcdnz27r2"))
(file-name (git-file-name name version))))
(build-system python-build-system)
(build-system pyproject-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'delete-failing-tests
(lambda _
;; This test uses an expired certificate.
(delete-file "aiosmtpd/tests/test_smtps.py")
#t))
(replace 'check
(lambda _
(invoke "python" "-m" "nose2" "-v"))))))
;; This QA test requires git.
(list #:test-flags ''("-k" "not test_ge_master")))
(native-inputs
(list python-flufl-testing python-nose2))
(list python-pytest
python-pytest-asyncio
python-pytest-cov
python-pytest-mock
python-setuptools
python-wheel))
(propagated-inputs
(list python-atpublic))
(home-page "https://aiosmtpd.readthedocs.io/")

View file

@ -108,6 +108,7 @@
#:use-module (guix build-system python)
#:use-module (guix build-system ruby)
#:use-module (gnu packages algebra)
#:use-module (gnu packages astronomy)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
@ -3551,46 +3552,51 @@ ASCII text files using Gmsh's own scripting language.")
(define-public veusz
(package
(name "veusz")
(version "3.3.1")
(version "3.6.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "veusz" version))
(sha256
(base32 "1q7hi1qwwg4pgiz62isvv1pia85m13bspdpp1q3mrnwl11in0ag0"))))
(build-system python-build-system)
(base32 "1lcmcfr0dcam8g1fp5qip8jnxglxx7i62ln3ix6l4c2bbv21l5y2"))))
(build-system pyproject-build-system)
(arguments
`(;; Tests will fail because they depend on optional packages like
;; python-astropy, which is not packaged.
#:tests? #f
#:phases
(modify-phases %standard-phases
;; Veusz will append 'PyQt5' to sip_dir by default. That is not how
;; the path is defined in Guix, therefore we have to change it.
(add-after 'unpack 'fix-sip-dir
(lambda _
(substitute* "pyqtdistutils.py"
(("os.path.join\\(sip_dir, 'PyQt5'\\)") "sip_dir"))))
;; Now we have to pass the correct sip_dir to setup.py.
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
;; We need to tell setup.py where to locate QtCoremod.sip
((@@ (guix build python-build-system) call-setuppy)
"build_ext"
(list (string-append "--sip-dir="
(search-input-directory inputs "share/sip"))))))
;; Ensure that icons are found at runtime.
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/veusz")
`("QT_PLUGIN_PATH" prefix
,(list (string-append (assoc-ref inputs "qtsvg")
"/lib/qt5/plugins/"))))))))))
(list
;; Tests currently fail with exception TypeError:
;; calling <function version ...> returned 3.6.2, not a test
#:tests? #f
#:phases
#~(modify-phases %standard-phases
;; Veusz uses python's site-packages to look for pyqt5_include_dir.
(add-after 'unpack 'fix-pyqt5-include-dir
(lambda _
(substitute* "pyqt_setuptools.py"
(("get_path\\('platlib'\\)")
(format #f "~s"
(string-append
#$(this-package-input "python-pyqt")
"/lib/python"
#$(version-major+minor
(package-version python-wrapper))
"/site-packages"))))))
;; Ensure that icons are found at runtime.
(add-after 'wrap 'wrap-executable
(lambda* (#:key inputs #:allow-other-keys)
(wrap-program (string-append #$output "/bin/veusz")
`("QT_PLUGIN_PATH" prefix
,(list (string-append
(string-join
(list #$(this-package-input "qtbase")
#$(this-package-input "qtsvg")
#$(this-package-input "qtwayland"))
"/lib/qt5/plugins:")
"/lib/qt5/plugins")))))))))
(native-inputs
(list pkg-config
;;("python-astropy" ,python-astropy) ;; FIXME: Package this.
qttools-5 python-sip-4))
python-astropy
python-setuptools
python-wheel
qttools-5))
(inputs
(list bash-minimal
ghostscript ;optional, for EPS/PS output
@ -3598,7 +3604,8 @@ ASCII text files using Gmsh's own scripting language.")
python-h5py ;optional, for HDF5 data
python-pyqt
qtbase-5
qtsvg-5))
qtsvg-5
qtwayland-5))
(propagated-inputs
(list python-numpy))
(home-page "https://veusz.github.io/")
@ -4346,7 +4353,15 @@ recurrence relations.")
;; These tests fails with unexpected keyword arguments
;; in calls to cplot.
#~(list "--deselect" "tests/test_u3.py::test_write_single"
"--deselect" "tests/test_u3.py::test_write_tree")))
"--deselect" "tests/test_u3.py::test_write_tree"
"-k" (string-join
;; Tests fail in arrays comprising.
(list "not test_chebyshev1_p11[2-y2]"
"test_chebyshev1_p11[4-y4]"
"test_eval[1-ref1]"
"test_eval[t2-ref2]"
"test_eval[t3-ref3]")
" and not "))))
(native-inputs
(list python-matplotx
python-meshio
@ -4437,6 +4452,35 @@ bindings to almost all functions of PETSc.")
;; <https://github.com/dimpase/primecountpy/issues/16>.
(license license:gpl2+)))
(define-public python-pyglm
(package
(name "python-pyglm")
(version "2.8.1")
(source
(origin
;; Test files are not included in the archive in pypi.
(method git-fetch)
(uri (git-reference
(url "https://github.com/Zuzu-Typ/PyGLM")
(commit version)
;; XXX: Attempt to use Guix's glm@1.0.1 failed, try to figure out
;; how to fix it.
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
(base32
"1ra54m0pb5aca7q6ymappjsyxdzdy17yz8rrhlql04k0p9lnf1v8"))))
(build-system pyproject-build-system)
(native-inputs
(list python-pytest
python-setuptools
python-wheel))
(home-page "https://github.com/Zuzu-Typ/PyGLM")
(synopsis "OpenGL Mathematics library for Python")
(description "PyGLM is a Python extension library which brings the OpenGL
Mathematics (GLM) library to Python.")
(license license:zlib)))
(define-public python-quadpy
(package
(name "python-quadpy")
@ -4454,6 +4498,12 @@ bindings to almost all functions of PETSc.")
(base32
"1f989dipv7lqxvalfrvvlmhlxyl67a87lavyyqrr1mh88glhl592"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
;; AssertionError: Lebedev(047) -- observed: 41, expected: 47 (max err:
;; 4.910e-15).
#~(list "--deselect=tests/test_u3.py::test_scheme_spherical[lebedev_047]")))
(native-inputs
(list python-accupy
python-pytest
@ -7171,50 +7221,39 @@ with C89.")
(define-public glm
(package
(name "glm")
(version "0.9.9.8")
(version "1.0.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/g-truc/glm/releases/download/"
version "/glm-" version ".zip"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/g-truc/glm")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0k6yk9v46h690rshdx49x98y5qspkzibld1wb51jwcm35vba7qip"))))
(base32 "0890rvv3czi3nqj11dc2m3wcdfv0dm0nr63wfcpfikk9sk6b4w8s"))))
(build-system cmake-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-before 'configure 'set-environment
(lambda _
;; Pass "-fno-ipa-modref" flag to the compiler to work
;; around a test failure with GCC 11. This is a
;; header-only library so these flags only affect tests.
;; See <https://github.com/g-truc/glm/pull/1087>.
(setenv "CXXFLAGS" "-O2 -g -fno-ipa-modref")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
;; Since version 0.9.9.6, 'make install' is not supported
;; and we have to do it "manually". Upstream discussion:
;; <https://github.com/g-truc/glm/pull/968>.
(let* ((source (string-append "../glm"))
(out (assoc-ref outputs "out"))
(inc (string-append out "/include"))
(lib (string-append out "/lib"))
(pkgconfig (string-append lib "/pkgconfig")))
(with-directory-excursion source
(mkdir-p inc)
(mkdir-p pkgconfig)
(copy-recursively "glm" (string-append inc "/glm"))
(copy-recursively "cmake" (string-append lib "/cmake"))
(call-with-output-file (string-append pkgconfig "/glm.pc")
(lambda (port)
(format port
"prefix=~a
(list
#:phases
#~(modify-phases %standard-phases
(add-after 'install 'post-install
(lambda _
(let* ((doc (string-append #$output "/share/doc/glm"))
(pkgconfig (string-append #$output "/lib/pkgconfig")))
(mkdir-p doc)
(mkdir-p pkgconfig)
(copy-recursively "../source/doc/api" (string-append doc "/html"))
(install-file "../source/doc/manual.pdf" doc)
(call-with-output-file (string-append pkgconfig "/glm.pc")
(lambda (port)
(format port
"prefix=~a
includedir=${prefix}/include
Name: GLM
Description: OpenGL Mathematics
Version: ~a
Cflags: -I${includedir}~%" out ,(version-prefix version 3)))))
#t))))))
Cflags: -I${includedir}~%" #$output #$version)))))))))
(native-inputs
(list unzip))
(home-page "https://glm.g-truc.net/")
@ -11079,7 +11118,7 @@ Mathics3.")
(propagated-inputs (list python-django-4.2
python-mathics-scanner
python-mathics-core
python-networkx-next
python-networkx
python-pygments
python-requests))
(native-inputs (list python-pytest python-setuptools python-wheel))

View file

@ -19,6 +19,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages medical)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix build-system qt)
#:use-module (guix download)
@ -29,6 +30,7 @@
#:use-module (gnu packages databases)
#:use-module (gnu packages kde-frameworks) ; kirigami
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
@ -93,18 +95,26 @@ Health Federation.")
".tar.gz"))
(sha256
(base32 "09vrfqn511vswnj2q9m7srlwdgz066qvqpmja6sg1yl1ibh3cbpr"))))
(build-system python-build-system)
(build-system pyproject-build-system)
(arguments
`(#:use-setuptools? #f
#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-/usr
(lambda* (#:key outputs #:allow-other-keys)
(substitute* '("setup.py"
"src/openmolar/settings/localsettings.py")
(("/usr")
(assoc-ref outputs "out"))) #t)))))
(inputs (list python-pyqtwebengine python-pyqt+qscintilla
python-mysqlclient qscintilla))
(list
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-/usr
(lambda* (#:key outputs #:allow-other-keys)
(substitute* '("setup.py"
"src/openmolar/settings/localsettings.py")
(("/usr") #$output))))
(add-after 'unpack 'set-acceptable-version
(lambda _
(substitute* "src/openmolar/settings/version.py"
((#$version) "1.1.6")))))))
(native-inputs
(list python-setuptools python-wheel))
(inputs (list python-pyqtwebengine
python-pyqt+qscintilla
python-mysqlclient
qscintilla))
(propagated-inputs (list qtwebengine-5))
(home-page "https://openmolar.com/om1")
(synopsis "Dental practice management software")

View file

@ -14,6 +14,7 @@
;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2022 Mathieu Laparie <mlaparie@disr.it>
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -68,6 +69,7 @@
#:use-module (gnu packages prometheus)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-science)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages rrdtool)
@ -433,23 +435,24 @@ historical data.")
(define-public python-carbon
(package
(name "python-carbon")
(version "1.1.8")
(version "1.1.10")
(source
(origin
(method url-fetch)
(uri (pypi-uri "carbon" version))
(sha256
(base32
"1wb91fipk1niciffq5xwqbh8g7rl7ghdam4m97cjbig12i5qr4cm"))))
(build-system python-build-system)
"0p6yjxif5ly5wkllnaw41w2zy9y0nffgfk91v861fn6c26lmnfy1"))))
(build-system pyproject-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; Don't install to /opt
(add-after 'unpack 'do-not-install-to-/opt
(lambda _ (setenv "GRAPHITE_NO_PREFIX" "1") #t)))))
(native-inputs (list python-setuptools python-wheel))
(propagated-inputs
(list python-cachetools python-txamqp python-urllib3 python-whisper))
(list python-cachetools python-twisted python-txamqp python-urllib3))
(home-page "https://graphiteapp.org/")
(synopsis "Backend data caching and persistence daemon for Graphite")
(description "Carbon is a backend data caching and persistence daemon for
@ -459,45 +462,69 @@ and persisting them to disk using the Whisper time-series library.")
(license license:asl2.0)))
(define-public graphite-web
(package
(name "graphite-web")
(version "1.1.10")
(source
(origin
(method url-fetch)
(uri (pypi-uri "graphite-web" version))
(sha256
(base32
"0nnk3kwn0b6bq9xnmv9bac6hpcbdgpgwf283c1ck5nm80panh61z"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ;XXX: not in PyPI release & requires database
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'relax-requirements
(lambda _
(substitute* "setup.py"
;; Allow newer versions of django-tagging.
(("django-tagging==") "django-tagging>=")
;; And Django.
(("Django>=1\\.8,<3\\.1") "Django>=1.8,<4"))))
;; Don't install to /opt
(add-after 'unpack 'do-not-install-to-/opt
(lambda _ (setenv "GRAPHITE_NO_PREFIX" "1") #t)))))
(propagated-inputs
(list python-cairocffi
python-django-3.2
python-django-tagging
python-pyparsing
python-pytz
python-six
python-urllib3))
(home-page "https://graphiteapp.org/")
(synopsis "Scalable realtime graphing system")
(description "Graphite is a scalable real-time graphing system that does
(let ((commit "49c28e2015d605ad9ec93524f7076dd924a4731a")
(revision "2"))
(package
(name "graphite-web")
(version (git-version "1.1.10" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/graphite-project/graphite-web")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0bcc6jh7gyp8f54dzy4zza1z46gk3530r952pi86irf834z106sg"))))
(build-system pyproject-build-system)
(arguments
`(#:tests? #f ;XXX: Requires database, unable to run now
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'relax-requirements
(lambda _
(substitute* "setup.py"
;; Allow newer versions of django-tagging.
(("django-tagging==") "django-tagging>=")
;; And Django.
(("Django>=3\\.2,<4") "Django>=4,<5"))))
;; Don't install to /opt
(add-after 'unpack 'do-not-install-to-/opt
(lambda _ (setenv "GRAPHITE_NO_PREFIX" "1")))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(mkdir-p "storage/log/webapp")
(with-directory-excursion "webapp"
(invoke "./manage.py" "test" "--pythonpath=." "tests"
"-k" (string-join
(list
"not test_dashboard_save_temporary_xss_key"
"test_dashboard_save_temporary_xss_name")
" and not ")))))))))
(native-inputs
(list python-carbon
python-mock
python-pytest
python-rrdtool
python-setuptools
python-tzdata
python-wheel
python-whisper))
(propagated-inputs
(list python-cairocffi
python-django-4.2
python-django-tagging
python-pyparsing
python-pytz
python-six
python-urllib3))
(home-page "https://graphiteapp.org/")
(synopsis "Scalable realtime graphing system")
(description "Graphite is a scalable real-time graphing system that does
two things: store numeric time-series data, and render graphs of this data on
demand.")
(license license:asl2.0)))
(license license:asl2.0))))
(define-public python-prometheus-client
(package
@ -838,6 +865,25 @@ display resumes.
@end itemize")
(license license:bsd-2)))
(define-public python-rrdtool
(package
(name "python-rrdtool")
(version "0.1.16")
(source
(origin
(method url-fetch)
(uri (pypi-uri "rrdtool" version))
(sha256
(base32 "0l8lbarzfwbwnq9jm9gv4mmrxgjlb9hbz27sa8b703qa7s5zy2jz"))))
(build-system pyproject-build-system)
(arguments (list #:tests? #f)) ; No tests in pypi archive
(inputs (list rrdtool))
(native-inputs (list python-setuptools python-wheel))
(home-page "https://github.com/commx/python-rrdtool")
(synopsis "Python bindings for rrdtool")
(description "This package provides Python bindings for rrdtool.")
(license license:lgpl2.1)))
(define-public python-statsd
(package
(name "python-statsd")

View file

@ -1858,7 +1858,11 @@ typographic detail of symbols on the page.")
(base32 "1y8s55b4mlsigm0xkk6qjpp08c75rv0swvjp0lj3cs6lgqdjxdjl"))))
(build-system pyproject-build-system)
(native-inputs
(list lilypond python-pytest python-setuptools python-wheel))
(list lilypond
python-pytest
python-pytest-cov
python-setuptools
python-wheel))
(propagated-inputs
(list abjad))
(home-page "https://abjad.github.io")
@ -3809,8 +3813,14 @@ follows a traditional multi-track tape recorder control paradigm.")
(base32 "1lz2mvk4gqsyf92yxd3aaldx0d0qi28h4rnnvsaz4ls0ccqm80nk"))))
(build-system waf-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(list
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'python3.11-compatibility
(lambda _
(substitute* '("waflib/Context.py"
"waflib/ConfigSet.py")
(("'rU'") "'r'"))))
(add-after 'unpack 'remove-sse-flags
(lambda* (#:key system #:allow-other-keys)
(unless (or (string-prefix? "x86_64" system)
@ -4617,8 +4627,8 @@ standard MIDI file with the csvmidi program.")
(license license:public-domain)))
(define-public mididings
(let ((commit "d98265be8afe7da20a5c7cfd0515f0d5fae5c53a")
(revision "1"))
(let ((commit "bc71ea9c86bdc0b02364b11ab7331e8b3a86bb4f")
(revision "2"))
(package
(name "mididings")
(version (git-version "0" revision commit))
@ -4630,8 +4640,8 @@ standard MIDI file with the csvmidi program.")
(file-name (git-file-name name version))
(sha256
(base32
"1a8i4yac5jjkq0vh73nwkv0j7vnvfwbzzagam4xdl1gpnc26n5xi"))))
(build-system pyproject-build-system)
"1f0f8bpqbc1av0ggv6wjicymc2klliwdl1m5blmjcvy39q3cwd59"))))
(build-system meson-build-system)
(arguments
(list
#:phases
@ -4647,6 +4657,7 @@ standard MIDI file with the csvmidi program.")
(list alsa-lib
boost
jack-2
python
`(,python "tk")
python-dbus
python-decorator

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2017, 2018, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2024, 2025 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016, 2017, 2021 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
@ -911,80 +911,80 @@ systems with no further dependencies.")
(define-public blueman
(package
(name "blueman")
(version "2.3.4")
(version "2.4.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/blueman-project/blueman/releases"
"/download/" version "/blueman-" version ".tar.xz"))
(sha256
(base32 "0lh1aqpdq6vi4agrgmm7fifjbxz2s5qcs3hr7nfjrwrp2j1361n2"))))
(base32 "1w45dr2cmy32cvxwqaybf5m2ziraj929f4lxcwapv266r1a92kyk"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:configure-flags (list "--enable-polkit"
(list
#:configure-flags '(list "--enable-polkit"
"--without-systemdsystemunitdir" ; Not required
"--without-systemduserunitdir") ; Not required
#:phases
(modify-phases %standard-phases
;; Python references are not being patched in patch-phase of build,
;; despite using python-wrapper as input. So we patch them manually.
(add-after 'unpack 'patch-python-references
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "apps"
(substitute* '("blueman-adapters.in" "blueman-applet.in"
"blueman-manager.in" "blueman-mechanism.in"
"blueman-rfcomm-watcher.in" "blueman-sendto.in"
"blueman-services.in" "blueman-tray.in")
(("@PYTHON@")
(search-input-file inputs
(string-append
"/bin/python"
,(version-major+minor
(package-version python)))))))))
;; Fix loading of external programs.
(add-after 'unpack 'patch-external-programs
(lambda* (#:key inputs #:allow-other-keys)
(substitute* '("blueman/main/NetConf.py"
"blueman/main/PPPConnection.py")
(("/usr/sbin/bluetoothd")
(search-input-directory inputs
"/libexec/bluetooth/bluetoothd"))
(("/sbin/iptables")
(search-input-file inputs "/sbin/iptables"))
(("/usr/sbin/pppd")
(search-input-file inputs "/sbin/pppd")))))
;; Fix loading of pulseaudio libraries.
(add-after 'unpack 'patch-pulseaudio-libraries
(lambda* (#:key inputs #:allow-other-keys)
(let* ((pulseaudio (assoc-ref inputs "pulseaudio"))
(pulse (string-append pulseaudio "/lib/libpulse.so.0"))
(pulse-glib (string-append pulseaudio
"/lib/libpulse-mainloop-glib.so.0")))
(with-directory-excursion "blueman/main"
(substitute* "PulseAudioUtils.py"
(("libpulse.so.0") pulse)
(("libpulse-mainloop-glib.so.0") pulse-glib))))))
;; Fix running of blueman programs.
(add-after 'glib-or-gtk-wrap 'wrap-blueman-progs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin/blueman-"))
(libexec (string-append out "/libexec/blueman-"))
(lib (string-append out "/lib/python"
,(version-major+minor
(package-version python))
"/site-packages")))
(for-each
(lambda (program)
(wrap-program program
`("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,lib))
`("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
(append
(map (lambda (prog) (string-append bin prog))
'("adapters" "applet" "manager"
"sendto" "services" "tray"))
(map (lambda (prog) (string-append libexec prog))
'("mechanism" "rfcomm-watcher"))))))))))
#:phases
#~(modify-phases %standard-phases
;; Python references are not being patched in patch-phase of build,
;; despite using python-wrapper as input. So we patch them manually.
(add-after 'unpack 'patch-python-references
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "apps"
(substitute* '("blueman-adapters.in" "blueman-applet.in"
"blueman-manager.in" "blueman-mechanism.in"
"blueman-rfcomm-watcher.in" "blueman-sendto.in"
"blueman-services.in" "blueman-tray.in")
(("@PYTHON@")
(search-input-file inputs
(string-append
"/bin/python"
#$(version-major+minor
(package-version (this-package-input "python-wrapper"))))))))))
;; Fix loading of external programs.
(add-after 'unpack 'patch-external-programs
(lambda* (#:key inputs #:allow-other-keys)
(substitute* '("blueman/main/NetConf.py"
"blueman/main/PPPConnection.py")
(("/usr/sbin/bluetoothd")
(search-input-directory inputs
"/libexec/bluetooth/bluetoothd"))
(("/sbin/iptables")
(search-input-file inputs "/sbin/iptables"))
(("/usr/sbin/pppd")
(search-input-file inputs "/sbin/pppd")))))
;; Fix loading of pulseaudio libraries.
(add-after 'unpack 'patch-pulseaudio-libraries
(lambda* (#:key inputs #:allow-other-keys)
(let* ((pulseaudio #$(this-package-input "pulseaudio"))
(pulse (string-append pulseaudio "/lib/libpulse.so.0"))
(pulse-glib (string-append pulseaudio
"/lib/libpulse-mainloop-glib.so.0")))
(with-directory-excursion "blueman/main"
(substitute* "PulseAudioUtils.py"
(("libpulse.so.0") pulse)
(("libpulse-mainloop-glib.so.0") pulse-glib))))))
;; Fix running of blueman programs.
(add-after 'glib-or-gtk-wrap 'wrap-blueman-progs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((bin (string-append #$output "/bin/blueman-"))
(libexec (string-append #$output "/libexec/blueman-"))
(lib (string-append #$output "/lib/python"
#$(version-major+minor
(package-version (this-package-input "python-wrapper")))
"/site-packages")))
(for-each
(lambda (program)
(wrap-program program
`("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,lib))
`("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
(append
(map (lambda (prog) (string-append bin prog))
'("adapters" "applet" "manager"
"sendto" "services" "tray"))
(map (lambda (prog) (string-append libexec prog))
'("mechanism" "rfcomm-watcher"))))))))))
(native-inputs
(list python-cython
`(,glib "bin")

View file

@ -115,20 +115,30 @@ formatters, and other extensions.")
(define-public python-debtcollector
(package
(name "python-debtcollector")
(version "1.19.0")
(version "3.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "debtcollector" version))
(sha256
(base32
"06c7vyn184y9f0lsrwaz13aq63hdz5fjrd191b8nifx6acsni42f"))))
(build-system python-build-system)
(base32 "0vzarkvjclci98d8lvkix6qj59f7rxp1qg2x6q6is7qfbg91g29a"))
(modules '((guix build utils)))
(snippet #~(begin
(substitute* "test-requirements.txt"
(("^(coverage|hacking|pre-commit).*")
""))))))
(build-system pyproject-build-system)
(propagated-inputs
(list python-pbr python-six python-wrapt))
(list python-pbr python-wrapt))
(native-inputs
(list ;; Tests.
python-subunit python-testrepository python-testtools))
(list python-doc8
python-fixtures
python-openstackdocstheme
python-reno
python-setuptools
python-stestr
python-testtools
python-wheel))
(home-page "https://www.openstack.org/")
(synopsis
"Find deprecated patterns and strategies in Python code")
@ -386,11 +396,11 @@ extensions.")
python-fixtures
python-jsonschema
python-netaddr
python-oslo.concurrency
python-oslo.config
python-oslo.log
python-oslo.serialization
python-oslo.utils
python-oslo-concurrency
python-oslo-config
python-oslo-log
python-oslo-serialization
python-oslo-utils
python-paramiko
python-prettytable
python-pyyaml
@ -437,7 +447,7 @@ OpenStack deployment.")
python-httplib2
python-iso8601
python-jsonschema
python-oslo.log
python-oslo-log
python-paramiko
python-six))
(native-inputs
@ -455,9 +465,9 @@ common features used in Tempest.")
;;; Packages from the Oslo library
;;;
(define-public python-oslo.concurrency
(define-public python-oslo-concurrency
(package
(name "python-oslo.concurrency")
(name "python-oslo-concurrency")
(version "5.0.0")
(source (origin
(method url-fetch)
@ -490,8 +500,8 @@ common features used in Tempest.")
python-fixtures
python-stestr
python-eventlet))
(propagated-inputs (list python-fasteners python-oslo.config
python-oslo.i18n python-oslo.utils))
(propagated-inputs (list python-fasteners python-oslo-config
python-oslo-i18n python-oslo-utils))
(home-page "https://docs.openstack.org/oslo.concurrency/latest/")
(synopsis "Oslo Concurrency library")
(description "The Oslo Concurrency Library provides utilities for safely
@ -499,9 +509,9 @@ running multi-thread, multi-process applications using locking mechanisms and
for running external processes.")
(license asl2.0)))
(define-public python-oslo.config
(define-public python-oslo-config
(package
(name "python-oslo.config")
(name "python-oslo-config")
(version "8.7.1")
(source
(origin
@ -515,7 +525,7 @@ for running external processes.")
(propagated-inputs
(list python-debtcollector
python-netaddr
python-oslo.i18n
python-oslo-i18n
python-rfc3986
python-requests
python-stevedore
@ -527,9 +537,9 @@ for running external processes.")
.ini style configuration files.")
(license asl2.0)))
(define-public python-oslo.context
(define-public python-oslo-context
(package
(name "python-oslo.context")
(name "python-oslo-context")
(version "5.0.0")
(source
(origin
@ -566,9 +576,9 @@ about a request context. The request context is usually populated in the WSGI
pipeline and used by various modules such as logging.")
(license asl2.0)))
(define-public python-oslo.i18n
(define-public python-oslo-i18n
(package
(name "python-oslo.i18n")
(name "python-oslo-i18n")
(version "3.20.0")
(source
(origin
@ -592,9 +602,9 @@ internationalization (i18n) features, especially translation for text strings
in an application or library.")
(license asl2.0)))
(define-public python-oslo.log
(define-public python-oslo-log
(package
(name "python-oslo.log")
(name "python-oslo-log")
(version "5.0.0")
(source
(origin
@ -612,11 +622,11 @@ in an application or library.")
(propagated-inputs
(list python-dateutil
python-debtcollector
python-oslo.config
python-oslo.context
python-oslo.i18n
python-oslo.utils
python-oslo.serialization
python-oslo-config
python-oslo-context
python-oslo-i18n
python-oslo-utils
python-oslo-serialization
python-pyinotify))
(native-inputs
(list python-fixtures python-oslotest python-stestr python-testtools
@ -629,9 +639,9 @@ configuration for all OpenStack projects. It also provides custom formatters,
handlers and support for context specific logging (like resource ids etc).")
(license asl2.0)))
(define-public python-oslo.serialization
(define-public python-oslo-serialization
(package
(name "python-oslo.serialization")
(name "python-oslo-serialization")
(version "4.2.0")
(source
(origin
@ -647,10 +657,10 @@ handlers and support for context specific logging (like resource ids etc).")
(lambda* (#:key tests? #:allow-other-keys)
(when tests? (invoke "stestr" "run")))))))
(propagated-inputs
(list python-msgpack python-oslo.utils python-pbr python-pytz))
(list python-msgpack python-oslo-utils python-pbr python-pytz))
(native-inputs
;; For tests.
(list python-netaddr python-oslo.i18n python-oslotest python-stestr))
(list python-netaddr python-oslo-i18n python-oslotest python-stestr))
(home-page "https://launchpad.net/oslo")
(synopsis "Oslo serialization library")
(description
@ -757,9 +767,9 @@ documentation from the OpenStack project.")
for debugging, and better support for mocking results.")
(license asl2.0)))
(define-public python-oslo.utils
(define-public python-oslo-utils
(package
(name "python-oslo.utils")
(name "python-oslo-utils")
(version "4.12.0")
(source
(origin
@ -776,7 +786,7 @@ for debugging, and better support for mocking results.")
(when tests? (invoke "stestr" "run")))))))
(propagated-inputs
(list python-debtcollector
python-oslo.i18n
python-oslo-i18n
python-iso8601
python-netaddr
python-netifaces
@ -843,8 +853,8 @@ handling.")
python-hacking
python-lxml
python-oauthlib
python-oslo.config
python-oslo.utils
python-oslo-config
python-oslo-utils
python-oslotest
python-pbr
python-pyyaml
@ -907,10 +917,10 @@ process of writing new clients.")
python-iso8601
python-keystoneauth1
python-netaddr
python-oslo.config
python-oslo.i18n
python-oslo.serialization
python-oslo.utils
python-oslo-config
python-oslo-i18n
python-oslo-serialization
python-oslo-utils
python-prettytable
python-requests
python-six
@ -1071,7 +1081,7 @@ regardless of whether they are bundled or not.")
python-statsd
python-stestr
python-testscenarios
python-oslo.config
python-oslo-config
python-oslotest))
(propagated-inputs (list python-appdirs
python-cryptography

View file

@ -31,6 +31,7 @@
#:use-module (gnu packages graph)
#:use-module (gnu packages machine-learning)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-science)
#:use-module (gnu packages python-web)
@ -59,24 +60,42 @@
"test_copy_cut_paste"
;; AttributeError: 'NoneType' object has no attribute
;; 'isEnabled'
"test_item_context_menu")
"test_item_context_menu"
;; Tests fail with error: Failed: CALL ERROR: Exceptions
;; caught in Qt event loop.
"test_create_new_window"
"test_new_window"
"test_dont_load_swp_on_new_window"
"test_toolbox"
"test_widgettoolgrid"
"test_editlinksnode"
"test_links_edit"
"test_links_edit_widget"
"test_flattened"
"test_tooltree_registry")
" and not "))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'relax-requirements
(lambda _
(substitute* "setup.py"
;; Relax hard requirment of PIP.
((".*pip>=18.0.*") ""))))
(add-after 'unpack 'relax-requirements
(lambda _
(substitute* "setup.py"
;; Relax hard requirment of PIP.
((".*pip>=18.0.*") ""))))
(add-before 'check 'pre-check
(lambda _
(setenv "HOME" "/tmp")
(setenv "QT_PLUGIN_PATH"
(string-append #$(this-package-input "qtbase") "/lib/qt6/plugins:"
(getenv "QT_PLUGIN_PATH")))
(setenv "QT_QPA_PLATFORM" "offscreen"))))))
(native-inputs
(list python-pytest
python-pytest-qt
python-setuptools
python-trubar
python-wheel))
(inputs
(list qtbase))
(propagated-inputs
(list python-anyqt
python-cachecontrol

View file

@ -1123,6 +1123,34 @@ Anaconda Cloud. Anaconda Cloud is useful for sharing packages, notebooks and
environments.")
(license license:bsd-3)))
(define-public python-conda-inject
(package
(name "python-conda-inject")
(version "1.3.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/koesterlab/conda-inject")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1aig9l676wc2sjb20y7rdqf0hfcfjhh92yfiy82mf7kfnv7rp3rk"))))
(build-system pyproject-build-system)
(arguments
(list #:tests? #f)) ; tests require setting up Conda
(native-inputs
(list python-poetry-core))
(propagated-inputs
(list python-pyyaml))
(home-page "https://github.com/koesterlab/conda-inject")
(synopsis "Inject a conda environment into the current python environment")
(description
"This package provides helper functions for injecting a conda
environment into the current python environment (by modifying @code{sys.path},
without actually changing the current python environment).")
(license license:expat)))
(define-public python-conda-package-handling
(package
(name "python-conda-package-handling")
@ -1315,7 +1343,7 @@ written entirely in Python.")
(define-public conan
(package
(name "conan")
(version "2.0.9")
(version "2.7.1")
(source
(origin
(method git-fetch) ; no tests in PyPI archive
@ -1324,13 +1352,74 @@ written entirely in Python.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1ykfj7c3i0b57s7ql3p2lawxdzd2cn36f3k8p64lyzla8rwv4xdx"))))
(build-system python-build-system)
(base32 "00mrx1ighvf6r6fy2iqxr286w3jfd0gwlzcqsw15cm9axblx5av9"))))
(build-system pyproject-build-system)
(arguments
(list
#:modules '((guix build python-build-system)
#:modules '((guix build pyproject-build-system)
(guix build utils)
(ice-9 format))
#:test-flags
(let ((system (or (%current-target-system)
(%current-system))))
#~(list "-n" (number->string (parallel-job-count))
"-m" "not slow"
"--ignore=test/performance/"
;; E ModuleNotFoundError: No module named 'docker'
"--ignore=test/functional/command/runner_test.py"
;; Disable problematic tests.
"-k"
(string-append
;; These tests rely on networking.
"not download_retries_errors "
"and not ftp "
;; These tests are for old versions of cmake.
"and not test_custom_cmake_3_16 "
"and not test_custom_cmake_3_17 "
"and not test_custom_cmake_3_19 "
;; Guix sets PKG_CONFIG_PATH itself, which is not
;; expected by the following test.
"and not pkg_config_path "
"and not compare " ;caused by newer node-semver?
;; This test hard-codes a compiler version.
"and not test_toolchain "
;; The 'test_list' tests may fail
;; non-deterministically (see:
;; https://github.com/conan-io/conan/issues/13583).
"and not test_list "
;; These tests fail when Autoconf attempt to load a
;; shared library in the same directory (see:
;; https://github.com/conan-io/conan/issues/13577).
"and not test_other_client_can_link_autotools "
"and not test_autotools_lib_template "
;; Sometimes fail: https://github.com/conan-io/conan/issues/15936
"and not test_basic_parallel_install "
;; These tests require additional build tools
"and not test_premake "
"and not test_sconsdeps "
;; Unclear why libc is not found properly
"and not test_profile_detect_libc "
#$(if (not (string-prefix? "x86_64" system))
;; These tests either assume the machine is
;; x86_64, or require a cross-compiler to target
;; it.
(string-append
"and not cpp_package "
"and not exclude_code_analysis "
"and not cmakedeps_multi "
"and not locally_build_linux "
"and not custom_configuration "
"and not package_from_system "
"and not cross_build_command "
"and not test_package "
"and not test_same ")
"")
#$(if (not (or (string-prefix? "x86_64" system)
(string-prefix? "i686" system)))
;; This test only works with default arch "x86",
;; "x86_64", "sparc" or "sparcv9".
"and not settings_as_a_dict_conanfile "
""))))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-paths
@ -1345,21 +1434,22 @@ written entirely in Python.")
;; The test suite expects GCC 9 to be used (see:
;; https://github.com/conan-io/conan/issues/13575). Render the
;; check version agnostic.
(substitute* "conans/test/functional/toolchains/meson/_base.py"
(substitute* "test/functional/toolchains/meson/_base.py"
(("__GNUC__9")
"__GNUC__"))))
(add-after 'unpack 'use-current-cmake-for-tests
(lambda _
(substitute* (find-files "conans/test" "\\.py$")
(("@pytest.mark.tool\\(\"cmake\", \"3.23\")")
(substitute* (find-files "test" "\\.py$")
(("@pytest.mark.tool\\(\"cmake\", \".*\")")
"@pytest.mark.tool(\"cmake\")"))))
(add-before 'check 'configure-tests
(lambda _
(let* ((cmake-version #$(version-major+minor
(package-version cmake)))
(package-version
(this-package-native-input "cmake"))))
(pkg-config-version #$(version-major+minor
(package-version pkg-config))))
(call-with-output-file "conans/test/conftest_user.py"
(call-with-output-file "test/conftest_user.py"
(lambda (port)
(format port "\
tools_locations = {
@ -1378,61 +1468,12 @@ tools_locations = {
(add-before 'check 'set-home
(lambda _
(setenv "HOME" "/tmp")))
(replace 'check
(lambda* (#:key tests? outputs #:allow-other-keys)
(define system #$(or (%current-target-system)
(%current-system)))
(add-before 'check 'configure-tests
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "CONFIG_SHELL" (which "sh"))
(setenv "PATH" (string-append (getenv "PATH") ":"
#$output "/bin"))
(invoke "python" "-m" "pytest" "-vv"
"-n" (number->string (parallel-job-count))
"-m" "not slow"
;; Disable problematic tests.
"-k"
(string-append
;; These tests rely on networking.
"not download_retries_errors "
"and not ftp "
;; Guix sets PKG_CONFIG_PATH itself, which is not
;; expected by the following test.
"and not pkg_config_path "
"and not compare " ;caused by newer node-semver?
;; This test hard-codes a compiler version.
"and not test_toolchain "
;; The 'test_list' tests may fail
;; non-deterministically (see:
;; https://github.com/conan-io/conan/issues/13583).
"and not test_list "
;; These tests fail when Autoconf attempt to load a
;; shared library in the same directory (see:
;; https://github.com/conan-io/conan/issues/13577).
"and not test_other_client_can_link_autotools "
"and not test_autotools_lib_template "
;; Sometimes fail: https://github.com/conan-io/conan/issues/15936
"and not test_basic_parallel_install "
(if (not (string-prefix? "x86_64" system))
;; These tests either assume the machine is
;; x86_64, or require a cross-compiler to target
;; it.
(string-append
"and not cpp_package "
"and not exclude_code_analysis "
"and not cmakedeps_multi "
"and not locally_build_linux "
"and not custom_configuration "
"and not package_from_system "
"and not cross_build_command "
"and not test_package "
"and not test_same ")
"")
(if (not (or (string-prefix? "x86_64" system)
(string-prefix? "i686" system)))
;; This test only works with default arch "x86",
;; "x86_64", "sparc" or "sparcv9".
"and not settings_as_a_dict_conanfile "
"")))))))))
#$output "/bin"))))))))
(propagated-inputs
(list python-bottle
python-colorama
@ -1450,7 +1491,7 @@ tools_locations = {
python-requests
python-six
python-tqdm
python-urllib3))
python-urllib3-1.26))
(inputs
(list coreutils)) ;for printenv
(native-inputs
@ -1467,7 +1508,9 @@ tools_locations = {
python-parameterized
python-pytest
python-pytest-xdist
python-setuptools
python-webtest
python-wheel
which))
(home-page "https://conan.io")
(synopsis "Decentralized C/C++ package manager")

View file

@ -1,25 +0,0 @@
Specifying the `async_mode` parameter seems to have been a workaround for
packaging on Windows and macOS. If not given, flask_socketio.SocketIO will
probe for an available asynchronous model, e.g. `eventlet`, and otherwise gets
stuck if `gevent-socketio` is not available.
c.f. https://github.com/onionshare/onionshare/commit/ec7fa4ef16c9e1ba6028ee927c23f76c399a17a6
and https://github.com/onionshare/onionshare/issues/1510
diff --git a/cli/onionshare_cli/web/web.py b/cli/onionshare_cli/web/web.py
index 64844b5..7e1b095 100644
--- a/cli/onionshare_cli/web/web.py
+++ b/cli/onionshare_cli/web/web.py
@@ -164,10 +164,10 @@ class Web:
elif self.mode == "chat":
if self.common.verbose:
self.socketio = SocketIO(
- async_mode="gevent", logger=True, engineio_logger=True
+ logger=True, engineio_logger=True
)
else:
- self.socketio = SocketIO(async_mode="gevent")
+ self.socketio = SocketIO()
self.socketio.init_app(self.app)
self.chat_mode = ChatModeWeb(self.common, self)

View file

@ -0,0 +1,430 @@
From f0698133e7d6c353a3e6ae0fc62e57ba558a9bc0 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 28 Oct 2020 22:55:05 -0400
Subject: [PATCH] Skip problematic Python 3 tests in Guix.
A subset of the hunks in this patch is tracked upstream at
https://bugs.python.org/issue38845, which was contributed by Tanguy Le
Carrour <tanguy@bioneland.org>.
---
Lib/ctypes/test/test_callbacks.py | 3 +++
Lib/ctypes/test/test_find.py | 1 +
Lib/ctypes/test/test_libc.py | 3 +++
Lib/distutils/tests/test_archive_util.py | 2 ++
Lib/distutils/tests/test_sdist.py | 1 +
Lib/test/_test_multiprocessing.py | 2 ++
Lib/test/test_asyncio/test_base_events.py | 2 ++
Lib/test/test_generators.py | 1 +
Lib/test/test_pathlib.py | 3 +--
Lib/test/test_pdb.py | 4 ++--
Lib/test/test_regrtest.py | 2 ++
Lib/test/test_resource.py | 1 +
Lib/test/test_shutil.py | 2 ++
Lib/test/test_signal.py | 4 ++++
Lib/test/test_socket.py | 8 ++++++++
Lib/test/test_spwd.py | 6 ++----
Lib/test/test_tarfile.py | 9 ++++++---
Lib/test/test_threading.py | 3 +++
Lib/test/test_unicodedata.py | 1 +
Tools/scripts/run_tests.py | 2 +-
20 files changed, 48 insertions(+), 12 deletions(-)
diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py
index d8e9c5a760..94fc5929c9 100644
--- a/Lib/ctypes/test/test_callbacks.py
+++ b/Lib/ctypes/test/test_callbacks.py
@@ -5,6 +5,7 @@ from test import support
from ctypes import *
from ctypes.test import need_symbol
import _ctypes_test
+import platform
class Callbacks(unittest.TestCase):
functype = CFUNCTYPE
@@ -178,6 +179,8 @@ class SampleCallbacksTestCase(unittest.TestCase):
self.assertLess(diff, 0.01, "%s not less than 0.01" % diff)
+ @unittest.skipIf(platform.machine() in ['mips64'],
+ "This test fails on this platform")
def test_issue_8959_a(self):
from ctypes.util import find_library
libc_path = find_library("c")
diff --git a/Lib/ctypes/test/test_find.py b/Lib/ctypes/test/test_find.py
index 92ac1840ad..c8eb75dedd 100644
--- a/Lib/ctypes/test/test_find.py
+++ b/Lib/ctypes/test/test_find.py
@@ -116,6 +116,7 @@ class FindLibraryLinux(unittest.TestCase):
with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None):
self.assertNotEqual(find_library('c'), None)
+ @unittest.skipIf(True, "ldconfig is not used on Guix")
def test_find_library_with_ld(self):
with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \
unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None):
diff --git a/Lib/ctypes/test/test_libc.py b/Lib/ctypes/test/test_libc.py
index 56285b5ff8..c088ab3db8 100644
--- a/Lib/ctypes/test/test_libc.py
+++ b/Lib/ctypes/test/test_libc.py
@@ -2,6 +2,7 @@ import unittest
from ctypes import *
import _ctypes_test
+import platform
lib = CDLL(_ctypes_test.__file__)
@@ -17,6 +18,8 @@ class LibTest(unittest.TestCase):
import math
self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0))
+ @unittest.skipIf(platform.machine() in ['mips64'],
+ "This test fails on this platform")
def test_qsort(self):
comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char))
lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc
diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py
index e9aad0e40f..8bbaa51ee5 100644
--- a/Lib/distutils/tests/test_archive_util.py
+++ b/Lib/distutils/tests/test_archive_util.py
@@ -333,6 +333,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
self.assertEqual(os.path.basename(res), 'archive.tar.xz')
self.assertEqual(self._tarinfo(res), self._created_files)
+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
def test_make_archive_owner_group(self):
# testing make_archive with owner and group, with various combinations
# this works even if there's not gid/uid support
@@ -362,6 +363,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
@unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib")
@unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
def test_tarfile_root_owner(self):
tmpdir = self._create_files()
base_name = os.path.join(self.mkdtemp(), 'archive')
diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py
index 23db126959..6e2329df7d 100644
--- a/Lib/distutils/tests/test_sdist.py
+++ b/Lib/distutils/tests/test_sdist.py
@@ -443,6 +443,7 @@ class SDistTestCase(BasePyPIRCCommandTestCase):
"The tar command is not found")
@unittest.skipIf(find_executable('gzip') is None,
"The gzip command is not found")
+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
def test_make_distribution_owner_group(self):
# now building a sdist
dist, cmd = self.get_cmd()
diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
index e47905c863..31a5a9c308 100644
--- a/Lib/test/_test_multiprocessing.py
+++ b/Lib/test/_test_multiprocessing.py
@@ -1577,6 +1577,7 @@ class _TestCondition(BaseTestCase):
if pid is not None:
os.kill(pid, signal.SIGINT)
+ @unittest.skipIf(True, "This fails for unknown reasons on Guix")
def test_wait_result(self):
if isinstance(self, ProcessesMixin) and sys.platform != 'win32':
pid = os.getpid()
@@ -3905,6 +3906,7 @@ class _TestSharedMemory(BaseTestCase):
sms.close()
@unittest.skipIf(os.name != "posix", "not feasible in non-posix platforms")
+ @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
def test_shared_memory_SharedMemoryServer_ignores_sigint(self):
# bpo-36368: protect SharedMemoryManager server process from
# KeyboardInterrupt signals.
diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
index 533d5cc7f5..c4f860cc3b 100644
--- a/Lib/test/test_asyncio/test_base_events.py
+++ b/Lib/test/test_asyncio/test_base_events.py
@@ -1341,6 +1341,8 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
self._test_create_connection_ip_addr(m_socket, False)
@patch_socket
+ @unittest.skipUnless(support.is_resource_enabled('network'),
+ 'network is not enabled')
def test_create_connection_service_name(self, m_socket):
m_socket.getaddrinfo = socket.getaddrinfo
sock = m_socket.socket.return_value
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
index 3bf1522808..04bac8a7db 100644
--- a/Lib/test/test_generators.py
+++ b/Lib/test/test_generators.py
@@ -33,6 +33,7 @@ class SignalAndYieldFromTest(unittest.TestCase):
else:
return "FAILED"
+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment')
def test_raise_and_yield_from(self):
gen = self.generator1()
gen.send(None)
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
index 3da35710b9..5404f9193d 100644
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -2408,10 +2408,7 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
self.assertEqual(given, expect)
self.assertEqual(set(p.rglob("FILEd*")), set())
- @unittest.skipUnless(hasattr(pwd, 'getpwall'),
- 'pwd module does not expose getpwall()')
- @unittest.skipIf(sys.platform == "vxworks",
- "no home directory on VxWorks")
+ @unittest.skipIf(True, "Guix builder home is '/' which causes trouble for these tests")
def test_expanduser(self):
P = self.cls
support.import_module('pwd')
diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
index 8016f81e5a..10190486b4 100644
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -1219,11 +1219,11 @@ def test_pdb_issue_20766():
> <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
-> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
(Pdb) continue
- pdb 1: <built-in function default_int_handler>
+ pdb 1: 1
> <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
-> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
(Pdb) continue
- pdb 2: <built-in function default_int_handler>
+ pdb 2: 1
"""
diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py
index a77638b10a..2069b349a8 100644
--- a/Lib/test/test_regrtest.py
+++ b/Lib/test/test_regrtest.py
@@ -811,6 +811,7 @@ class ArgsTestCase(BaseTestCase):
output = self.run_tests('--fromfile', filename)
self.check_executed_tests(output, tests)
+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
def test_interrupted(self):
code = TEST_INTERRUPTED
test = self.create_test('sigint', code=code)
@@ -828,6 +829,7 @@ class ArgsTestCase(BaseTestCase):
% (self.TESTNAME_REGEX, len(tests)))
self.check_line(output, regex)
+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
def test_slowest_interrupted(self):
# Issue #25373: test --slowest with an interrupted test
code = TEST_INTERRUPTED
diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py
index e5ece5284c..5299e54507 100644
--- a/Lib/test/test_resource.py
+++ b/Lib/test/test_resource.py
@@ -148,6 +148,7 @@ class ResourceTest(unittest.TestCase):
@unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit')
@support.requires_linux_version(2, 6, 36)
+ @unittest.skipIf(True, "Bug: the PermissionError is not raised")
def test_prlimit(self):
self.assertRaises(TypeError, resource.prlimit)
self.assertRaises(ProcessLookupError, resource.prlimit,
diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
index e19af64be0..1b893df6fa 100644
--- a/Lib/test/test_shutil.py
+++ b/Lib/test/test_shutil.py
@@ -1427,6 +1427,7 @@ class TestArchives(BaseTest, unittest.TestCase):
base_name = os.path.join(tmpdir, 'archive')
self.assertRaises(ValueError, make_archive, base_name, 'xxx')
+ @unittest.skipIf(True, "The Guix build container has no root user")
@support.requires_zlib()
def test_make_archive_owner_group(self):
# testing make_archive with owner and group, with various combinations
@@ -1455,6 +1456,7 @@ class TestArchives(BaseTest, unittest.TestCase):
self.assertTrue(os.path.isfile(res))
+ @unittest.skipIf(True, "The Guix build container has no root user")
@support.requires_zlib()
@unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
def test_tarfile_root_owner(self):
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
index 45553a6a42..55623f01a3 100644
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -78,7 +78,8 @@ class PosixTests(unittest.TestCase):
self.assertLess(len(s), signal.NSIG)
@unittest.skipUnless(sys.executable, "sys.executable required.")
@support.requires_subprocess()
+ @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
def test_keyboard_interrupt_exit_code(self):
"""KeyboardInterrupt triggers exit via SIGINT."""
process = subprocess.run(
@@ -128,7 +129,8 @@ class WindowsSignalTests(unittest.TestCase):
signal.signal(7, handler)
@unittest.skipUnless(sys.executable, "sys.executable required.")
@support.requires_subprocess()
+ @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
def test_keyboard_interrupt_exit_code(self):
"""KeyboardInterrupt triggers an exit using STATUS_CONTROL_C_EXIT."""
# We don't test via os.kill(os.getpid(), signal.CTRL_C_EVENT) here
@@ -1245,6 +1247,7 @@ class StressTest(unittest.TestCase):
class RaiseSignalTest(unittest.TestCase):
+ @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
def test_sigint(self):
with self.assertRaises(KeyboardInterrupt):
signal.raise_signal(signal.SIGINT)
@@ -1275,6 +1278,7 @@ class RaiseSignalTest(unittest.TestCase):
class PidfdSignalTest(unittest.TestCase):
+ @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
@unittest.skipUnless(
hasattr(signal, "pidfd_send_signal"),
"pidfd support not built in",
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index aefba4f397..6c89f558d5 100755
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -1009,6 +1009,8 @@ class GeneralModuleTests(unittest.TestCase):
if not fqhn in all_host_names:
self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
+ @unittest.skipUnless(support.is_resource_enabled('network'),
+ 'network is not enabled')
def test_host_resolution(self):
for addr in [socket_helper.HOSTv4, '10.0.0.1', '255.255.255.255']:
self.assertEqual(socket.gethostbyname(addr), addr)
@@ -1140,6 +1142,8 @@ class GeneralModuleTests(unittest.TestCase):
self.assertWarns(DeprecationWarning, socket.ntohs, k)
self.assertWarns(DeprecationWarning, socket.htons, k)
+ @unittest.skipUnless(os.path.exists("/etc/services"),
+ "getservbyname uses /etc/services, which is not in the chroot")
def testGetServBy(self):
eq = self.assertEqual
# Find one service that exists, then check all the related interfaces.
@@ -1489,6 +1493,8 @@ class GeneralModuleTests(unittest.TestCase):
raise
self.assertRaises(TypeError, s.ioctl, socket.SIO_LOOPBACK_FAST_PATH, None)
+ @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
+ "getaddrinfo() will fail")
def testGetaddrinfo(self):
try:
socket.getaddrinfo('localhost', 80)
@@ -1571,6 +1577,8 @@ class GeneralModuleTests(unittest.TestCase):
# only IP addresses are allowed
self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0)
+ @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
+ "getaddrinfo() will fail")
@unittest.skipUnless(support.is_resource_enabled('network'),
'network is not enabled')
def test_idna(self):
diff --git a/Lib/test/test_spwd.py b/Lib/test/test_spwd.py
index 07793c84c8..fec672bcbe 100644
--- a/Lib/test/test_spwd.py
+++ b/Lib/test/test_spwd.py
@@ -5,8 +5,7 @@ from test import support
spwd = support.import_module('spwd')
-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() == 0,
- 'root privileges required')
+@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
class TestSpwdRoot(unittest.TestCase):
def test_getspall(self):
@@ -56,8 +55,7 @@ class TestSpwdRoot(unittest.TestCase):
self.assertRaises(TypeError, spwd.getspnam, bytes_name)
-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() != 0,
- 'non-root user required')
+@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
class TestSpwdNonRoot(unittest.TestCase):
def test_getspnam_exception(self):
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 29cde91bf7..8d0f20e8bf 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -2607,9 +2607,12 @@ def root_is_uid_gid_0():
import pwd, grp
except ImportError:
return False
- if pwd.getpwuid(0)[0] != 'root':
- return False
- if grp.getgrgid(0)[0] != 'root':
+ try:
+ if pwd.getpwuid(0)[0] != 'root':
+ return False
+ if grp.getgrgid(0)[0] != 'root':
+ return False
+ except KeyError:
return False
return True
diff --git a/Lib/test/test_tools/test_freeze.py b/Lib/test/test_tools/test_freeze.py
index 0e7ed67de7..6539a2983b 100644
--- a/Lib/test/test_tools/test_freeze.py
+++ b/Lib/test/test_tools/test_freeze.py
@@ -23,6 +23,7 @@
'test is too slow with PGO')
class TestFreeze(unittest.TestCase):
+ @unittest.skipIf(True, 'Fails on Guix.')
@support.requires_resource('cpu') # Building Python is slow
def test_freeze_simple_script(self):
script = textwrap.dedent("""
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index c21cdf8eb7..6c9d575032 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -1398,5 +1398,6 @@ class MiscTestCase(unittest.TestCase):
signal.signal(signum, handler)
+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
def test_interrupt_main_subthread(self):
# Calling start_new_thread with a function that executes interrupt_main
# should raise KeyboardInterrupt upon completion.
@@ -1409,6 +1410,8 @@ class InterruptMainTests(unittest.TestCase):
t.join()
t.join()
+
+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
def test_interrupt_main_mainthread(self):
# Make sure that if interrupt_main is called in main thread that
# KeyboardInterrupt is raised instantly.
diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py
index b552d2bd17..28b1144e15 100644
--- a/Lib/test/test_unicodedata.py
+++ b/Lib/test/test_unicodedata.py
@@ -309,6 +309,7 @@ class UnicodeMiscTest(UnicodeDatabaseTest):
self.assertEqual(len(lines), 1,
r"\u%.4x should not be a linebreak" % i)
+@requires_resource('network')
class NormalizationTest(unittest.TestCase):
@staticmethod
def check_version(testfile):
diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py
index bcfa5e943b..1f2484971b 100644
--- a/Tools/scripts/run_tests.py
+++ b/Tools/scripts/run_tests.py
@@ -41,7 +41,7 @@ def main(regrtest_args):
else:
args.extend(['-j', '0']) # Use all CPU cores
if not any(is_resource_use_flag(arg) for arg in regrtest_args):
- args.extend(['-u', 'all,-largefile,-audio,-gui'])
+ args.extend(['-u', 'all,-largefile,-audio,-gui,-network'])
if cross_compile and hostrunner:
# If HOSTRUNNER is set and -p/--python option is not given, then
--
2.29.2

View file

@ -0,0 +1,147 @@
From 7e6bcdfeed54500ca533d2f0eb12078248c43c77 Mon Sep 17 00:00:00 2001
Message-ID: <7e6bcdfeed54500ca533d2f0eb12078248c43c77.1743682382.git.ngraves@ngraves.fr>
From: Nicolas Graves <ngraves@ngraves.fr>
Date: Thu, 3 Apr 2025 11:33:58 +0200
Subject: [PATCH] samples: Use deterministic samples in Guix.
---
bed_reader/_sample_data.py | 86 +++++++++-----------------------------
1 file changed, 19 insertions(+), 67 deletions(-)
diff --git a/bed_reader/_sample_data.py b/bed_reader/_sample_data.py
index 6ca4cc0..6a1146e 100644
--- a/bed_reader/_sample_data.py
+++ b/bed_reader/_sample_data.py
@@ -1,33 +1,8 @@
+import os
import tempfile
from pathlib import Path, PurePath
from typing import Union
-try:
- import pooch
-
- """
- Load sample data.
- """
-
- POOCH = pooch.create(
- # Use the default cache folder for the OS
- path=pooch.os_cache("bed_reader"),
- # The remote data is on Github
- base_url="https://raw.githubusercontent.com/"
- + "fastlmm/bed-sample-files/main/",
- # If this is a development version, get the data from the master branch
- version_dev="main",
- # The registry specifies the files that can be fetched
- env="BED_READER_DATA_DIR",
- )
-
- # Get registry file from package_data
- registry_file = Path(__file__).parent / "tests/registry.txt"
- # Load this registry file
- POOCH.load_registry(registry_file)
-except ImportError:
- pooch = None
-
def sample_file(filepath: Union[str, Path]) -> str:
"""Retrieve a sample .bed file. (Also retrieves associated .fam and .bim files).
@@ -40,50 +15,41 @@ def sample_file(filepath: Union[str, Path]) -> str:
Returns
-------
str
- Local name of sample .bed file.
-
-
- .. note::
- This function requires the :mod:`pooch` package. Install `pooch` with:
-
- .. code-block:: bash
-
- pip install --upgrade bed-reader[samples]
-
-
- By default this function puts files under the user's cache directory.
- Override this by setting
- the `BED_READER_DATA_DIR` environment variable.
+ Local path of sample .bed file.
Example
--------
.. doctest::
- >>> # pip install bed-reader[samples] # if needed
>>> from bed_reader import sample_file
>>>
>>> file_name = sample_file("small.bed")
>>> print(f"The local file name is '{file_name}'")
The local file name is '...small.bed'
-
"""
- if pooch is None:
- raise ImportError(
- "The function sample_file() requires pooch. "
- + "Install it with 'pip install --upgrade bed-reader[samples]'.",
+ filepath = Path(filepath)
+ sample_dir = os.environ.get("BED_READER_DATA_DIR")
+ if sample_dir is None:
+ raise EnvironmentError(
+ "BED_READER_DATA_DIR environment variable is not set. "
+ "This should point to the directory containing the sample files."
)
- filepath = Path(filepath)
- file_string = str(filepath)
- if file_string.lower().endswith(".bed"):
- POOCH.fetch(file_string[:-4] + ".fam")
- POOCH.fetch(file_string[:-4] + ".bim")
- return POOCH.fetch(file_string)
+ file_path = Path(sample_dir) / filepath
+
+ # Check if file exists
+ if not file_path.exists():
+ raise FileNotFoundError(
+ f"Sample file '{filepath}' not found in {sample_dir}. "
+ f"Make sure you're using the latest samples in BED_READER_DATA_DIR."
+ )
+
+ return str(file_path)
def sample_url(filepath: Union[str, Path]) -> str:
- """Retrieve a URL to a sample .bed file. (Also makes ready associated .fam and .bim files).
+ """Retrieve a URL to a sample .bed file.
Parameters
----------
@@ -95,25 +61,11 @@ def sample_url(filepath: Union[str, Path]) -> str:
str
URL to sample .bed file.
-
- .. note::
- This function requires the :mod:`pooch` package. Install `pooch` with:
-
- .. code-block:: bash
-
- pip install --upgrade bed-reader[samples]
-
-
- By default this function puts files under the user's cache directory.
- Override this by setting
- the `BED_READER_DATA_DIR` environment variable.
-
Example
--------
.. doctest::
- >>> # pip install bed-reader[samples] # if needed
>>> from bed_reader import sample_url
>>>
>>> url = sample_url("small.bed")
--
2.49.0

View file

@ -0,0 +1,201 @@
From d89186b47dc25c5ef5907c146edf3f792d50774b Mon Sep 17 00:00:00 2001
Message-ID: <d89186b47dc25c5ef5907c146edf3f792d50774b.1743608515.git.ngraves@ngraves.fr>
From: Nicolas Graves <ngraves@ngraves.fr>
Date: Wed, 2 Apr 2025 17:29:45 +0200
Subject: [PATCH] Update to python 3.11
---
property_cached/__init__.py | 21 +++-------
tests/test_async_cached_property.py | 3 +-
tests/test_coroutine_cached_property.py | 51 ++++++++++---------------
3 files changed, 27 insertions(+), 48 deletions(-)
diff --git a/property_cached/__init__.py b/property_cached/__init__.py
index 3353048..c033542 100644
--- a/property_cached/__init__.py
+++ b/property_cached/__init__.py
@@ -3,6 +3,7 @@ import functools
import pkg_resources
import threading
import weakref
+from inspect import iscoroutinefunction
from time import time
@@ -31,12 +32,12 @@ class cached_property(property):
if obj is None:
return self
- if asyncio and asyncio.iscoroutinefunction(self.func):
- return self._wrap_in_coroutine(obj)
-
value = self.cache.get(obj, self._sentinel)
if value is self._sentinel:
- value = self.cache[obj] = self.func(obj)
+ if iscoroutinefunction(self.func):
+ self.cache[obj] = value = asyncio.ensure_future(self.func(obj))
+ else:
+ self.cache[obj] = value = self.func(obj)
return value
@@ -49,18 +50,6 @@ class cached_property(property):
def __delete__(self, obj):
del self.cache[obj]
- def _wrap_in_coroutine(self, obj):
-
- @functools.wraps(obj)
- @asyncio.coroutine
- def wrapper():
- value = self.cache.get(obj, self._sentinel)
- if value is self._sentinel:
- self.cache[obj] = value = asyncio.ensure_future(self.func(obj))
- return value
-
- return wrapper()
-
class threaded_cached_property(cached_property):
"""
diff --git a/tests/test_async_cached_property.py b/tests/test_async_cached_property.py
index 1af139d..32b3410 100644
--- a/tests/test_async_cached_property.py
+++ b/tests/test_async_cached_property.py
@@ -9,8 +9,7 @@ import property_cached as cached_property
def unittest_run_loop(f):
def wrapper(*args, **kwargs):
- coro = asyncio.coroutine(f)
- future = coro(*args, **kwargs)
+ future = f(*args, **kwargs)
loop = asyncio.get_event_loop()
loop.run_until_complete(future)
diff --git a/tests/test_coroutine_cached_property.py b/tests/test_coroutine_cached_property.py
index 40e443b..5864301 100644
--- a/tests/test_coroutine_cached_property.py
+++ b/tests/test_coroutine_cached_property.py
@@ -14,8 +14,7 @@ import property_cached as cached_property
def unittest_run_loop(f):
def wrapper(*args, **kwargs):
- coro = asyncio.coroutine(f)
- future = coro(*args, **kwargs)
+ future = f(*args, **kwargs)
loop = asyncio.get_event_loop()
loop.run_until_complete(future)
@@ -33,14 +32,12 @@ def CheckFactory(cached_property_decorator):
self.control_total = 0
self.cached_total = 0
- @asyncio.coroutine
- def add_control(self):
+ async def add_control(self):
self.control_total += 1
return self.control_total
@cached_property_decorator
- @asyncio.coroutine
- def add_cached(self):
+ async def add_cached(self):
self.cached_total += 1
return self.cached_total
@@ -52,74 +49,68 @@ class TestCachedProperty(unittest.TestCase):
cached_property_factory = cached_property.cached_property
- @asyncio.coroutine
- def assert_control(self, check, expected):
+ async def assert_control(self, check, expected):
"""
Assert that both `add_control` and 'control_total` equal `expected`
"""
- value = yield from check.add_control()
+ value = await check.add_control()
self.assertEqual(value, expected)
self.assertEqual(check.control_total, expected)
- @asyncio.coroutine
- def assert_cached(self, check, expected):
+ async def assert_cached(self, check, expected):
"""
Assert that both `add_cached` and 'cached_total` equal `expected`
"""
print("assert_cached", check.add_cached)
- value = yield from check.add_cached
+ value = await check.add_cached
self.assertEqual(value, expected)
self.assertEqual(check.cached_total, expected)
@unittest_run_loop
- @asyncio.coroutine
- def test_cached_property(self):
+ async def test_cached_property(self):
Check = CheckFactory(self.cached_property_factory)
check = Check()
# The control shows that we can continue to add 1
- yield from self.assert_control(check, 1)
- yield from self.assert_control(check, 2)
+ await self.assert_control(check, 1)
+ await self.assert_control(check, 2)
# The cached version demonstrates how nothing is added after the first
- yield from self.assert_cached(check, 1)
- yield from self.assert_cached(check, 1)
+ await self.assert_cached(check, 1)
+ await self.assert_cached(check, 1)
# The cache does not expire
with freeze_time("9999-01-01"):
- yield from self.assert_cached(check, 1)
+ await self.assert_cached(check, 1)
# Typically descriptors return themselves if accessed though the class
# rather than through an instance.
self.assertTrue(isinstance(Check.add_cached, self.cached_property_factory))
@unittest_run_loop
- @asyncio.coroutine
- def test_reset_cached_property(self):
+ async def test_reset_cached_property(self):
Check = CheckFactory(self.cached_property_factory)
check = Check()
# Run standard cache assertion
- yield from self.assert_cached(check, 1)
- yield from self.assert_cached(check, 1)
+ await self.assert_cached(check, 1)
+ await self.assert_cached(check, 1)
# Clear the cache
del check.add_cached
# Value is cached again after the next access
- yield from self.assert_cached(check, 2)
- yield from self.assert_cached(check, 2)
+ await self.assert_cached(check, 2)
+ await self.assert_cached(check, 2)
@unittest_run_loop
- @asyncio.coroutine
- def test_none_cached_property(self):
+ async def test_none_cached_property(self):
class Check(object):
def __init__(self):
self.cached_total = None
@self.cached_property_factory
- @asyncio.coroutine
- def add_cached(self):
+ async def add_cached(self):
return self.cached_total
- yield from self.assert_cached(Check(), None)
+ await self.assert_cached(Check(), None)
--
2.49.0

View file

@ -5,16 +5,15 @@ It seems that we cannot easily change the destination folder of these
files though, so this variable must be set on a per-package basis (and
non through search-path).
--- sip/sipbuild/builder.py 2023-03-22 09:06:37.588792878 +0100
+++ sip/sipbuild/builder.py 2023-03-22 09:10:35.830181134 +0100
@@ -254,6 +254,10 @@
--- sip/sipbuild/builder.py
+++ sip/sipbuild/builder.py
@@ -227,5 +227,9 @@
os.path.join(project.target_dir,
project.get_bindings_dir()))
+ # Add extra bindings from environment for GNU Guix.
+ if 'SIP_INCLUDE_DIRS' in os.environ:
+ sip_include_dirs.extend(os.environ['SIP_INCLUDE_DIRS'].split(os.pathsep))
+ # Add extra bindings from environment for GNU Guix
+ if 'SIP_INCLUDE_DIRS' in os.environ:
+ sip_include_dirs.extend(os.environ['SIP_INCLUDE_DIRS'].split(os.pathsep))
+
# Generate the sip.h file for the shared sip module.
copy_sip_h(abi_major_version, project.build_dir,
project.sip_module, version_info=project.version_info)
# Generate the code for each set of bindings.
api_files = []

View file

@ -0,0 +1,67 @@
From 8cb8808b3ceccf4ab3ac542739ef490abe7e76b3 Mon Sep 17 00:00:00 2001
Message-ID: <8cb8808b3ceccf4ab3ac542739ef490abe7e76b3.1743597010.git.ngraves@ngraves.fr>
From: Nicolas Graves <ngraves@ngraves.fr>
Date: Wed, 2 Apr 2025 14:29:40 +0200
Subject: [PATCH] Fix tsl map use
---
packages/vaex-core/src/hash_string.hpp | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/packages/vaex-core/src/hash_string.hpp b/packages/vaex-core/src/hash_string.hpp
index d3b60199..0ed69d1c 100644
--- a/packages/vaex-core/src/hash_string.hpp
+++ b/packages/vaex-core/src/hash_string.hpp
@@ -39,13 +39,15 @@ class hash_base : public hash_common<Derived, T, hashmap<T, int64_t>> {
for (int i = 0; i < nmaps; i++) {
string_arrays.emplace_back(std::make_shared<StringList64>());
StringList64 *strings = string_arrays[i].get();
- // equal_to<string_ref>& eq = this->maps[i].key_eq();
- this->maps[i].m_ht.strings_equals = strings;
- this->maps[i].m_ht.strings_hash = strings;
+ equal_to<key_type> eq;
+ eq.strings_equals = strings;
+ hash<key_type> h;
+ h.strings_hash = strings;
+ this->maps[i] = hashmap_type(8, h, eq);
}
};
- virtual std::string _get(hashmap_type &map, typename hashmap_type::key_type key) override { return map.m_ht.strings_equals->get(key.index); };
+ virtual std::string _get(hashmap_type &map, typename hashmap_type::key_type key) override { return string_arrays[0]->get(key.index); };
size_t bytes_used() const {
int64_t buffer_size = 0; // collect buffer size
@@ -391,9 +393,12 @@ class ordered_set : public hash_base<ordered_set<T>, T, T, V> {
template <class SL>
static ordered_set *create(std::shared_ptr<SL> keys, int64_t null_value, int64_t nan_count, int64_t null_count, std::string *fingerprint) {
ordered_set *set = new ordered_set(1);
- set->maps[0].m_ht.strings_equals = keys.get();
- set->maps[0].m_ht.strings_hash = keys.get();
set->string_arrays[0] = keys;
+ equal_to<key_type> eq;
+ eq.strings_equals = keys.get();
+ hash<key_type> h;
+ h.strings_hash = keys.get();
+ set->maps[0] = hashmap_type(keys->length, h, eq);
{
size_t size = keys->length;
set->maps[0].reserve(size);
@@ -701,9 +706,11 @@ class index_hash : public hash_base<index_hash<T>, T, T, V> {
// string_arrays_overflow.emplace_back(std::make_shared<StringList64>());
// for each key in overflow, it should be present in the main string array
StringList64 *strings = this->string_arrays[i].get();
- // equal_to<string_ref>& eq = this->maps[i].key_eq();
- overflows[i].m_ht.strings_equals = strings;
- overflows[i].m_ht.strings_hash = strings;
+ equal_to<key_type> eq;
+ eq.strings_equals = strings;
+ hash<key_type> h;
+ h.strings_hash = strings;
+ overflows[i] = overflow_type(8, h, eq);
}
}
--
2.49.0

View file

@ -1,42 +0,0 @@
Merged upstream but not yet released (see:
https://github.com/wxWidgets/Phoenix/pull/2387/commits/5d9f7aa185cd18da3e93ae1d0033fb9172d7a714).
From 5d9f7aa185cd18da3e93ae1d0033fb9172d7a714 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Mon, 1 May 2023 13:53:55 -0400
Subject: [PATCH] agw: Fix TypeError caused by floats with Python 3.10
extensions.
This fixes the following error:
File "/lib/python3.10/site-packages/wx/lib/agw/pygauge.py", line 380, in OnPaint
dc.DrawText(drawString, textXPos, textYPos)
TypeError: DC.DrawText(): arguments did not match any overloaded call:
overload 1: argument 2 has unexpected type 'float'
overload 2: argument 2 has unexpected type 'float'
TimeLeft: 3.0
Visible when using Python 3.10 or newer.
---
wx/lib/agw/pygauge.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/wx/lib/agw/pygauge.py b/wx/lib/agw/pygauge.py
index b8654436a..da42e6f61 100644
--- a/wx/lib/agw/pygauge.py
+++ b/wx/lib/agw/pygauge.py
@@ -367,12 +367,12 @@ def OnPaint(self, event):
drawString = self._drawIndicatorText_formatString.format(drawValue)
rect = self.GetClientRect()
(textWidth, textHeight, descent, extraLeading) = dc.GetFullTextExtent(drawString)
- textYPos = (rect.height-textHeight)/2
+ textYPos = (rect.height-textHeight)//2
if textHeight > rect.height:
textYPos = 0-descent+extraLeading
- textXPos = (rect.width-textWidth)/2
+ textXPos = (rect.width-textWidth)//2
if textWidth>rect.width:
textXPos = 0

View file

@ -1,22 +0,0 @@
Work around trytond.module not being a real namespace module.
Solution is to add all trytond module's locations to
trytond.modules._path__. This will make trytond.module behave much
like a namespace module.
Adding to __path__ is done in update_egg_modules() to ensure __path__
is updated whenever the list of egg modules is updated.
*** a/trytond/modules/__init__.py 1970-01-01 01:00:01.000000000 +0100
--- b/trytond/modules/__init__.py 2021-12-02 18:12:15.385101986 +0100
***************
*** 38,43 ****
--- 38,46 ----
import pkg_resources
for ep in pkg_resources.iter_entry_points('trytond.modules'):
EGG_MODULES[ep.name] = ep
+ path = os.path.join(ep.dist.location, 'trytond', 'modules')
+ if not path in __path__ and os.path.isdir(path):
+ __path__.append(path)
except ImportError:
pass

View file

@ -366,7 +366,7 @@ you to figure out what is going on in that merge you keep avoiding.")
(define-public patchwork
(package
(name "patchwork")
(version "3.1.1")
(version "3.2.1")
(source (origin
(method git-fetch)
(uri (git-reference
@ -375,7 +375,7 @@ you to figure out what is going on in that merge you keep avoiding.")
(file-name (git-file-name name version))
(sha256
(base32
"0is9d4gf93jcbyshyj2k3kjyrjnvimrm6bai6dbcx630md222j5w"))))
"04ikawdyhjwspxvhazbp5f5vym672y0jcw8rd2m75h9ipcpnyxim"))))
(build-system python-build-system)
(arguments
`(;; TODO: Tests require a running database
@ -499,7 +499,7 @@ if __name__ == \"__main__\":
(inputs
(list python-wrapper))
(propagated-inputs
(list python-django-3.2
(list python-django
;; TODO: Make this configurable
python-psycopg2
python-mysqlclient

View file

@ -2,7 +2,7 @@
;;; Copyright © 2014, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017, 2018, 2019, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017-2019, 2022-2025 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
@ -175,7 +175,7 @@ internal RPC protocols and file formats.")
(package
(inherit protobuf)
(name "protobuf")
(version "3.20.2")
(version "3.20.3")
(source (origin
(method url-fetch)
(uri (string-append
@ -186,7 +186,7 @@ internal RPC protocols and file formats.")
(snippet '(delete-file-recursively "third_party"))
(sha256
(base32
"1hsscx9jm8qv3afgwc764rx9sx1ylkrr54xw1wc0mfjbl8mpw5m0"))))
"0ggyfrfal7wms4n8pba224jwpjxn19rigd5y90m3x2bg97ych775"))))
(build-system gnu-build-system)
(arguments (substitute-keyword-arguments (package-arguments protobuf)
;; XXX: insists on using bundled googletest
@ -467,21 +467,18 @@ mechanism for serializing structured data.")
(define-public python-protobuf
(package
(name "python-protobuf")
(version "3.20.2")
(version "3.20.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "protobuf" version))
(sha256
(base32
"0l0p2lczs5iahgkhzm3298pjl49bk9iiwngkglg7ll7fkqqwlbbi"))))
"1wh5f4rnzbv46xy1rx62cprhg5hqf2py06s9b7rfpzwwki12fd1f"))))
(build-system python-build-system)
(inputs (list protobuf))
(arguments
`(;; Favor C++ implementation from protobuf over the native Python
;; implementation. The additional dependency yields significant
;; performance improvements for some workloads.
#:configure-flags '("--cpp_implementation")))
;; The C++ implementation is not compatible with Python 3.11, so we cannot
;; pass --cpp_implementation any more.
(inputs (list protobuf-3.20))
(home-page "https://github.com/google/protobuf")
(synopsis "Protocol buffers is a data interchange format")
(description

View file

@ -344,18 +344,6 @@ facilitate packaging Python projects, where packaging includes:
license:asl2.0 ;packaging is dual ASL2/BSD-2
license:bsd-2))))
;; This is the last version with use_2to3 support.
(define-public python-setuptools-57
(package
(inherit python-setuptools)
(version "57.5.0")
(source (origin
(inherit (package-source python-setuptools))
(uri (pypi-uri "setuptools" version))
(sha256
(base32
"091sp8lrin7qllrhhx7y0iiv5gdb1d3l8a1ip5knk77ma1njdlyr"))))))
(define-public python-wheel
(package
(name "python-wheel")
@ -412,14 +400,14 @@ installed with a newer @code{pip} or with wheel's own command line utility.")
(define-public python-pyparsing
(package
(name "python-pyparsing")
(version "3.0.6")
(version "3.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyparsing" version))
(sha256
(base32 "109b9r802wb472hgmxclljprh5cid0w3p6mk9alba7pg2c0frgfr"))))
(build-system python-build-system)
(base32 "02jz5rv3vx46xvjszda467l269jz9narlrwd0a83mpk6zma0i631"))))
(build-system pyproject-build-system)
(outputs '("out" "doc"))
(arguments
`(#:tests? #f ;no test target
@ -440,6 +428,7 @@ installed with a newer @code{pip} or with wheel's own command line utility.")
(find-files dir ".*")))
(list "docs" "htmldoc" "examples")
(list doc html-doc examples))))))))
(native-inputs (list python-flit-core))
(home-page "https://github.com/pyparsing/pyparsing")
(synopsis "Python parsing class library")
(description
@ -459,7 +448,8 @@ that client code uses to construct the grammar directly in Python code.")
(method url-fetch)
(uri (pypi-uri "pyparsing" version))
(sha256
(base32 "1hgc8qrbq1ymxbwfbjghv01fm3fbpjwpjwi0bcailxxzhf3yq0y2"))))))
(base32 "1hgc8qrbq1ymxbwfbjghv01fm3fbpjwpjwi0bcailxxzhf3yq0y2"))))
(native-inputs (list python-setuptools python-wheel))))
(define-public python-packaging-bootstrap
(package
@ -569,6 +559,16 @@ a light weight, fully compliant, self-contained package allowing PEP 517
compatible build front-ends to build Poetry managed projects.")
(license license:expat)))
(define-public python-poetry-core-next
(package/inherit python-poetry-core
(version "2.1.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "poetry_core" version))
(sha256
(base32 "015a0802radb2x5wsbywm4fggv4s1srh8zyml5v58xgrxg8bpnzr"))))))
;;; This package exists to bootstrap python-tomli.
(define-public python-flit-core-bootstrap
(package

View file

@ -288,27 +288,70 @@ Avocado machine readable outputs this one is streamlined (per test results).
@end table")
(license license:gpl2))) ;some files are under GPLv2 only
(define-public python-pytest-black
(package
(name "python-pytest-black")
(version "0.6.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest_black" version))
(sha256
(base32
"04dmhv8dzh356qdxz6hrwfz3nk3mlc9shicgpns5r03rydap9dzc"))))
(build-system pyproject-build-system)
(native-inputs
(list python-setuptools
python-wheel))
(propagated-inputs
(list python-black
python-pytest
python-toml))
;; Project maintenance has been changed, see
;; <https://github.com/shopkeep/pytest-black/issues/70>.
(home-page "https://github.com/coherent-oss/pytest-black")
(synopsis "Pytest plugin to enable format checking with black")
(description
"This package provides a pytest plugin to enable format checking with the
Python code formatter \"black\".")
(license license:expat)))
(define-public python-pytest-freezer
(package
(name "python-pytest-freezer")
(version "0.4.9")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest_freezer" version))
(sha256
(base32 "0an8y6ri3bhij4137gphdw2yg6rq7if4nb1qjj7zjsy4kjy1dgr1"))))
(build-system pyproject-build-system)
(native-inputs
(list python-flit-core))
(propagated-inputs
(list python-freezegun
python-pytest))
(home-page "https://github.com/pytest-dev/pytest-freezer/")
(synopsis "Pytest plugin providing a fixture interface for spulec/freezegun")
(description
"Pytest plugin providing a fixture interface for
@url{https://github.com/spulec/freezegun, freezegun}.")
(license license:expat)))
(define-public python-beartype
(package
(name "python-beartype")
(version "0.10.4")
(version "0.19.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "beartype" version))
(sha256
(base32 "0amzckgw9c93bl4jf0q6322j9wyyf3i8vl03yixfkrpllzv6kv14"))))
(base32 "0wv598iv9c2s6ivfiara9pnkdlnas8xjw063wvyi0dswpb0xyhny"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
#~(list
"beartype_test"
;; These tests rely on git through the "get_main_readme_file" helper.
"-k" (string-append "not test_doc_readme "
"and not test_sphinx "
"and not test_pep561_mypy"))))
(native-inputs (list python-pytest python-setuptools python-wheel))
(native-inputs
(list python-hatchling python-numpy python-pygments python-pytest))
(home-page "https://github.com/beartype/beartype")
(synopsis "Fast runtime type checking for Python")
(description "Beartype aims to be a very fast runtime type checking tool
@ -2628,6 +2671,8 @@ them using any Python VM with basically no runtime overhead.")
(list
#:test-flags
#~(list
;; This one started failing with the last update of Numpy.
"--ignore=tests/test_beartype.py"
;; Multiple failures due to undefined names (typing package must be
;; too outdated, or perhaps they use a newer pandas).
"--ignore=tests/test_mypy.py"
@ -2846,7 +2891,7 @@ help in debugging failures and optimizing the scheduler to improve speed.")
(define-public python-pytest-subprocess
(package
(name "python-pytest-subprocess")
(version "1.5.2")
(version "1.5.3")
(source
(origin
(method git-fetch) ;no tests in PyPI archive
@ -2856,17 +2901,17 @@ help in debugging failures and optimizing the scheduler to improve speed.")
(file-name (git-file-name name version))
(sha256
(base32
"1mncfyn0vkbf7d03zc8wmv7nl354ck5i9gfblp9220ihc52whhy0"))))
"1yb5y6dqzf6k5a07yzdpw8w50bm7zbsdvv06ii7c7vyg9wx5iw6y"))))
(build-system pyproject-build-system)
(native-inputs (list python-anyio
python-coverage
python-docutils
python-nox
python-pygments
python-pytest
python-pytest-asyncio
python-pytest-rerunfailures
python-wheel))
(native-inputs
(list python-anyio
python-docutils
python-pygments
python-pytest
python-pytest-asyncio
python-pytest-rerunfailures
python-setuptools
python-wheel))
(home-page "https://github.com/aklajnert/pytest-subprocess")
(synopsis "Fake subprocess for Pytest")
(description
@ -2950,25 +2995,6 @@ __version_tuple__ = version_tuple = (~a)~%" version version-tuple)))))))))
in an opinionated way.")
(license license:expat)))
(define-public python-parameterizedtestcase
(package
(name "python-parameterizedtestcase")
(version "0.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "parameterizedtestcase" version))
(sha256
(base32 "0zhjmsd16xacg4vd7zb75kw8q9khn52wvad634v1bvz7swaivk2c"))))
(build-system python-build-system)
(native-inputs (list python-setuptools-57)) ;for use_2to3
(home-page
"https://github.com/msabramo/python_unittest_parameterized_test_case")
(synopsis "Parameterized tests for Python's unittest module")
(description "This package provides parameterized tests for Python's
@code{unittest} module taking inspiration from pytest.")
(license license:expat)))
(define-public python-pytest-rerunfailures
(package
(name "python-pytest-rerunfailures")
@ -3271,13 +3297,13 @@ attachments).
(define-public python-vcrpy
(package
(name "python-vcrpy")
(version "6.0.2")
(version "7.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "vcrpy" version))
(sha256
(base32 "02fwmmc33qqybzbj1lvdz458g1fffm5cgnqihj4larw4268kvqc8"))))
(base32 "0l1sdfc51024jclqv9104nagpirxx8w0gcn5h0bdxv950jnr2qqp"))))
(build-system pyproject-build-system)
(arguments
(list
@ -3290,22 +3316,23 @@ attachments).
"test_testcase_playback")
" and not "))))
(native-inputs
(list nss-certs-for-test
python-flask
(list python-aiohttp
python-boto3
python-httplib2
python-ipaddress
python-mock
python-httpx
python-pytest
python-pytest-cov
python-pytest-aiohttp
python-pytest-asyncio
python-pytest-httpbin
python-requests
python-setuptools
python-tornado
python-urllib3
python-werkzeug
python-wheel))
(propagated-inputs
(list python-pyyaml
python-six
python-wrapt
python-yarl))
(list python-pyyaml python-wrapt python-yarl))
(home-page "https://github.com/kevin1024/vcrpy")
(synopsis "Automatically mock your HTTP interactions")
(description

View file

@ -11,6 +11,7 @@
;;; Copyright © 2024 TakeV <takev@disroot.org>
;;; Copyright © 2023 Ivan Vilata i Balaguer <ivan@selidor.net>
;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -764,6 +765,33 @@ install: libbitshuffle.so
(inputs '())
(native-inputs '())))
(define-public python-unix-ar
(package
(name "python-unix-ar")
(version "0.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "unix_ar" version))
(sha256
(base32 "0kicwxsh28x8r34a7cgzv2i65gsd4qjw2vf29pwq4fpsf3n2i4xz"))))
(build-system pyproject-build-system)
(arguments
;; These tests have timestamp-related issues.
(list #:test-flags
#~(list "-m" "unittest" "-k" "not test_add and not test_addfile")
#:phases
#~(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? test-flags #:allow-other-keys)
(apply invoke "python" test-flags))))))
(native-inputs (list python-pytest python-setuptools python-wheel))
(home-page "https://github.com/getninjas/unix_ar")
(synopsis "AR file handling in Python")
(description "This package provides utilities to handle AR files in
Python.")
(license license:bsd-3)))
(define-public python-zipp
(package
(name "python-zipp")

View file

@ -11,7 +11,7 @@
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016, 2017, 2019, 2022, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017, 2019, 2022, 2024, 2025 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2016, 2017, 2020 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
@ -57,6 +57,7 @@
#:use-module (guix build-system python)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages certs)
#:use-module (gnu packages check)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages crates-tls)
@ -141,17 +142,19 @@ Password Scheme\"} by Niels Provos and David Mazieres.")
(uri (pypi-uri "passlib" version))
(sha256
(base32 "015y5qaw9qnxr29lg60dml1g5rbqd4586wy5n8m41ib55gvm1zfy"))))
(build-system python-build-system)
(native-inputs
(list python-nose))
(propagated-inputs
(list python-bcrypt))
(build-system pyproject-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'check 'set-PYTHON_EGG_CACHE
;; Some tests require access to "$HOME/.cython".
(lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp"))))))
(list
#:phases
#~(modify-phases %standard-phases
(add-before 'check 'set-PYTHON_EGG_CACHE
;; Some tests require access to "$HOME/.cython".
(lambda _
(setenv "PYTHON_EGG_CACHE" "/tmp"))))))
(native-inputs
(list python-nose python-setuptools python-wheel))
(propagated-inputs
(list python-argon2-cffi python-bcrypt python-cryptography))
(home-page "https://bitbucket.org/ecollins/passlib")
(synopsis "Comprehensive password hashing framework")
(description
@ -162,32 +165,6 @@ useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
to providing full-strength password hashing for multi-user application.")
(license license:bsd-3)))
(define-public python-pyblake2
(package
(name "python-pyblake2")
(version "1.1.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyblake2" version))
(sha256
(base32
"0gz9hgznv5zw4qjq43xa56y0yikimx30gffvibxzm0nv5sq7xk2w"))))
(build-system python-build-system)
(home-page "https://github.com/dchest/pyblake2")
(synopsis "BLAKE2 hash function for Python")
(description "BLAKE2 is a cryptographic hash function, which offers
stronger security while being as fast as MD5 or SHA-1, and comes in two
flavors: @code{BLAKE2b}, optimized for 64-bit platforms and produces digests
of any size between 1 and 64 bytes, and @code{BLAKE2s}, optimized for 8- to
32-bit platforms and produces digests of any size between 1 and 32 bytes.
This package provides a Python interface for BLAKE2.")
;; The COPYING file declares it as public domain, with the option to
;; alternatively use and redistribute it under a variety of permissive
;; licenses. cc0 is explicitly mentioned in setup.py and pyblake2module.c.
(license (list license:public-domain license:cc0))))
(define-public python-paramiko
(package
(name "python-paramiko")
@ -455,13 +432,7 @@ blake3, a cryptographic hash function.")
;; Those tests uses PKCS12, which has been removed in
;; pyopenssl 23.3.0:
"not test_custom_not_before_not_after"
"test_ca_cert_in_mem"
;; Those tests try to download certificates:
"test_file_wildcard"
"test_file_wildcard_subdomains"
"test_in_mem_parent_wildcard_cert"
"test_in_mem_parent_wildcard_cert_at_tld"
"test_in_mem_parent_wildcard_cert_2")
"test_ca_cert_in_mem")
" and not "))
#:phases
#~(modify-phases %standard-phases
@ -474,7 +445,7 @@ blake3, a cryptographic hash function.")
(propagated-inputs
(list python-pyopenssl python-tldextract))
(native-inputs
(list python-pytest-cov python-setuptools python-wheel))
(list nss-certs-for-test python-pytest-cov python-setuptools python-wheel))
(home-page "https://github.com/ikreymer/certauth")
(synopsis "Certificate authority creation tool")
(description "This package provides a small library, built on top of
@ -658,7 +629,13 @@ ciphers, message digests and key derivation functions.")
;; PyOpenSSL runs tests against a certificate with a fixed
;; expiry time. To ensure successful builds in the future,
;; set the time to roughly the release date.
(invoke "faketime" "2024-07-20" "pytest" "-vv" "-k"
(invoke "faketime" "2024-07-20" "pytest" "-vv"
"--deselect"
;; This test seems to fail when using faketime, at
;; least on aarch64-linux with OSError: [Errno 22]
;; Invalid argument
"tests/test_ssl.py::TestDTLS::test_timeout"
"-k"
;; This test tries to look up certificates from
;; the compiled-in default path in OpenSSL, which
;; does not exist in the build environment.
@ -1657,17 +1634,14 @@ signatures.")
(uri (pypi-uri "PGPy" version))
(sha256
(base32 "10w3h934fi1ijx72ppn67a50yhkf8n1db6xx02gk2fjc7wsjx717"))))
(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")))))))
(list #:test-flags
;; All broken tests are in this file.
;; They fail with ValueError: key_size must be at least 1024-bits.
#~(list "--ignore" "tests/test_10_exceptions.py")))
(native-inputs
(list python-pytest
python-wheel))
(list python-pytest python-setuptools python-wheel))
(propagated-inputs (list python-cryptography python-pyasn1))
(home-page "https://github.com/SecurityInnovation/PGPy")
(synopsis "Python implementation of OpenPGP")

View file

@ -27,6 +27,7 @@
;;; Copyright © 2024 Marco Baggio <marco.baggio@mdc-berlin.de>
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2024 Rick Huijzer <ikbenrickhuyzer@gmail.com>
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -67,6 +68,7 @@
#:use-module (gnu packages maths)
#:use-module (gnu packages mpi)
#:use-module (gnu packages pcre)
#:use-module (gnu packages package-management)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@ -82,6 +84,7 @@
#:use-module (gnu packages ssh)
#:use-module (gnu packages statistics)
#:use-module (gnu packages time)
#:use-module (gnu packages version-control)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
@ -372,7 +375,21 @@ Features:
(build-system pyproject-build-system)
(arguments
(list
#:test-flags #~(list "--pyargs" "numdifftools")
#:test-flags
#~(list "--pyargs" "numdifftools"
"-k" (string-join
;; Tests failing with error: TypeError: a must be an array
;; of real numbers, see
;; <https://github.com/pbrod/numdifftools/issues/72>.
(list "not test_high_order_derivative"
"test_low_order_derivative_on_example_functions"
"test_sinx_div_x"
"test_complex_hessian_issue_35"
"numdifftools.fornberg.Taylor"
"numdifftools.fornberg.derivative"
"numdifftools.fornberg.taylor")
" and not "))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'relax-requirements
@ -1052,6 +1069,172 @@ utilizing the power of scikit-learn, e.g., for pre-processing or doing
cross-validation.")
(license license:gpl3+))))
(define-public python-snakemake-interface-common
(package
(name "python-snakemake-interface-common")
(version "1.17.4")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/snakemake/snakemake-interface-common")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "19fyqs048zdvrmq5sdayzch850kwsyv2x6xn57cjjzcm4zpjrh9w"))))
(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/tests.py")))))))
(native-inputs (list python-poetry-core python-pytest))
(propagated-inputs (list python-argparse-dataclass python-configargparse))
(home-page "https://github.com/snakemake/snakemake-interface-common")
(synopsis "Common functions and classes for Snakemake and its plugins")
(description "This package provides common functions and classes
for Snakemake and its plugins.")
(license license:expat)))
(define-public python-snakemake-interface-executor-plugins
(package
(name "python-snakemake-interface-executor-plugins")
(version "9.3.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url (string-append "https://github.com/snakemake/"
"snakemake-interface-executor-plugins"))
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1kjjcgkk1rbavb687x5ayw35ayhsnhpg9262k317x911wqpsj2fm"))))
(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/tests.py")))))))
(propagated-inputs (list python-argparse-dataclass
python-snakemake-interface-common
python-throttler))
(native-inputs (list python-poetry-core python-pytest))
(home-page (string-append "https://github.com/snakemake/"
"python-snakemake-interface-executor-plugins"))
(synopsis "Interface for Snakemake executor plugins")
(description
"This package provides a stable interface for interactions between Snakemake and
its executor plugins.")
(license license:expat)))
(define-public python-snakemake-interface-report-plugins
(package
(name "python-snakemake-interface-report-plugins")
(version "1.1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url (string-append "https://github.com/snakemake/"
"snakemake-interface-report-plugins"))
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0i6z9vk6nv2m3jsym0glrb7h9isdlfza2yq14vbqcslybdi9ykfa"))))
(build-system pyproject-build-system)
(arguments
(list
#:tests? #f ;circular dependency on snakemake
#:phases
#~(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "python3" "tests/tests.py")))))))
(propagated-inputs (list python-snakemake-interface-common python-pytest))
(native-inputs (list python-poetry-core))
(home-page (string-append "https://github.com/snakemake/"
"python-snakemake-interface-report-plugins"))
(synopsis "Interface for Snakemake report plugins")
(description "This package provides a stable interface for interactions
between Snakemake and its report plugins.")
(license license:expat)))
(define-public python-snakemake-interface-software-deployment-plugins
(package
(name "python-snakemake-interface-software-deployment-plugins")
(version "0.6.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url (string-append "https://github.com/snakemake/"
"snakemake-interface-software-deployment-plugins"))
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0b4kkznfyfck9f92pkimhyl13ljisfn67rsilm1a5inq2ywpmxba"))))
(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/tests.py")))))))
(propagated-inputs (list python-argparse-dataclass
python-snakemake-interface-common))
(native-inputs (list python-poetry-core))
(home-page (string-append "https://github.com/snakemake/"
"snakemake-interface-software-deployment-plugins"))
(synopsis "Interface for Snakemake software deployment plugins")
(description
"This package provides a stable interface for interactions between Snakemake and
its software deployment plugins.")
(license license:expat)))
(define-public python-snakemake-interface-storage-plugins
(package
(name "python-snakemake-interface-storage-plugins")
(version "3.3.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url (string-append "https://github.com/snakemake/"
"snakemake-interface-storage-plugins"))
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "05n5xgwagb01nyzi8xfvp0nvdfl24lxidgksm7k86p68n1rijd5a"))))
(build-system pyproject-build-system)
(arguments
(list
#:tests? #f ;circular dependency on snakemake
#:phases
#~(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "python3" "tests/tests.py")))))))
(propagated-inputs (list python-reretry python-snakemake-interface-common
python-throttler python-wrapt))
(native-inputs (list python-poetry-core python-pytest))
(home-page (string-append "https://github.com/snakemake/"
"snakemake-interface-storage-plugins"))
(synopsis "Interface for Snakemake storage plugins")
(description
"This package provides a stable interface for interactions between
Snakemake and its storage plugins.")
(license license:expat)))
(define-public python-tdda
(package
(name "python-tdda")
@ -1643,7 +1826,7 @@ doing practical, real world data analysis in Python.")
(lambda _
(copy-recursively
(string-append #$output
"/lib/python3.10/site-packages/pandas/_libs")
"/lib/python3.11/site-packages/pandas/_libs")
"pandas/_libs"))))))
(propagated-inputs
(list python-dateutil
@ -2465,7 +2648,7 @@ objects.")
(define-public python-pytensor
(package
(name "python-pytensor")
(version "2.18.1")
(version "2.28.3") ; the minimal version supporting SciPy 1.12.0
(source (origin
(method git-fetch)
(uri (git-reference
@ -2474,52 +2657,65 @@ objects.")
(file-name (git-file-name name version))
(sha256
(base32
"0qa0y13xfm6w7ry7gp0lv84c8blyg34a9ns7ynwqyhf9majq08s5"))))
"1yz1yslms6kdmy4sgnvbnghhclcpkc80z3vaw9c2y3b3j1fs9b4v"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
;; XXX: Full test suite takes about 20-30min to complete in single
;; thread, attempt to run tests in parallel with pytest-xdist fails even
;; so upstream provides a support for that, try to figure out how to
;; improve it.
;;
;; Upstream implements a script, showing slow tests which may be used to
;; exclude even more hanging/slow ones, see
;; <scripts/slowest_tests/extract-slow-tests.py>.
;;
;; Skip computationally intensive tests.
#~(list "--ignore" "tests/scan/"
"--ignore" "tests/tensor/"
"--ignore" "tests/sandbox/"
"--ignore" "tests/sparse/sandbox/"
;; Tests hang while running from these files.
"--ignore" "tests/compile/test_compilelock.py"
"--ignore" "tests/link/jax/test_tensor_basic.py"
;; XXX: Tests finish with error in these files, check why.
"--ignore" "tests/compile/function/test_types.py"
"--ignore" "tests/link/numba/test_basic.py"
"--ignore" "tests/link/numba/test_blockwise.py"
"--ignore" "tests/link/numba/test_elemwise.py"
"-k" (string-join
;; Skip benchmark tests.
(list "not test_elemwise_speed"
"test_logsumexp_benchmark"
"test_fused_elemwise_benchmark"
"test_scan_multiple_output"
"test_vector_taps_benchmark"
"test_cython_performance"
;; Assertion fails in tests.
"test_choose_signature"
"test_fgraph_to_python_names")
" and not ")
;; Tests collection selects pytensor, which does not contain
;; tests and fails to pass; manually provide a test directory
;; instead.
"tests")
#:phases
#~(modify-phases %standard-phases
;; Replace version manually because pytensor uses
;; versioneer, which requires git metadata.
(add-after 'unpack 'versioneer
(lambda _
(with-output-to-file "setup.cfg"
(lambda ()
(display "\
[versioneer]
VCS = git
style = pep440
versionfile_source = pytensor/_version.py
versionfile_build = pytensor/_version.py
tag_prefix =
parentdir_prefix = pytensor-
")))
(invoke "versioneer" "install")
(substitute* "setup.py"
(("versioneer.get_version\\(\\)")
(string-append "\"" #$version "\"")))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "HOME" "/tmp") ; required for most tests
;; Test discovery fails, have to call pytest by hand.
;; test_tensor_basic.py file requires JAX.
(invoke "python" "-m" "pytest" "-vv"
"--ignore" "tests/link/jax/test_tensor_basic.py"
;; Skip benchmark tests.
"-k" (string-append
"not test_elemwise_speed"
" and not test_logsumexp_benchmark"
" and not test_fused_elemwise_benchmark"
" and not test_scan_multiple_output"
" and not test_vector_taps_benchmark"
" and not test_cython_performance")
;; Skip computationally intensive tests.
"--ignore" "tests/scan/"
"--ignore" "tests/tensor/"
"--ignore" "tests/sandbox/"
"--ignore" "tests/sparse/sandbox/")))))))
(("version=versioneer.get_version\\(),")
(format #f "version=~s," #$version)))))
(add-before 'check 'pre-check
(lambda _
;; It is required for most tests.
(setenv "HOME" "/tmp")
;; Cython extensions have to be built before running the tests.
(invoke "python" "setup.py" "build_ext" "--inplace"))))))
(native-inputs (list python-cython
python-pytest
python-pytest-mock
@ -2663,6 +2859,9 @@ annotations on an existing boxplots and barplots generated by seaborn.")
(sha256
(base32 "0jrq2vhan2h280h6cw1sm5hys2nzmf19w4py64k3nrkc320z9mni"))))
(build-system pyproject-build-system)
(arguments
;; This is a Numpy DeprecationWarning, remove it on next update.
(list #:test-flags ''("-k" "not test_h5_io")))
;; Pint is optional, but we do not propagate it due to its size.
(native-inputs
(list python-pint
@ -2878,32 +3077,6 @@ and more
@end itemize")
(license license:gpl3)))
(define-public python-pyglm
(package
(name "python-pyglm")
(version "2.5.7")
(source
(origin
;; Test files are not included in the archive in pypi.
(method git-fetch)
(uri (git-reference
(url "https://github.com/Zuzu-Typ/PyGLM")
(commit version)
;; Checkout the bundled `glm` submodule. PyGLM uses the
;; currently unreleased GLM_EXT_matrix_integer feature. Can
;; maybe unbundle once glm@0.9.9.9 is released.
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
(base32
"08v0cgkwsf8rxscx5g9c5p1dy38rvak2fy3q6hg985if1nj6d9ks"))))
(build-system python-build-system)
(home-page "https://github.com/Zuzu-Typ/PyGLM")
(synopsis "OpenGL Mathematics library for Python")
(description "PyGLM is a Python extension library which brings the OpenGL
Mathematics (GLM) library to Python.")
(license license:zlib)))
(define-public python-dask-expr
(package
(name "python-dask-expr")
@ -3794,18 +3967,37 @@ it can be used for displaying many qualitatively different samples.")
(package
(name "python-paramz")
(version "0.9.6")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sods/paramz")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1ywc2jzj40m6wmq227j3snxvp4434s0m1xk1abg6v6mr87pv2sa9"))))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sods/paramz")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1ywc2jzj40m6wmq227j3snxvp4434s0m1xk1abg6v6mr87pv2sa9"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
#~(list "-k"
;; Two tests fail with error: TypeError: arrays to stack must be
;; passed as a "sequence" type such as list or tuple.
(string-append "not test_raveled_index"
" and not test_regular_expression_misc")
"paramz/tests/array_core_tests.py"
"paramz/tests/cacher_tests.py"
"paramz/tests/examples_tests.py"
"paramz/tests/index_operations_tests.py"
"paramz/tests/init_tests.py"
"paramz/tests/lists_and_dicts_tests.py"
"paramz/tests/model_tests.py"
"paramz/tests/observable_tests.py"
"paramz/tests/parameterized_tests.py"
"paramz/tests/pickle_tests.py"
"paramz/tests/verbose_optimize_tests.py")))
(native-inputs
(list python-nose
(list python-pytest
python-setuptools
python-wheel))
(propagated-inputs
@ -4055,16 +4247,10 @@ numerical computation.")
(sha256
(base32
"0jb5lia0q742d1713jk33vlj41y61sf52j6pgk7pvhxvfxglgxjr"))))
(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)
(propagated-inputs (list python-numpy))
(native-inputs (list python-pytest python-pytest-cov python-pytest-pep8))
(native-inputs
(list python-pytest python-pytest-cov python-setuptools python-wheel))
(home-page "https://github.com/dgasmith/opt_einsum")
(synopsis "Optimizing numpys einsum function")
(description
@ -4080,24 +4266,44 @@ documentation for more information.")
(define-public python-vaex-core
(package
(name "python-vaex-core")
(version "4.17.1")
(version "4.18.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "vaex-core" version))
(method git-fetch)
(uri (git-reference
(url "https://www.github.com/maartenbreddels/vaex")
(commit (string-append "core-v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1rzx5px3fwi5mh1z8y91brvffk7dkhj287lnmqp8zp6836kkqhya"))
(modules '((guix build utils)))
(base32 "1sp096msbzgjlwi8c1ink2bp4pjff9pvikqz1y1li8d3in4gpgdr"))
(patches
(search-patches "python-vaex-core-fix-tsl-use.patch"))
(modules '((guix build utils)
(ice-9 ftw)))
(snippet
;; Remove bundled libraries
'(for-each delete-file-recursively
(list "vendor/boost"
"vendor/pcre"
"vendor/pybind11")))))
#~(begin
;; Delete everything except for vaex-core itself:
(define (delete-except exception)
(lambda (file)
(unless (member file `("." ".." ,exception))
(delete-file-recursively file))))
(for-each (delete-except "packages") (scandir "."))
(with-directory-excursion "packages"
(for-each (delete-except "vaex-core") (scandir ".")))
(for-each (lambda (file)
(unless (member file '("." ".."))
(rename-file
(string-append "packages/vaex-core/" file)
file)))
(scandir "packages/vaex-core"))
(delete-file-recursively "packages")
(delete-file-recursively "vendor")))))
(build-system pyproject-build-system)
(arguments (list #:tests? #false)) ;require vaex.server and others, which require vaex-core.
(arguments
;; require vaex.server and others, which require vaex-core.
(list #:tests? #false))
(inputs
(list boost pcre pybind11-2.3))
(list boost pcre pybind11 string-view-lite tsl-hopscotch-map))
(propagated-inputs
(list python-aplus
python-blake3
@ -4321,6 +4527,125 @@ compagnies.")
neuronal models")
(license license:bsd-3)))
(define-public snakemake
(package
(name "snakemake")
(version "8.29.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "snakemake" version))
(sha256
(base32 "1ilpmrjmnc529p4gw2x23ik1d8b5pm6k1dhq08dknvfjsf3vgyjr"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
#~(list
;; XXX: Unclear why these tests fail.
"--ignore=tests/test_report_href/test_script.py"
"--ignore=tests/test_script_py/scripts/test_explicit_import.py"
"--ignore=tests/test_output_index.py"
;; We don't care about testing old python@3.7 on Guix.
"--ignore=tests/test_conda_python_3_7_script/test_script.py"
;; Those require additional snakemake plugins.
"--ignore=tests/test_api.py"
"--ignore=tests/test_executor_test_suite.py"
;; We don't care about lints.
"--ignore=tests/test_linting.py"
;; These tests attempt to change S3 buckets on AWS and fail
;; because there are no AWS credentials.
"--ignore=tests/test_tibanna"
;; It's a similar story with this test, which requires access
;; to the Google Storage service.
"--ignore=tests/test_google_lifesciences")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'avoid-assets-download
(lambda _
(substitute* "setup.py"
(("^from assets import Assets") "")
(("^Assets\\.deploy\\(\\)") ""))))
;; For cluster execution Snakemake will call Python. Since there is
;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We
;; fix this by calling the snakemake wrapper instead.
(add-after 'unpack 'call-wrapper-not-wrapped-snakemake
(lambda _
(substitute* "snakemake/executors/__init__.py"
(("self\\.get_python_executable\\(\\),")
"")
(("\"-m snakemake\"")
(string-append "\"" #$output
"/bin/snakemake" "\""))
;; The snakemake command produced by format_job_exec contains
;; references to /gnu/store. Prior to patching above that's
;; just a reference to Python; after patching it's a reference
;; to the snakemake executable.
;;
;; In Tibanna execution mode Snakemake arranges for a certain
;; Docker image to be deployed to AWS. It then passes its own
;; command line to Tibanna. This is misguided because it only
;; ever works if the local Snakemake command was run inside
;; the same Docker image. In the case of using Guix this is
;; never correct, so we need to replace the store reference.
(("tibanna_args.command = command")
(string-append
"tibanna_args.command = command.replace('"
#$output "/bin/snakemake', 'python3 -m snakemake')")))))
(add-after 'unpack 'patch-version
(lambda _
(substitute* "setup.py"
(("version=versioneer.get_version\\(\\)")
(format #f "version=~s" #$version)))
(substitute* '("snakemake/_version.py"
"versioneer.py")
(("0\\+unknown") #$version))))
(add-before 'check 'pre-check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "HOME" "/tmp")))))))
(propagated-inputs
(list python-appdirs
python-conda-inject
python-configargparse
python-connection-pool
python-dpath
python-gitpython
python-humanfriendly
python-immutables
python-jinja2
python-jsonschema
python-nbformat
python-packaging
python-psutil
python-pulp
python-pyyaml
python-requests
python-reretry
python-smart-open
python-snakemake-interface-common
python-snakemake-interface-executor-plugins
python-snakemake-interface-report-plugins
python-snakemake-interface-storage-plugins
python-tabulate
python-throttler
python-wrapt
python-yte))
(native-inputs
(list python-docutils
python-numpy
python-pandas
python-setuptools
python-tomli
python-wheel))
(home-page "https://snakemake.readthedocs.io")
(synopsis "Python-based execution environment for make-like workflows")
(description
"Snakemake aims to reduce the complexity of creating workflows by
providing a clean and modern domain specific specification language (DSL) in
Python style, together with a fast and comfortable execution environment.")
(license license:expat)))
;;;
;;; Avoid adding new packages to the end of this file. To reduce the chances
;;; of a merge conflict, place them above by existing packages with similar

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -660,6 +660,405 @@ def contents() -> str:
(variable "PYTHONTZPATH")
(files (list "share/zoneinfo")))))))
(define-public python-3.11
(package
(inherit python-3.10)
(name "python")
(version "3.11.11")
(source (origin
(method url-fetch)
(uri (string-append "https://www.python.org/ftp/python/"
version "/Python-" version ".tar.xz"))
(patches (search-patches
"python-3-deterministic-build-info.patch"
"python-3.11-fix-tests.patch"
"python-3-hurd-configure.patch"
"python-3-search-paths.patch"))
(sha256
(base32
"1qrvsxg5g0b0pgz2iigxic2j3g6b2c59iva46vins8ydl33j169a"))
(modules '((guix build utils)))
(snippet
'(begin
;; Delete the bundled copy of libexpat.
(delete-file-recursively "Modules/expat")
(substitute* "Modules/Setup"
;; Link Expat instead of embedding the bundled one.
(("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n"))
;; Delete windows binaries
(for-each delete-file
(find-files "Lib/distutils/command" "\\.exe$"))))))
(arguments
(list
#:test-target "test"
#:configure-flags
#~(list "--enable-shared" ;allow embedding
"--with-system-expat" ;for XML support
"--with-system-ffi" ;build ctypes
"--with-ensurepip=install" ;install pip and setuptools
"--with-computed-gotos" ;main interpreter loop optimization
"--enable-unicode=ucs4"
"--without-static-libpython"
"--enable-loadable-sqlite-extensions"
;; FIXME: These flags makes Python significantly faster,
;; but leads to non-reproducible binaries.
;; "--with-lto" ;increase size by 20MB, but 15% speedup
;; "--enable-optimizations"
;; Prevent the installed _sysconfigdata.py from retaining
;; a reference to coreutils.
"INSTALL=install -c"
"MKDIR_P=mkdir -p"
;; Add a reference to libxcrypt in LIBS so that the
;; sysconfigdata file records it and propagates it to programs
;; linking against Python.
(let ((libxcrypt
(false-if-exception
(dirname
(search-input-file %build-inputs
"lib/libcrypt.so.1")))))
(string-append
"LIBS="
(if libxcrypt
(string-append "-L" libxcrypt)
"")))
;; Disable runtime check failing if cross-compiling, see:
;; https://lists.yoctoproject.org/pipermail/poky/2013-June/008997.html
#$@(if (%current-target-system)
'("ac_cv_buggy_getaddrinfo=no"
"ac_cv_file__dev_ptmx=no"
"ac_cv_file__dev_ptc=no")
'())
;; -fno-semantic-interposition reinstates some
;; optimizations by gcc leading to around 15% speedup.
;; This is the default starting from python 3.10.
"CFLAGS=-fno-semantic-interposition"
(string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"
" -fno-semantic-interposition"))
;; With no -j argument tests use all available cpus, so provide one.
#:make-flags
`(list (string-append (format #f "TESTOPTS=-j~d"
(parallel-job-count))
;; those tests fail on low-memory systems
" --exclude"
" test_mmap"
" test_socket"
" test_threading"
" test_asyncio"
" test_shutdown"
,@(if (system-hurd?)
'(" test_posix" ;multiple errors
" test_time"
" test_pty"
" test_shutil"
" test_tempfile" ;chflags: invalid argument:
;; tbv14c9t/dir0/dir0/dir0/test0.txt
" test_os" ;stty: 'standard input':
;; Inappropriate ioctl for device
" test_openpty" ;No such file or directory
" test_selectors" ;assertEqual(NUM_FDS // 2, len(fds))
;; 32752 != 4
" test_compileall" ;multiple errors
" test_poll" ;list index out of range
" test_subprocess" ;runs over 10min
" test_asyncore" ;multiple errors
" test_threadsignals"
" test_eintr" ;Process return code is -14
" test_io" ;multiple errors
" test_logging"
" test_signal"
" test_flags" ;ERROR
" test_bidirectional_pty"
" test_create_unix_connection"
" test_unix_sock_client_ops"
" test_open_unix_connection"
" test_open_unix_connection_error"
" test_read_pty_output"
" test_write_pty"
" test_concurrent_futures" ;freeze
" test_venv" ;freeze
" test_multiprocessing_forkserver" ;runs over 10min
" test_multiprocessing_spawn" ;runs over 10min
" test_builtin"
" test_capi"
" test_dbm_ndbm"
" test_exceptions"
" test_faulthandler"
" test_getopt"
" test_importlib"
" test_json"
" test_multiprocessing_fork"
" test_multiprocessing_main_handling"
" test_pdb "
" test_regrtest"
" test_sqlite")
'())))
#:modules
'((ice-9 ftw)
(ice-9 match)
(guix build utils)
(guix build gnu-build-system))
#:phases
#~(modify-phases %standard-phases
#$@(if (system-hurd?)
`((add-after 'unpack
'disable-multi-processing
(lambda _
(substitute* "Makefile.pre.in"
(("-j0")
"-j1")))))
'())
(add-before 'configure 'patch-lib-shells
(lambda _
;; This variable is used in setup.py to enable cross compilation
;; specific switches. As it is not set properly by configure
;; script, set it manually.
#$@(if (%current-target-system)
'((setenv "_PYTHON_HOST_PLATFORM" ""))
'())
;; Filter for existing files, since some may not exist in all
;; versions of python that are built with this recipe.
(substitute* (filter file-exists?
'("Lib/subprocess.py"
"Lib/popen2.py"
"Lib/distutils/tests/test_spawn.py"
"Lib/test/support/__init__.py"
"Lib/test/test_subprocess.py"))
(("/bin/sh")
(which "sh")))))
(add-before 'configure 'do-not-record-configure-flags
(lambda* (#:key configure-flags #:allow-other-keys)
;; Remove configure flags from the installed '_sysconfigdata.py'
;; and 'Makefile' so we don't end up keeping references to the
;; build tools.
;;
;; Preserve at least '--with-system-ffi' since otherwise the
;; thing tries to build libffi, fails, and we end up with a
;; Python that lacks ctypes.
(substitute* "configure"
(("^CONFIG_ARGS=.*$")
(format #f "CONFIG_ARGS='~a'\n"
(if (member "--with-system-ffi"
configure-flags)
"--with-system-ffi" ""))))))
(add-before 'check 'pre-check
(lambda _
;; 'Lib/test/test_site.py' needs a valid $HOME
(setenv "HOME"
(getcwd))))
(add-after 'unpack 'set-source-file-times-to-1980
;; XXX One of the tests uses a ZIP library to pack up some of the
;; source tree, and fails with "ZIP does not support timestamps
;; before 1980". Work around this by setting the file times in the
;; source tree to sometime in early 1980.
(lambda _
(let ((circa-1980 (* 10 366 24 60 60)))
(ftw "."
(lambda (file stat flag)
(utime file circa-1980 circa-1980) #t)))))
(add-after 'unpack 'remove-windows-binaries
(lambda _
;; Delete .exe from embedded .whl (zip) files
(for-each (lambda (whl)
(let ((dir "whl-content")
(circa-1980 (* 10 366 24 60 60)))
(mkdir-p dir)
(with-directory-excursion dir
(let ((whl (string-append "../" whl)))
(invoke "unzip" whl)
(for-each delete-file
(find-files "." "\\.exe$"))
(delete-file whl)
;; Reset timestamps to prevent them from ending
;; up in the Zip archive.
(ftw "."
(lambda (file stat flag)
(utime file circa-1980
circa-1980) #t))
(apply invoke "zip" "-X" whl
(find-files "."
#:directories? #t))))
(delete-file-recursively dir)))
(find-files "Lib/ensurepip" "\\.whl$"))))
(add-after 'install 'remove-tests
;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
;; because these files are used by some libraries out there.
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(match (scandir (string-append out "/lib")
(lambda (name)
(string-prefix? "python" name)))
((pythonX.Y)
(let ((testdir (string-append out "/lib/" pythonX.Y
"/test")))
(with-directory-excursion testdir
(for-each delete-file-recursively
(scandir testdir
(match-lambda
((or "." "..")
#f)
("support" #f)
(file (not (string-prefix?
"test_support."
file))))))
(call-with-output-file "__init__.py"
(const #t))))
(let ((libdir (string-append out "/lib/" pythonX.Y)))
(for-each (lambda (directory)
(let ((dir (string-append libdir "/"
directory)))
(when (file-exists? dir)
(delete-file-recursively dir))))
'("email/test" "ctypes/test"
"unittest/test"
"tkinter/test"
"sqlite3/test"
"bsddb/test"
"lib-tk/test"
"json/tests"
"distutils/tests"))))))))
(add-after 'remove-tests 'move-tk-inter
(lambda* (#:key outputs inputs #:allow-other-keys)
;; When Tkinter support is built move it to a separate output so
;; that the main output doesn't contain a reference to Tcl/Tk.
(let ((out (assoc-ref outputs "out"))
(tk (assoc-ref outputs "tk")))
(when tk
(match (find-files out "tkinter.*\\.so")
((tkinter.so)
;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
;; want it under TK/lib/pythonX.Y/site-packages.
(let* ((len (string-length out))
(target (string-append tk "/"
(string-drop (dirname
(dirname
tkinter.so))
len)
"/site-packages")))
(install-file tkinter.so target)
(delete-file tkinter.so))))
;; Remove explicit store path references.
(let ((tcl (assoc-ref inputs "tcl"))
(tk (assoc-ref inputs "tk")))
(substitute* (find-files (string-append out "/lib")
"^(_sysconfigdata_.*\\.py|Makefile)$")
(((string-append "-L" tk "/lib"))
"")
(((string-append "-L" tcl "/lib"))
"")))))))
(add-after 'move-tk-inter 'move-idle
(lambda* (#:key outputs #:allow-other-keys)
;; when idle is built, move it to a separate output to save some
;; space (5MB)
(let ((out (assoc-ref outputs "out"))
(idle (assoc-ref outputs "idle")))
(when idle
(for-each (lambda (file)
(let ((target (string-append idle
"/bin/"
(basename
file))))
(install-file file
(dirname target))
(delete-file file)))
(find-files (string-append out "/bin")
"^idle"))
(match (find-files out "^idlelib$"
#:directories? #t)
((idlelib)
(let* ((len (string-length out))
(target (string-append idle "/"
(string-drop
idlelib len)
"/site-packages")))
(mkdir-p (dirname target))
(rename-file idlelib target))))))))
(add-after 'move-idle 'rebuild-bytecode
(lambda* (#:key outputs #:allow-other-keys)
;; Disable hash randomization to ensure the generated .pycs
;; are reproducible.
(setenv "PYTHONHASHSEED" "0")
(for-each (lambda (output)
;; XXX: Delete existing pycs generated by the build
;; system beforehand because the -f argument does
;; not necessarily overwrite all files, leading to
;; indeterministic results.
(for-each (lambda (pyc)
(delete-file pyc))
(find-files output "\\.pyc$"))
(apply invoke
#$(if (%current-target-system)
"python3"
#~(string-append #$output "/bin/python3"))
`("-m" "compileall"
"-o" "0"
"-o" "1"
"-o" "2"
"-f" ;force rebuild
"--invalidation-mode=unchecked-hash"
;; Don't build lib2to3, because it's Python
;; 2 code.
"-x" "lib2to3/.*"
,output)))
(map cdr outputs))))
(add-before 'check 'set-TZDIR
(lambda* (#:key inputs native-inputs #:allow-other-keys)
;; test_email requires the Olson time zone database.
(setenv "TZDIR"
(string-append (assoc-ref (or native-inputs
inputs) "tzdata")
"/share/zoneinfo"))))
(add-after 'install 'add-libxcrypt-reference-pkgconfig
(lambda* (#:key inputs #:allow-other-keys)
(let ((libxcrypt
(false-if-exception
(dirname
(search-input-file inputs "lib/libcrypt.so.1")))))
(when libxcrypt
(substitute*
(find-files (string-append #$output "/lib/pkgconfig")
".*\\.pc")
(("Libs:")
(string-append "Libs: " "-L" libxcrypt " -lcrypt")))))))
(add-after 'install 'install-sitecustomize.py
#$(customize-site version)))))
(inputs (list bzip2
expat
gdbm
libffi ;for ctypes
libxcrypt ;crypto module slated for removal in 3.13
sqlite ;for sqlite extension
openssl
readline
zlib
tcl
tk)) ;for tkinter
(native-inputs `(("tzdata" ,tzdata-for-tests)
("unzip" ,unzip)
("zip" ,(@ (gnu packages compression) zip))
("pkg-config" ,pkg-config)
("sitecustomize.py" ,(local-file (search-auxiliary-file
"python/sitecustomize.py")))
;; When cross-compiling, a native version of Python itself is needed.
,@(if (%current-target-system)
`(("python" ,this-package)
("which" ,which))
'())))
(native-search-paths
(list (guix-pythonpath-search-path version)
;; Used to locate tzdata by the zoneinfo module introduced in
;; Python 3.9.
(search-path-specification
(variable "PYTHONTZPATH")
(files (list "share/zoneinfo")))))))
(define-public python-3.12
(package
(name "python-next")
@ -1051,7 +1450,7 @@ data types.")
(define-public python-next python-3.12)
;; Current 3.x version.
(define-public python-3 python-3.10)
(define-public python-3 python-3.11)
;; Current major version.
(define-public python python-3)
@ -1088,10 +1487,10 @@ data types.")
(build-system gnu-build-system)
(arguments
(substitute-keyword-arguments (package-arguments python)
((#:configure-flags flags '())
`(cons "--with-pydebug" ,flags))))
(synopsis
"Python with the debug hooks enabled")
((#:configure-flags configure-flags)
#~(append #$configure-flags
(list "--with-pydebug")))))
(synopsis "Python with the debug hooks enabled")
(description
"This variant of Python provides an interpreter built with
@code{--with-pydebug} to help develop and debug extensions. See

View file

@ -4033,7 +4033,7 @@ Python.")
(define-public python-sip
(package
(name "python-sip")
(version "6.8.6")
(version "6.10.0")
(source
(origin
(method url-fetch)
@ -4043,18 +4043,20 @@ Python.")
"/sip-" version ".tar.gz")))
(sha256
(base32
"0ykxq0607f2sdwbl5cxbp0y8pl14bsgzc9nhifpxbibfivj5kjbz"))
"176jylhzs2ci2r9f3l75k9dpwhp1dn0qv2cy9phdp62cgmlia1gs"))
(modules '((guix build utils)))
(snippet
;; Relax setuptools dependency
#~(substitute* "pyproject.toml"
(("\"setuptools>=.*\",") "\"setuptools\",")))
(patches (search-patches "python-sip-include-dirs.patch"))))
(build-system pyproject-build-system)
(arguments
(list #:tests? #f)) ; No test system found.
(native-inputs
(list python-wrapper python-setuptools python-setuptools-scm-next))
(list python-setuptools python-setuptools-scm-next python-wheel))
(propagated-inputs
(list python-tomli
python-packaging
python-setuptools
python-wheel))
(list python-packaging python-setuptools))
(home-page "https://www.riverbankcomputing.com/software/sip/intro")
(synopsis "Python binding creator for C and C++ libraries")
(description
@ -5137,7 +5139,7 @@ color-related widgets.")
(define-public python-shiboken-2
(package
(name "python-shiboken-2")
(version "5.15.10")
(version "5.15.16")
(source (origin
(method url-fetch)
(uri (string-append "mirror://qt/QtForPython/pyside2/PySide2-"
@ -5145,7 +5147,7 @@ color-related widgets.")
version ".tar.xz"))
(sha256
(base32
"0fnkx8ax2lkin3bpqbz4zbdrdin2ixb4d6s3c0xghh9sc79r3xia"))))
"0q3ky0fai3wr8kr1q82vdg5byhbn5sfdymmb554afpi72zyxcgkd"))))
(build-system cmake-build-system)
(inputs
(list clang-toolchain

View file

@ -3272,7 +3272,6 @@ satellites.")
(native-inputs
(list python-mock
python-mox3
python-pep8
python-pytest
python-pytest-mock
python-pyyaml

View file

@ -81,10 +81,15 @@
(arguments
(list
#:test-flags
;; These require Internet access.
#~(list "-k" (string-append "not test_latex_images"
" and not test_build_latex_doc[lualatex-manual]"
" and not est_build_latex_doc[lualatex-howto]"))
#~(list "-k" (string-join
(list
;; These require Internet access.
"not test_latex_images"
"test_build_latex_doc[lualatex-manual]"
"est_build_latex_doc[lualatex-howto]"
;; AssertionError: assert...list of weak references to the object...
"test_autodoc_default_options")
" and not "))
#:phases
#~(modify-phases %standard-phases
(add-before 'check 'pre-check
@ -192,7 +197,10 @@ sources.")
" and not test_viewcode"
;; These fail with pygments 2.10+. They are harmless.
" and not test_additional_targets_should_not_be_translated"
" and not test_additional_targets_should_be_translated"))
" and not test_additional_targets_should_be_translated"
;; As in Sphinx@6:
;; AssertionError: assert...list of weak references to the object...
" and not test_autodoc_default_options"))
#:phases
'(modify-phases %standard-phases
(add-before 'check 'pre-check
@ -262,25 +270,6 @@ sources.")
(texlive-updmap.cfg
(list texlive-cm-super texlive-tex-gyre))))))
;; Some packages do not support Sphinx 5 yet. Remove when unused.
(define-public python-sphinx-4
(package
(inherit python-sphinx-5)
(version "4.5.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "Sphinx" version))
(sha256
(base32
"1rp28jryxwy24y8vpacclqihbizyi6b1s6id86pibvm46ybcmy3v"))))
(propagated-inputs
(modify-inputs (package-propagated-inputs python-sphinx)
(replace "python-docutils" python-docutils-0.15)))
(native-inputs
(modify-inputs (package-native-inputs python-sphinx)
(delete python-flit-core)
(append python-setuptools python-wheel)))))
(define-public python-sphinxcontrib-apidoc
(package
(name "python-sphinxcontrib-apidoc")
@ -603,7 +592,15 @@ supported with @code{sphinx-issues}.")
(sha256
(base32 "1ivqz6yv96a2jp59kylg1gbkrmzq6zwilppz3ij0zrkjn25zb97k"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-docutils-0.15 python-sphinx-4))
(arguments
(list #:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'loosen-requirements
(lambda _
(substitute* "setup.py"
(("sphinx>=2,<5")
"sphinx>=2,<6")))))))
(propagated-inputs (list python-docutils-0.16 python-sphinx-5))
(native-inputs
(list python-pytest
python-pytest-regressions
@ -1229,13 +1226,6 @@ enabled web server.")
documenting acceptable argument types and return value types of functions.")
(license license:expat)))
(define-public python-sphinx-autodoc-typehints-5
(package/inherit python-sphinx-autodoc-typehints
(propagated-inputs
(modify-inputs
(package-propagated-inputs python-sphinx-autodoc-typehints)
(replace "python-sphinx" python-sphinx-5)))))
(define-public python-sphinx-pytest
(package
(name "python-sphinx-pytest")

View file

@ -916,7 +916,7 @@ comparison and diagnostics.")
(define-public python-pymc
(package
(name "python-pymc")
(version "5.11.0")
(version "5.21.0")
(source (origin
(method git-fetch) ; no tests in PyPI
(uri (git-reference
@ -925,28 +925,17 @@ comparison and diagnostics.")
(file-name (git-file-name name version))
(sha256
(base32
"0x94qzq3z02fxlliz1xfdpb2pbn7nhp4skzcxz6qdavbj9xqcxys"))))
"0azkbl0mpanza35ibdqdm21bf45n3xi26wy01lnxzxqblcjcny9l"))))
(build-system pyproject-build-system)
(arguments
(list #:tests? #f ; tests are too computationally intensive
#:phases #~(modify-phases %standard-phases
(add-after 'unpack 'versioneer
(lambda _
(with-output-to-file "setup.cfg"
(lambda ()
(display "\
[versioneer]
VCS = git
style = pep440
versionfile_source = pymc/_version.py
versionfile_build = pymc/_version.py
tag_prefix =
parentdir_prefix = pymc-
")))
(invoke "versioneer" "install")
(substitute* "setup.py"
(("versioneer.get_version\\(\\)")
(string-append "\"" #$version "\"")))))
(invoke "versioneer" "install")
(substitute* "setup.py"
(("version=versioneer.get_version\\(),")
(format #f "version=~s," #$version)))))
;; To create the compiledir for tests.
(add-before 'check 'write-permissions
(lambda* (#:key tests? #:allow-other-keys)
@ -1009,24 +998,18 @@ and a lot more.")
(define-public python-patsy
(package
(name "python-patsy")
(version "0.5.2")
(version "1.0.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "patsy" version))
(sha256
(base32
"17dn72519gvwifw3i8mzwlslxmxkl8ihzfrxg1iblsk70iwdwlsh"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests? (invoke "pytest" "-vv")))))))
"1i60b6s8zj0w2ks63ip4mr8z14p6pixp76rm9q2qr0gc3qwsk1p7"))))
(build-system pyproject-build-system)
(propagated-inputs
(list python-numpy python-scipy python-six))
(list python-numpy python-scipy))
(native-inputs
(list python-pytest))
(list python-pytest python-pytest-cov python-setuptools python-wheel))
(home-page "https://github.com/pydata/patsy")
(synopsis "Describe statistical models and build design matrices")
(description
@ -3333,7 +3316,7 @@ statistical summary in arrays and enumerables.")
(define-public python-pgmpy
(package
(name "python-pgmpy")
(version "0.1.24")
(version "1.0.0")
(source
(origin
(method git-fetch) ;pypi package does not include test data
@ -3343,8 +3326,14 @@ statistical summary in arrays and enumerables.")
(file-name (git-file-name name version))
(sha256
(base32
"0fvzh6v0yhgdryczamvzhfy2ymywkh0ssx4rl47xnfvi43hnij90"))))
"1hg6wrg3jcac71zn4gknni1wrn38wa86ka3sgp2bndz59mx6sr2s"))))
(build-system pyproject-build-system)
(arguments
(list #:test-flags
#~(list "-k" (string-append
"not test_pillai"
" and not test_estimate_with_cache_no_llm_calls"
" and not test_estimate_with_orientations"))))
(propagated-inputs (list python-daft
python-joblib
python-networkx
@ -3358,7 +3347,11 @@ statistical summary in arrays and enumerables.")
python-statsmodels
python-tqdm))
(native-inputs (list python-mock
python-pytest))
python-pyro-ppl
python-pytest
python-setuptools
python-wheel
python-xgboost))
(home-page "https://github.com/pgmpy/pgmpy")
(synopsis "Probabilistic Graphical Models library")
(description "This package provides a library for Probabilistic

View file

@ -44,6 +44,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@ -261,7 +262,7 @@ networks.")
(define-public onionshare-cli
(package
(name "onionshare-cli")
(version "2.6")
(version "2.6.3")
(source
(origin
(method git-fetch)
@ -270,32 +271,53 @@ networks.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1bhrp019a0923h7dnfxhgvgvdp81blvnsbnvzy34hp827abxf3ic"))
(patches (search-patches "onionshare-cli-async-mode.patch"))))
(build-system python-build-system)
(base32 "16yr25llnbgl2iwk458ca0rhrxsmpfx72q4gdg4a52i6g546p3hd"))))
(build-system pyproject-build-system)
(native-inputs
(list python-pytest))
(list python-cython-3
python-poetry-core
python-pytest
python-wheel))
(inputs
;; TODO: obfs4proxy
(list python-click
python-cffi
python-colorama
python-eventlet
python-flask
python-flask-httpauth
python-flask-compress
python-flask-socketio
python-pynacl
python-gevent
python-gevent-websocket
python-packaging
python-psutil
python-pycryptodome
python-pynacl
python-pysocks
python-qrcode
python-requests
python-setuptools
python-stem
python-unidecode
python-urllib3
python-urllib3-next
python-waitress
python-werkzeug
tor))
(arguments
(list
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'relax-requirements
(lambda _
;; All tests passed, and the CLI is working in runtime, relax
;; Poetry way too strict requirements.
(substitute* "cli/pyproject.toml"
(("2.3.2") "^3.0.0") ; flask = "2.3.2"
(("5.3.4") "5.5.1") ; flask-socketio = "5.3.4"
(("23.9.1") "24.11.1") ; gevent = "^23.9.1"
(("7.4.2") "8.0.0") ; qrcode = "^7.4.2"
(("70.0.0") "67.6.1") ; setuptools = ">=70.0.0"
(("1.8.1") "^1.8.1") ; stem = "1.8.1"
(("3.0.6") "^3.0.6") ; werkzeug = "3.0.6"
(("0.41.2") "0.40.0")))) ; wheel = "^0.41.2"
(add-after 'unpack 'bake-tor
(lambda* (#:key inputs #:allow-other-keys)
(substitute* (list "cli/onionshare_cli/common.py"
@ -307,16 +329,15 @@ networks.")
(search-input-directory inputs "share/tor")))))
(add-before 'build 'change-directory
(lambda _ (chdir "cli")))
(replace 'check
(add-before 'check 'pre-check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "HOME" "/tmp")
;; Greendns is not needed for testing, and if eventlet tries to
;; load it, an OSError is thrown when getprotobyname is called.
;; Thankfully there is an environment variable to disable the
;; greendns import, so use it:
(setenv "EVENTLET_NO_GREENDNS" "yes")
(invoke "pytest" "-v" "./tests")))))))
;; Greendns is not needed for testing, and if eventlet tries
;; to load it, an OSError is thrown when getprotobyname is
;; called. Thankfully there is an environment variable to
;; disable the greendns import, so use it:
(setenv "EVENTLET_NO_GREENDNS" "yes")))))))
(home-page "https://onionshare.org/")
(synopsis "Securely and anonymously share files")
(description "OnionShare lets you securely and anonymously share files,

View file

@ -4,6 +4,7 @@
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2025 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -23,24 +24,29 @@
(define-module (gnu packages tryton)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages databases)
#:use-module (gnu packages finance)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages gtk)
#:use-module (gnu packages pdf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages time)
#:use-module (gnu packages xml)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system python))
#:use-module (guix build-system python)
#:use-module (guix build-system pyproject))
(define (guix-trytonpath-search-path version)
"Generate a GUIX_TRYTOND_MODULES_PATH search path specification, using
@ -58,41 +64,49 @@ installed in the same environments. Collecting only paths actually containing
(define-public trytond
(package
(name "trytond")
(version "6.2.10")
(version "7.4.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "trytond" version))
(sha256
(base32 "0s53ig8snbs9936h99pwa0lwhcrd3j3cbpwlmf90mf1chrif7zca"))
(patches (search-patches "trytond-add-egg-modules-to-path.patch"
"trytond-add-guix_trytond_path.patch"))))
(build-system python-build-system)
(base32 "1bwa631qz07k6s5fbki3ph6sx0ch9yss2q4sa1jb67z6angiwv5f"))
(patches (search-patches "trytond-add-guix_trytond_path.patch"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
'(list "-k"
(string-append
;; "modules" is [None], but should be a list of modules.
"not ModuleTestCase"
;; fixture 'self' not found
" and not test_method"))
#:phases
'(modify-phases %standard-phases
(add-before 'check 'preparations
(lambda _
(setenv "DB_NAME" ":memory:")
(setenv "HOME" "/tmp"))))))
(propagated-inputs
(list python-dateutil
python-defusedxml
python-genshi
python-lxml
python-magic
python-passlib
python-polib
python-psycopg2
python-relatorio
python-sql
python-werkzeug-1.0 ;setup.py requires werkzeug<2
python-wrapt))
python-werkzeug))
(native-inputs
(list python-mock python-pillow))
(list python-pillow
python-pydot
python-pytest
python-setuptools
python-wheel
tzdata-for-tests))
(native-search-paths
(list (guix-trytonpath-search-path (package-version python))))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'check 'preparations
(lambda _
(setenv "DB_NAME" ":memory:")
(setenv "HOME" "/tmp")
#t)))))
(home-page "https://www.tryton.org/")
(synopsis "Tryton Server")
(description "Tryton is a three-tier high-level general purpose
@ -104,30 +118,33 @@ and security.")
(define-public tryton
(package
(name "tryton")
(version "6.2.7")
(version "7.4.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "tryton" version))
(sha256
(base32 "1bvwkrj2mmnddaif60g2np2jpx8lq5ka32xlhd4rlnshnbryrm5q"))))
(build-system python-build-system)
(base32 "0q0qa4pjbpc0h8r9hlnm5dh315w5i7mzqpdrlw1c8qvigpl1rf7g"))))
(build-system pyproject-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'check 'change-home
(lambda _
;; Change from /homeless-shelter to /tmp for write permission.
(setenv "HOME" "/tmp")))
(add-after 'install 'wrap-gi-python
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(gi-typelib-path (getenv "GI_TYPELIB_PATH")))
(wrap-program (string-append out "/bin/tryton")
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
(list
#:phases
#~(modify-phases %standard-phases
(add-before 'check 'change-home
(lambda _
;; Change from /homeless-shelter to /tmp for write permission.
(setenv "HOME" "/tmp")))
(add-after 'install 'wrap-gi-python
(lambda _
(let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
(wrap-program (string-append #$output "/bin/tryton")
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
(native-inputs
(list `(,glib "bin")
gobject-introspection))
gobject-introspection
python-pytest
python-setuptools
python-wheel))
(inputs (list bash-minimal)) ;for wrap-program
(propagated-inputs
(list (librsvg-for-system)
@ -145,19 +162,20 @@ and security.")
(define-public python-proteus
(package
(name "python-proteus")
(version "6.2.3")
(version "7.4.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "proteus" version))
(sha256
(base32 "0xx8kqzgs66rgz6bk5favnjs0akz6znz81vmjwpwp2wpq7094fsr"))))
(build-system python-build-system)
(base32 "1q3d0hkvmfsmxbx2qqp8zpslyy11mzwh0q2dkrh958yfyrzi1550"))))
(build-system pyproject-build-system)
;; Tests require python-trytond-party which requires python-proteus.
(arguments
`(#:tests? #f))
(propagated-inputs
(list python-dateutil python-defusedxml))
(native-inputs (list python-setuptools python-wheel))
(home-page "http://www.tryton.org/")
(synopsis "Library to access a Tryton server as a client")
(description

View file

@ -2702,7 +2702,7 @@ execution of any hook written in any language before every commit.")
(native-search-paths
(list (search-path-specification
(variable "HGEXTENSIONPATH")
(files '("lib/python3.10/site-packages/hgext3rd")))))
(files '("lib/python3.11/site-packages/hgext3rd")))))
(home-page "https://www.mercurial-scm.org/")
(synopsis "Decentralized version control system")
(description
@ -4312,53 +4312,50 @@ defects faster.")
(license license:expat)))
(define-public gita
(let ((commit "e41b504dca90a25e9be27f296da7ce22e5782893")
(revision "1"))
(package
(name "gita")
(version (git-version "0.12.9" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/nosarthur/gita")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1k03zgcbhl91cgyh4k7ywyjp00y63q4bqbimncqh5b3lni8l8j5l"))))
(build-system python-build-system)
(native-inputs
(list git ;for tests
python-pytest))
(propagated-inputs
(list python-pyyaml))
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* "tests/test_main.py"
(("'gita\\\\n'") "'source\\n'")
(("'gita'") "'source'"))
(invoke (search-input-file inputs "/bin/git")
"init")
(add-installed-pythonpath inputs outputs)
(invoke (search-input-file inputs "/bin/pytest")
"-vv" "tests")))
(add-after 'install 'install-shell-completions
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bash-completion (string-append out "/etc/bash_completion.d"))
(zsh-completion (string-append out "/etc/zsh/site-functions")))
(mkdir-p bash-completion)
(copy-file ".gita-completion.bash"
(string-append bash-completion "/gita"))
(mkdir-p zsh-completion)
(copy-file ".gita-completion.zsh"
(string-append zsh-completion "/_gita"))))))))
(home-page "https://github.com/nosarthur/gita")
(synopsis "Command-line tool to manage multiple Git repos")
(description "This package provides a command-line tool to manage
(package
(name "gita")
(version "0.16.7.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/nosarthur/gita")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "118dzmjgml0c32yllr2178ash2hvgn201i463bv4y0qbywajm9ax"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags #~(list "--ignore" "tests/test_main.py")
#:phases
#~(modify-phases %standard-phases
(add-before 'check 'pre-check
(lambda _
(invoke (string-append
#$(this-package-native-input "git-minimal") "/bin/git")
"init")))
(add-after 'install 'install-shell-completions
(lambda _
(let* ((out #$output)
(bash-completion (string-append out "/etc/bash_completion.d"))
(zsh-completion (string-append out "/etc/zsh/site-functions")))
(mkdir-p bash-completion)
(copy-file "auto-completion/bash/.gita-completion.bash"
(string-append bash-completion "/gita"))
(mkdir-p zsh-completion)
(copy-file "auto-completion/zsh/.gita-completion.zsh"
(string-append zsh-completion "/_gita"))))))))
(native-inputs
(list git-minimal/pinned ;for tests
python-pytest
python-setuptools
python-wheel))
(propagated-inputs
(list python-argcomplete))
(home-page "https://github.com/nosarthur/gita")
(synopsis "Command-line tool to manage multiple Git repos")
(description "This package provides a command-line tool to manage
multiple Git repos.
This tool does two things:
@ -4369,7 +4366,7 @@ commit message side by side
@end itemize
If several repos are related, it helps to see their status together.")
(license license:expat))))
(license license:expat)))
(define-public ghq
(package

View file

@ -3221,7 +3221,7 @@ YouTube.com and many more sites.")
python-mutagen
python-pycryptodomex
python-requests-next ; TODO Remove this special package
python-urllib3-next ; TODO Remove this one too
python-urllib3-1.26 ; TODO Remove this one too
python-websockets))
(native-inputs
(append
@ -3799,34 +3799,28 @@ and custom quantization matrices.")
(define-public streamlink
(package
(name "streamlink")
(version "6.3.1")
(version "7.1.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "streamlink" version))
(sha256
(base32
"0i2qym2plm4gpcq50vl67j69m8a4zz9mb8gi2xryx28pbnpdzh4k"))
(snippet
#~(begin (use-modules (guix build utils))
(substitute* "pyproject.toml"
(("trio >=0\\.22") "trio >=0.21"))))))
(build-system python-build-system)
"1mvg8lw3rkng6ciryziqh9r4ffj0ls7k0sv3byk3439s5d2qxh31"))))
(build-system pyproject-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "python" "-m" "pytest")))))))
(list
#:test-flags #~(list "-k" "not test_no_cache")))
(native-inputs
(list python-freezegun
python-requests-mock
python-pytest
python-pytest-asyncio
python-pytest-trio))
python-pytest-trio
python-requests-mock
python-setuptools
python-wheel))
(propagated-inputs
(list python-certifi
python-exceptiongroup
python-isodate
python-lxml
python-pycountry
@ -3835,7 +3829,6 @@ and custom quantization matrices.")
python-requests
python-trio
python-trio-websocket
python-typing-extensions
python-urllib3
python-websocket-client))
(home-page "https://github.com/streamlink/streamlink")

View file

@ -7217,6 +7217,12 @@ efficient where possible.")
(list
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'remove-rednose-dependency
(lambda _
(substitute* "setup.py"
(("'rednose'") ""))
(substitute* '("requirements.txt" "setup.cfg")
(("rednose.*") ""))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
@ -7230,7 +7236,6 @@ efficient where possible.")
python-httplib2
python-nose
python-pyparsing
python-rednose
python-requests
python-sure
python-tornado))

View file

@ -13,6 +13,7 @@
;;; Copyright © 2023 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2025 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -37,6 +38,7 @@
#:use-module ((guix licenses) #:prefix l:)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system perl)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix utils)
#:use-module (gnu packages)
@ -57,7 +59,9 @@
#:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages sdl)
#:use-module (gnu packages video)
#:use-module (gnu packages web)
@ -318,26 +322,38 @@ and many other languages.")
(define-public python-wxpython
(package
(name "python-wxpython")
(version "4.2.0")
(version "4.2.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "wxPython" version))
(sha256
(base32
"1iw6xp76b3fmdqwbqmsx9i1razzpfki5z1hq6l8mszlxa32fng36"))
(base32 "1fp2717a96hd5pdai6hlzc4pngdazxas55apjv2w5zb71xjv1g2x"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove bundled wxwidgets
(delete-file-recursively "ext/wxWidgets")))
(patches (search-patches "python-wxwidgets-type-errors.patch"))))
(build-system python-build-system)
(snippet #~(begin
;; Remove bundled wxWidgets
(delete-file-recursively "ext/wxWidgets")))))
(build-system pyproject-build-system)
(outputs '("out" "debug"))
(arguments
(list
#:modules '((guix build pyproject-build-system)
(guix build utils)
(ice-9 ftw)
(ice-9 match)
(srfi srfi-26))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-avoid-circular-import
(lambda _
(substitute* "wx/__init__.py"
(("^import wx\\.__version__.*$") "\
try:
import wx.__version__
except ImportError:
pass\n")
(("^__version__ = .*")
(format #f "__version__ = ~s~%" #$version)))))
(add-before 'build 'configure
(lambda* (#:key inputs #:allow-other-keys)
;; Configure the build options provided to the 'build.py' build
@ -357,11 +373,24 @@ and many other languages.")
(string-append "#" all)))
;; The build script tries to write to demo/version.py. So, we set
;; correct write permissions.
(chmod "demo/version.py" #o644))))))
(chmod "demo/version.py" #o644)))
(add-before 'check 'add-missing-.so
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((site (site-packages inputs outputs)))
(with-directory-excursion (string-append site "/wx")
(for-each
(match-lambda
("siplib"
(rename-file "siplib" "siplib.so"))
((? (cut string-prefix? "_" <>) file)
(unless (string-prefix? "__" file)
(rename-file file (string-append file ".so"))))
(_ #t))
(scandir ".")))))))))
(inputs
(list gtk+ wxwidgets))
(native-inputs
(list pkg-config python-waf))
(list pkg-config python-setuptools python-waf python-wheel))
(propagated-inputs
(list python-attrdict3 python-numpy python-pillow python-six))
(home-page "https://wxpython.org/")