aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/python-science.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-science.scm')
-rw-r--r--gnu/packages/python-science.scm1366
1 files changed, 1221 insertions, 145 deletions
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 862e101f6a..05c6ac1fc1 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -20,10 +20,13 @@
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2022 Wiktor Żelazny <wzelazny@vurv.cz>
;;; Copyright © 2022 Eric Bavier <bavier@posteo.net>
-;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
+;;; Copyright © 2022, 2024 Antero Mejr <antero@mailbox.org>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023, 2024 Troy Figiel <troy@troyfigiel.com>
;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2024 Marco Baggio <marco.baggio@mdc-berlin.de>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2024 Rick Huijzer <ikbenrickhuyzer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,7 +52,9 @@
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
#:use-module (gnu packages chemistry)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages cpp)
+ #:use-module (gnu packages crates-io)
#:use-module (gnu packages crypto)
#:use-module (gnu packages databases)
#:use-module (gnu packages digest)
@@ -65,10 +70,12 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
- #:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-check)
+ #:use-module (gnu packages python-crypto)
+ #:use-module (gnu packages python-graphics)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages rust-apps)
#:use-module (gnu packages simulation)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages statistics)
@@ -81,9 +88,160 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (guix build-system cargo)
#:use-module (guix build-system python)
#:use-module (guix build-system pyproject))
+(define-public python-cvxpy
+ (package
+ (name "python-cvxpy")
+ (version "1.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cvxpy" version))
+ (sha256
+ (base32 "0lyri9j5gyg6m1bvfy1a4q2sqdy3w45lp0bxiq9as8srq347ic5i"))))
+ (build-system pyproject-build-system)
+ ;; It's odd but cvxpy appears to need pybind11 at runtime according to its
+ ;; specification. Moving pybind11 to native-inputs would break downstream
+ ;; packages using cvxpy.
+ (propagated-inputs (list pybind11
+ python-clarabel
+ python-ecos
+ python-numpy
+ python-osqp
+ python-scipy
+ python-scs))
+ (native-inputs (list python-pytest python-setuptools))
+ (home-page "https://github.com/cvxpy/cvxpy")
+ (synopsis "DSL for modeling convex optimization problems")
+ (description
+ "This package provides a domain-specific language for modeling convex
+optimization problems in Python.")
+ (license license:asl2.0)))
+
+(define-public python-ecos
+ (package
+ (name "python-ecos")
+ (version "2.0.13")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/embotech/ecos-python")
+ (commit (string-append "v" version))
+ (recursive? #true)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "16ljq8maflfkgbw16rldg6cy14vgz2pb3b2iga60i7yzkq2ikmyw"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy python-scipy))
+ (native-inputs (list python-pytest python-setuptools python-wheel))
+ (home-page "https://github.com/embotech/ecos")
+ (synopsis "Embedded Cone Solver")
+ (description
+ "This is the Python package for ECOS: Embedded Cone Solver. ECOS is
+numerical software for solving convex second-order cone programs (SOCPs).")
+ (license license:gpl3)))
+
+(define-public python-formulaic
+ (package
+ (name "python-formulaic")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "formulaic" version))
+ (sha256
+ (base32 "18gvd3f2x358jj0df8vx5fhhnvzw047rsrs03vmvqnxaly97kpb4"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-astor
+ python-cached-property
+ python-interface-meta
+ python-numpy
+ python-pandas
+ python-scipy
+ python-typing-extensions
+ python-wrapt))
+ (native-inputs (list python-hatchling python-hatch-vcs python-pytest))
+ (home-page "https://github.com/matthewwardrop/formulaic")
+ (synopsis "Implementation of Wilkinson formulas")
+ (description "Formulaic is a high-performance implementation of Wilkinson
+formulas for Python.")
+ (license license:expat)))
+
+(define-public python-osqp
+ (package
+ (name "python-osqp")
+ (version "0.6.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/osqp/osqp-python")
+ (commit (string-append "v" version))
+ (recursive? #true)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0s1nbzkfsi2h4ji3v0k14pfcrvinakrwy4xdbz320lbaq3yb0b65"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ ;; Some of these test failures are explained by
+ ;; https://github.com/osqp/osqp-python/issues/121.
+ ;; These tests require the module "vec_emosqp", which we don't have.
+ '(list "--ignore=src/osqp/tests/codegen_vectors_test.py"
+ ;; These tests need "mat_emosqp".
+ "--ignore=src/osqp/tests/codegen_matrices_test.py"
+ ;; These fail with accuracy differences
+ "--ignore=src/osqp/tests/update_matrices_test.py"
+ "--ignore=src/osqp/tests/feasibility_test.py"
+ "--ignore=src/osqp/tests/polishing_test.py"
+ ;; This requires the nonfree MKL.
+ "--ignore=src/osqp/tests/mkl_pardiso_test.py")
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; It looks like the upgrade to scipy 1.12.0 only broke the test
+ ;; suite, not the features of this library. See
+ ;; https://github.com/osqp/osqp-python/issues/121.
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "requirements.txt"
+ (("scipy.*1.12.0") "scipy <= 1.12.0"))))
+ (add-before 'build 'set-version
+ (lambda _
+ (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))))))
+ (propagated-inputs (list python-numpy python-qdldl python-scipy))
+ ;; We need setuptools-scm only for the version number. Without it the
+ ;; version number will be "0.0.0" and downstream packages will complain.
+ (native-inputs (list cmake-minimal python-pytest python-setuptools-scm))
+ (home-page "https://osqp.org/")
+ (synopsis "OSQP: operator splitting QP solver")
+ (description "The OSQP (Operator Splitting Quadratic Program) solver is a
+numerical optimization package.")
+ (license license:asl2.0)))
+
+(define-public python-qdldl
+ (package
+ (name "python-qdldl")
+ (version "0.1.7.post2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "qdldl" version))
+ (sha256
+ (base32 "1lspam0k8gnw1yglqxvdv350fq00nkgdfmkizmx7bk0hxjjkj5ab"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list cmake-minimal pybind11))
+ (propagated-inputs (list python-numpy python-scipy))
+ (home-page "https://github.com/oxfordcontrol/qdldl-python/")
+ (synopsis "QDLDL LDL factorization routine")
+ (description "This package provides a Python interface to the QDLDL LDL
+factorization routine for quasi-definite linear system.")
+ (license license:asl2.0)))
+
(define-public python-scipy
(package
(name "python-scipy")
@@ -212,9 +370,12 @@ routines such as routines for numerical integration and optimization.")
(invoke "python" "setup.py" "build_ext" "--inplace"))))))
(propagated-inputs
(list python-dask
- python-numpy))
+ python-numpy
+ python-click))
(native-inputs
(list python-cython
+ python-setuptools
+ python-wheel
;; The following are all needed for the tests
htslib
python-h5py
@@ -231,26 +392,84 @@ routines such as routines for numerical integration and optimization.")
genetic variation data.")
(license license:expat)))
+(define-public python-scikit-build-core
+ (package
+ (name "python-scikit-build-core")
+ (version "0.9.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "scikit_build_core" version))
+ (sha256
+ (base32 "146k3w3kcamyyqassmsmp6h4f5lb3cdqnbjjcbf0jm1s8wz1279l"))))
+ (build-system pyproject-build-system)
+ ;; Tests are aborted with the admonition: "setup.py install is
+ ;; deprecated. Use build and pip and other standards-based tools."
+ (arguments (list #:tests? #false))
+ (propagated-inputs (list python-exceptiongroup
+ python-importlib-metadata
+ python-importlib-resources
+ python-packaging
+ python-pathspec
+ python-tomli
+ python-typing-extensions))
+ (native-inputs (list pybind11
+ python-pypa-build
+ python-cattrs
+ python-fastjsonschema
+ python-hatch-fancy-pypi-readme
+ python-hatch-vcs
+ python-hatchling
+ python-numpy
+ python-pip
+ python-pytest
+ python-rich
+ python-setuptools
+ python-setuptools-scm
+ python-virtualenv
+ python-wheel))
+ (home-page "https://github.com/scikit-build/scikit-build-core")
+ (synopsis "Build backend for CMake based projects")
+ (description "Scikit-build-core is a build backend for Python that uses
+CMake to build extension modules. It has a simple yet powerful static
+configuration system in pyproject.toml, and supports almost unlimited
+flexibility via CMake. It was initially developed to support the demanding
+needs of scientific users, but can build any sort of package that uses
+CMake.")
+ (license license:asl2.0)))
+
(define-public python-scikit-fem
(package
(name "python-scikit-fem")
- (version "9.0.1")
- (source (origin
- (method git-fetch) ; no tests in PyPI
- (uri (git-reference
- (url "https://github.com/kinnala/scikit-fem")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1r1c88rbaa7vjfnljbzx8paf36yzpy33bragl99ykn6i2srmjrd4"))))
+ (version "10.0.2")
+ (source
+ (origin
+ (method git-fetch) ; no tests in PyPI
+ (uri (git-reference
+ (url "https://github.com/kinnala/scikit-fem")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "10kvzm4fmazsrddd83m0903wan67fkj13vdp6w1iw6wm6a0b5h28"))))
(build-system pyproject-build-system)
- (propagated-inputs (list python-meshio python-numpy python-scipy))
+ (arguments
+ (list
+ #:test-flags #~(list
+ ;; Tests require Jax.
+ "--ignore=tests/test_autodiff.py"
+ "--ignore=tests/test_examples.py")))
(native-inputs
(list python-autograd
python-pyamg
+ ;; python-jax ; not packed yet
python-pytest
- python-shapely))
+ python-shapely
+ python-setuptools
+ python-wheel))
+ (propagated-inputs
+ (list python-meshio
+ python-numpy
+ python-scipy))
(home-page "https://scikit-fem.readthedocs.io/en/latest/")
(synopsis "Library for performing finite element assembly")
(description
@@ -262,17 +481,19 @@ and linear forms into vectors.")
(define-public python-scikit-fuzzy
(package
(name "python-scikit-fuzzy")
- (version "0.4.2")
+ (version "0.5.0")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "scikit-fuzzy" version))
+ (uri (pypi-uri "scikit_fuzzy" version))
(sha256
- (base32 "0bp1n771fj44kdp7a00bcvfwirvv2rc803b7g6yf3va7v0j29c8s"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ;XXX: not compatible with newer numpy.testing
+ (base32 "0zsfyd8cpd2l82fwh3smxbwhb3bkqwlq17cbav53axma4c2k9r9f"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags #~(list "--pyargs" "skfuzzy")))
(native-inputs
- (list python-nose))
+ (list python-pytest))
(propagated-inputs
(list python-networkx python-numpy python-scipy))
(home-page "https://github.com/scikit-fuzzy/scikit-fuzzy")
@@ -285,7 +506,7 @@ logic, also known as grey logic.")
(define-public python-scikit-image
(package
(name "python-scikit-image")
- (version "0.22.0")
+ (version "0.23.2")
(source
(origin
(method git-fetch)
@@ -294,10 +515,12 @@ logic, also known as grey logic.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "10fzyq2w1ldvfkmj374l375yrx33xrlw39xc9kmk8fxfi77jpykd"))))
+ (base32 "1bc8i57sjk44vd9k1ilr6fpvfq1zbq9yfi22lz22k26mzrlisym3"))))
(build-system pyproject-build-system)
(arguments
(list
+ ;; Disable flaky test
+ #:test-flags #~(list "-k" "not test_ellipse_parameter_stability")
#:phases
#~(modify-phases %standard-phases
(add-before 'build 'change-home-dir
@@ -351,7 +574,7 @@ logic, also known as grey logic.")
(sha256
(base32 "0ycqizgsj7q57asc1bphzhf1fx9zqn0vx5rli7q541bas64hfqiy"))))
(build-system pyproject-build-system)
- (propagated-inputs (list python-numpy python-scipy))
+ (propagated-inputs (list python-numpy python-pytorch python-scipy))
(home-page "https://github.com/guofei9987/scikit-opt")
(synopsis "Swarm intelligence algorithms in Python")
(description
@@ -364,29 +587,16 @@ swarm algorithm.")
(define-public python-scikit-optimize
(package
(name "python-scikit-optimize")
- (version "0.9.0")
+ (version "0.10.2")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/scikit-optimize/scikit-optimize")
+ (url "https://github.com/holgern/scikit-optimize")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
- "0hsq6pmryimxc275yrcy4bv217bx7ma6rz0q6m4138bv4zgq18d1"))
- (patches
- ;; These are for compatibility with more recent versions of
- ;; numpy and scikit-learn.
- (search-patches "python-scikit-optimize-1148.patch"
- "python-scikit-optimize-1150.patch"))
- (modules '((guix build utils)))
- (snippet
- ;; Since scikit-learn 1.3 max_features no longer supports
- ;; 'auto', which is identical to 'sqrt'
- '(substitute* '("skopt/learning/forest.py"
- "skopt/learning/tests/test_forest.py")
- (("max_features=['\"]auto['\"]")
- "max_features='sqrt'")))))
+ "0pc6avzxz8l32km5jvv3maih0a5x2akxybvxl2hdg04qz2l0kz8b"))))
(build-system pyproject-build-system)
(propagated-inputs
(list python-joblib
@@ -396,7 +606,7 @@ swarm algorithm.")
python-scikit-learn
python-scipy))
(native-inputs
- (list python-pytest))
+ (list python-pytest python-setuptools python-wheel))
(home-page "https://scikit-optimize.github.io/")
(synopsis "Sequential model-based optimization toolbox")
(description "Scikit-Optimize, or @code{skopt}, is a simple and efficient
@@ -405,6 +615,111 @@ implements several methods for sequential model-based optimization.
@code{skopt} aims to be accessible and easy to use in many contexts.")
(license license:bsd-3)))
+(define-public python-scikit-surprise
+ (package
+ (name "python-scikit-surprise")
+ (version "1.1.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/NicolasHug/Surprise")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "15ckx2i41vs21sa3yqyj12zr0h4zrcdf3lrwcy2c1cq2bjq7mnvz"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'check 'set-home
+ (lambda _
+ ;; Change from /homeless-shelter to /tmp for write
+ ;; permission.
+ (setenv "HOME" "/tmp"))))))
+ (native-inputs
+ (list python-cython-3
+ python-pandas
+ python-pytest
+ python-setuptools
+ python-wheel))
+ (propagated-inputs
+ (list python-joblib
+ python-numpy
+ python-scikit-learn))
+ (home-page "https://surpriselib.com/")
+ (synopsis "Recommender system library for Scikit-learn")
+ (description
+ "This package provides a Python library for building and analyzing
+recommender systems that deal with explicit rating data. It was designed with
+the following purposes in mind:
+@itemize
+@item Provide tools to handle downloaded or user-provided datasets.
+@item Provide ready-to-use prediction algorithms and similarity measures.
+@item Provide a base for creating custom algorithims.
+@item Provide tools to evaluate, analyse and compare algorithm performance.
+@item Provide documentation with precise details regarding library algorithms.
+@end itemize")
+ (license license:bsd-3)))
+
+(define-public python-scikit-survival
+ (let ((revision "1")
+ ;; We need a later commit for support of a more recent sklearn and
+ ;; numpy 2.
+ (commit "bceb53ebb8306f959c70fae2be9d552f33dd3f21"))
+ (package
+ (name "python-scikit-survival")
+ (version (git-version "0.22.2" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sebp/scikit-survival")
+ (commit commit)
+ ;; This package contains a copy of Eigen. It would be good to
+ ;; figure out how to use our own Eigen package.
+ (recursive? #true)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1m3z64nv4sgay0mdrrw4q4z5ylx63a9w2x43w1r4g8kpg7z9rdfc"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'set-version
+ (lambda _
+ (setenv "SETUPTOOLS_SCM_PRETEND_VERSION"
+ #$(version-major+minor version)))))))
+ (propagated-inputs
+ (list python-ecos
+ python-importlib-resources
+ python-joblib
+ python-numexpr
+ python-numpy
+ python-osqp
+ python-pandas
+ python-scikit-learn
+ python-scipy))
+ (native-inputs
+ (list python-black
+ python-pypa-build
+ python-coverage
+ python-cython-3
+ python-packaging
+ python-pytest
+ python-setuptools-scm
+ python-tomli
+ python-tox))
+ (home-page "https://github.com/sebp/scikit-survival")
+ (synopsis "Survival analysis built on top of scikit-learn")
+ (description "Scikit-survival is a Python module for survival analysis
+built on top of scikit-learn. It allows doing survival analysis while
+utilizing the power of scikit-learn, e.g., for pre-processing or doing
+cross-validation.")
+ (license license:gpl3+))))
+
(define-public python-tdda
(package
(name "python-tdda")
@@ -422,7 +737,11 @@ implements several methods for sequential model-based optimization.
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "tdda" "test")))))))
- (native-inputs (list python-numpy python-pandas))
+ (native-inputs
+ (list python-numpy
+ python-pandas
+ python-setuptools
+ python-wheel))
(home-page "https://www.stochasticsolutions.com")
(synopsis "Test-driven data analysis library for Python")
(description
@@ -435,7 +754,10 @@ of regular expressions from text data and automatic test generation.")
(define-public python-trimesh
(package
(name "python-trimesh")
- (version "4.0.10")
+ ;; XXX: The latest version fails on sanity check, requiring newer
+ ;; setuptools which is not yet available on master. Update when
+ ;; python-team is merged.
+ (version "4.1.8")
(source
(origin
(method git-fetch) ; no tests in PyPI
@@ -444,7 +766,7 @@ of regular expressions from text data and automatic test generation.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0ry04qaw0pb3hkxv4gmna87jwk97aqangd21wbr2dr4xshmkbyyb"))))
+ (base32 "1vkp7znrlsqaiyg16py3jcqspi6yq4wh48lzng4sg248hqzhzspa"))))
(build-system pyproject-build-system)
(arguments
(list
@@ -454,55 +776,67 @@ of regular expressions from text data and automatic test generation.")
;; disabled tests once again.
;;
;; Disable tests requiring optional, not packed modules.
- "not test_material_round"
- " and not test_bezier_example"
+ "not test_bezier_example"
" and not test_discrete"
" and not test_dxf"
- " and not test_layer"
- " and not test_multi_nodupe"
- " and not test_obj_roundtrip"
- " and not test_roundtrip"
- " and not test_scene"
+ " and not test_ply_path_bezier"
+ " and not test_ply_path_line"
+ " and not test_ply_path_multi"
+ " and not test_revolve"
+ " and not test_screw"
+ " and not test_simple_closed"
+ " and not test_simple_extrude"
+ " and not test_simple_open"
" and not test_slice_onplane"
- " and not test_svg"
+ " and not test_spline_3D"
" and not test_svg"))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'fix-build
(lambda _
+ ;; Reported upstream, see
+ ;; <https://github.com/mikedh/trimesh/pull/2314>.
(substitute* "trimesh/resources/templates/blender_boolean.py.tmpl"
(("\\$MESH_PRE")
"'$MESH_PRE'")))))))
(native-inputs
(list python-coveralls
python-pyinstrument
- python-pytest
- python-pytest-cov))
+ python-pytest))
(propagated-inputs
- (list python-chardet
+ (list ;; python-cascadio ; not packed yet, optional
+ python-chardet
python-colorlog
python-httpx
python-jsonschema
python-lxml
+ ;; python-mapbox-earcut ; not packed yet, optional
+ ;; python-manifold3d ; not packed yet, optional
+ python-meshio
python-networkx
python-numpy
+ ;; python-openctm ; not packed yet, optional
python-pillow
- ;; python-pycollada ; not packed yet, optional
- ;; python-pyglet ; not packed yet, optional
+ python-psutil
+ python-pycollada
+ python-pyglet
python-requests
python-rtree
+ python-scikit-image
python-scipy
python-setuptools
python-shapely
- ;; python-svg-path ; not packed yet, optional
+ ;; python-svg-path ; not packed yet, optional
python-sympy
+ ;; python-vhacdx ; not packed yet, optional
+ ;; python-xatlas ; not packed yet, optional
python-xxhash))
(home-page "https://github.com/mikedh/trimesh")
(synopsis "Python library for loading and using triangular meshes")
(description
"Trimesh is a pure Python library for loading and using triangular meshes
-with an emphasis on watertight surfaces. The goal of the library is to provide
-a full featured and well tested Trimesh object which allows for easy
+with an emphasis on watertight surfaces. The goal of the library is to
+provide a full featured and well tested Trimesh object which allows for easy
manipulation and analysis, in the style of the Polygon object in the Shapely
library.")
(license license:expat)))
@@ -532,6 +866,37 @@ volume computations for simple domains like regular polygons, disks,
spheres, cubes, etc.")
(license license:gpl3+)))
+(define-public python-mpl-scatter-density
+ (package
+ (name "python-mpl-scatter-density")
+ (version "0.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "mpl-scatter-density" version))
+ (sha256
+ (base32 "083n4xkwjmxvij9i1xhfnxz8vk39ay0baam4nf0khvcihw47bkna"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; See <https://github.com/astrofrog/mpl-scatter-density/issues/42>.
+ #:test-flags #~(list "-k" "not test_default_dpi")))
+ (propagated-inputs
+ (list python-fast-histogram
+ python-matplotlib
+ python-numpy))
+ (native-inputs
+ (list python-pytest
+ python-pytest-cov
+ python-pytest-mpl
+ python-setuptools-scm))
+ (home-page "https://github.com/astrofrog/mpl-scatter-density")
+ (synopsis "Matplotlib helpers to make density scatter plots")
+ (description
+ "This package provides functionality to make it easy to make scatter
+density maps, both for interactive and non-interactive use.")
+ (license license:bsd-2)))
+
(define-public python-pyamg
(package
(name "python-pyamg")
@@ -584,7 +949,9 @@ spheres, cubes, etc.")
python-cppheaderparser
python-pytest
python-pyyaml
- python-setuptools-scm))
+ python-setuptools
+ python-setuptools-scm
+ python-wheel))
(propagated-inputs (list python-numpy python-scipy))
(home-page "https://github.com/pyamg/pyamg")
(synopsis "Algebraic Multigrid Solvers in Python")
@@ -599,6 +966,32 @@ spheres, cubes, etc.")
@end itemize")
(license license:expat)))
+(define-public python-pyet
+ (package
+ (name "python-pyet")
+ (version "1.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyet" version))
+ (sha256
+ (base32 "1dblsx0bv1g453hcx5vwij1zgankwgwvhwllqkn47k578h038xvy"))))
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list python-mock
+ python-pytest
+ python-setuptools
+ python-wheel))
+ (propagated-inputs
+ (list python-pandas
+ python-xarray))
+ (home-page "https://github.com/pyet-org/pyet")
+ (synopsis "Python package for evapotranspiration calculation")
+ (description
+ "This package provides a Python library for calculating
+Evapotranspiration using various standard methods.")
+ (license license:expat)))
+
(define-public python-tspex
(package
(name "python-tspex")
@@ -619,7 +1012,7 @@ spheres, cubes, etc.")
tissue-specificity metrics for gene expression.")
(license license:gpl3+)))
-(define-public python-pandas
+(define-public python-pandas-1
(package
(name "python-pandas")
(version "1.5.3")
@@ -705,6 +1098,134 @@ tissue-specificity metrics for gene expression.")
python-pytest
python-pytest-mock
python-pytest-xdist
+ python-setuptools
+ python-wheel
+ ;; Needed to test clipboard support.
+ xorg-server-for-tests))
+ (home-page "https://pandas.pydata.org")
+ (synopsis "Data structures for data analysis, time series, and statistics")
+ (description
+ "Pandas is a Python package providing fast, flexible, and expressive data
+structures designed to make working with structured (tabular,
+multidimensional, potentially heterogeneous) and time series data both easy
+and intuitive. It aims to be the fundamental high-level building block for
+doing practical, real world data analysis in Python.")
+ (license license:bsd-3)))
+
+(define-public python-pandas-2
+ (package
+ (name "python-pandas")
+ (version "2.2.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pandas-dev/pandas")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "00f6jnplwg7iffnxdm4hpfls0ncbarc23933xq1rm5nk5g8dcldx"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ #~(list "--pyargs" "pandas"
+ ;; "--exitfirst"
+ "--numprocesses" (number->string (parallel-job-count))
+ "-m" "not slow and not network and not db"
+ ;; All tests errored.
+ "--ignore=pandas/tests/io/test_clipboard.py"
+ "-k" (string-join
+ (list
+ "not test_git_version"
+ "test_show_versions_console"
+ ;; Not testing ~ expansion.
+ "test_expand_user"
+ "test_get_handle_with_path"
+ ;; These test access the internet (see:
+ ;; https://github.com/pandas-dev/pandas/issues/45085).:
+ ;; pandas/tests/io/xml/test_xml.py::test_wrong_url[lxml]
+ ;; pandas/tests/io/xml/test_xml.py::test_wrong_url[etree]
+ "test_wrong_url"
+ ;; TODO: Missing input
+ "TestS3"
+ "s3"
+ ;; This test fails when run with pytest-xdist
+ ;; (see: https://github.com/pandas-dev/pandas/issues/39096).
+ "test_memory_usage"
+ "test_parsing_tzlocal_deprecated"
+ ;; PyArrow is optional.
+ "test_style_bar_with_pyarrow_NA_values"
+ "test_very_negative_exponent"
+ "test_usecols_no_header_pyarrow"
+ "test_scientific_no_exponent[pyarrow-None]"
+ "test_inspect_getmembers"
+ ;; SciPy introduces cycle, optional.
+ "test_savefig"
+ ;; It requires a fresh python-tzdata, including new
+ ;; timezones.
+ "test_repr")
+ " and not "))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'version-set-by-guix
+ (lambda _
+ (with-output-to-file "_version.py"
+ (lambda _
+ (display
+ (string-append "__version__ = \""
+ #$(package-version this-package)
+ "\""))))))
+ (add-before 'check 'prepare-x
+ (lambda _
+ (system "Xvfb &")
+ (setenv "DISPLAY" ":0")
+ (setenv "HOME" ".")
+ ;; Skip tests that require lots of resources.
+ (setenv "PANDAS_CI" "1")))
+ (add-after 'unpack 'patch-which
+ (lambda _
+ (substitute* "pandas/io/clipboard/__init__.py"
+ (("^WHICH_CMD = .*")
+ (string-append "WHICH_CMD = \""
+ #$(this-package-input "which")
+ "/bin/which\"\n")))))
+ ;; The compiled libraries are only in the output at this point,
+ ;; but they are needed to run tests.
+ ;; FIXME: This should be handled by the pyargs pytest argument,
+ ;; but is not for some reason.
+ (add-before 'check 'pre-check
+ (lambda _
+ (copy-recursively
+ (string-append #$output
+ "/lib/python3.10/site-packages/pandas/_libs")
+ "pandas/_libs"))))))
+ (propagated-inputs
+ (list python-dateutil
+ python-jinja2
+ python-matplotlib
+ python-numpy
+ python-openpyxl
+ python-pytz
+ python-tzdata
+ python-xlrd
+ python-xlsxwriter))
+ (inputs
+ (list which xclip xsel))
+ (native-inputs
+ (list meson-python
+ python-beautifulsoup4
+ python-cython-3
+ python-html5lib
+ python-lxml
+ python-matplotlib
+ python-openpyxl
+ python-pytest-asyncio
+ python-pytest
+ python-pytest-localserver
+ python-pytest-mock
+ python-pytest-xdist
+ python-versioneer
;; Needed to test clipboard support.
xorg-server-for-tests))
(home-page "https://pandas.pydata.org")
@@ -717,13 +1238,14 @@ and intuitive. It aims to be the fundamental high-level building block for
doing practical, real world data analysis in Python.")
(license license:bsd-3)))
+(define-public python-pandas python-pandas-2)
+
(define-public python-pandas-stubs
(package
(name "python-pandas-stubs")
;; The versioning follows that of Pandas and uses the date of the
- ;; python-pandas-stubs release. This is the latest version of
- ;; python-pandas-stubs for python-pandas 1.5.3.
- (version "1.5.3.230321")
+ ;; python-pandas-stubs release.
+ (version "2.1.1.230928")
(source
(origin
;; No tests in the PyPI tarball.
@@ -733,28 +1255,45 @@ doing practical, real world data analysis in Python.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1blwlq5053pxnmx721zdd6v8njiybz4azribx2ygq33jcpmknda6"))))
+ (base32 "13b6wcwf9ybxf492w1l8qqf2bcgch21xds5r88pfkmrvqhxwfpyr"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags #~(list "-k"
(string-append
- ;; The python-pyarrow package in Guix is not built
- ;; with ORC integration, causing these tests to
- ;; fail.
+ ;; The python-pyarrow package in Guix is built
+ ;; with ORC integration, but these tests fail with
+ ;; an abort in ORC because a timezone file is not
+ ;; in the expected location:
+ ;; https://github.com/apache/arrow/issues/40633
"not test_orc"
" and not test_orc_path"
" and not test_orc_buffer"
" and not test_orc_columns"
- " and not test_orc_bytes"))
- #:phases '(modify-phases %standard-phases
- (add-before 'check 'prepare-x
- (lambda _
- (system "Xvfb &")
- (setenv "DISPLAY" ":0")
- ;; xsel needs to write a log file.
- (setenv "HOME"
- (getcwd)))))))
+ " and not test_orc_bytes"
+ " and not test_all_read_without_lxml_dtype_backend"
+
+ ;; Apparently "numpy.bool_" is not the same as the
+ ;; expected "bool".
+ " and not test_timedelta_cmp"
+ " and not test_timedelta_cmp_rhs"
+ " and not test_timestamp_cmp"
+ " and not test_timestamp_eq_ne_rhs"))
+ #:phases
+ '(modify-phases %standard-phases
+ ;; We cannot yet upgrade numpy to 1.26 because numba needs numpy
+ ;; >1.24.
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "pyproject.toml"
+ (("numpy = \\{ version = \">=1.26.0\", python = \"<3.13\" \\}")
+ "numpy = { version = \">=1.23.0\", python = \"<3.13\" }"))))
+ (add-before 'check 'prepare-x
+ (lambda _
+ (system "Xvfb &")
+ (setenv "DISPLAY" ":0")
+ ;; xsel needs to write a log file.
+ (setenv "HOME" (getcwd)))))))
(propagated-inputs (list python-types-pytz))
;; Add python-fastparquet to native inputs once it has been packaged. Its
;; tests will be skipped for now.
@@ -814,7 +1353,9 @@ a convention of suggesting best recommended practices for using
python-numpy
python-pytest
python-pytest-cov
- python-pytest-xdist))
+ python-pytest-xdist
+ python-setuptools
+ python-wheel))
(home-page "https://nalepae.github.io/pandarallel/")
(synopsis "Tool to parallelize Pandas operations across CPUs")
(description
@@ -827,7 +1368,7 @@ idea of the remaining amount of computation to be done.")
(define-public python-pandera
(package
(name "python-pandera")
- (version "0.17.2")
+ (version "0.18.0")
(source
(origin
;; No tests in the PyPI tarball.
@@ -837,7 +1378,7 @@ idea of the remaining amount of computation to be done.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1mnqk583z90k1n0z3lfa4rd0ng40v7hqfk7phz5gjmxlzfjbxa1x"))
+ (base32 "14b5aij5zjkwvsimg0v00qvp59mhhq7ljim4qghcn432vkg9gh47"))
(modules '((guix build utils)))
;; These tests require PySpark and Modin. We need to remove the entire
;; directory, since the conftest.py in these directories contain
@@ -855,7 +1396,8 @@ idea of the remaining amount of computation to be done.")
;; positives. These tests currently fail.
"not test_python_std_list_dict_generics"
" and not test_python_std_list_dict_empty_and_none"
- " and not test_pandas_modules_importable"))))
+ " and not test_pandas_modules_importable"
+ " and not test_check_groups"))))
;; Pandera comes with a lot of extras. We test as many as possible, but do
;; not include all of them in the propagated-inputs. Currently, we have to
;; skip the pyspark and io tests due to missing packages python-pyspark
@@ -868,7 +1410,7 @@ idea of the remaining amount of computation to be done.")
python-pandas-stubs ;mypy extra
python-pydantic
python-scipy ;hypotheses extra
- python-typeguard-4
+ python-typeguard
python-typing-inspect
python-wrapt))
(native-inputs (list python-dask ;dask extra
@@ -877,8 +1419,10 @@ idea of the remaining amount of computation to be done.")
python-pyarrow ;needed to run fastapi tests
python-pytest
python-pytest-asyncio
+ python-setuptools
python-sphinx
- python-uvicorn)) ;needed to run fastapi tests
+ python-uvicorn ;needed to run fastapi tests
+ python-wheel))
(home-page "https://github.com/unionai-oss/pandera")
(synopsis "Perform data validation on dataframe-like objects")
(description
@@ -905,7 +1449,7 @@ production-critical data pipelines or reproducible research settings. With
(define-public python-pyjanitor
(package
(name "python-pyjanitor")
- (version "0.26.0")
+ (version "0.27.0")
(source
(origin
;; The build requires the mkdocs directory for the description in
@@ -916,7 +1460,7 @@ production-critical data pipelines or reproducible research settings. With
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1f8xbl1k9l2z56bapp7v6bd3016zrk48igcaz6hb553r6yfl7vfx"))))
+ (base32 "04vsg189msv8frx4zhpcg61djl7wsfvibmz0zmiih4rvkgly2cdr"))))
(build-system pyproject-build-system)
;; Pyjanitor has an extensive test suite. For quick debugging, the tests
;; marked turtle can be skipped using "-m" "not turtle".
@@ -925,16 +1469,29 @@ production-critical data pipelines or reproducible research settings. With
#:test-flags '(list
"-n" (number->string (parallel-job-count))
;; Tries to connect to the internet.
- "-k" "not test_is_connected"
+ "-k" (string-append "not test_is_connected"
+ ;; Test files are not included
+ " and not test_read_commandline_bad_cmd"
+ ;; This fails due to differences in accuracy
+ " and not test_jitter_results")
+ ;; Test files are not included
+ "--ignore=tests/io/test_read_csvs.py"
;; PySpark has not been packaged yet.
"--ignore=tests/spark/functions/test_clean_names_spark.py"
"--ignore=tests/spark/functions/test_update_where_spark.py")
- #:phases #~(modify-phases %standard-phases
- (add-before 'check 'set-env-ci
- (lambda _
- ;; Some tests are skipped if the JANITOR_CI_MACHINE
- ;; variable is not set.
- (setenv "JANITOR_CI_MACHINE" "1"))))))
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Pandas 2.1.1 does not offer the BME frequency.
+ (add-after 'unpack 'pandas-compat
+ (lambda _
+ (substitute* '("tests/functions/test_select_rows.py"
+ "tests/functions/test_select_columns.py")
+ (("freq=\"BME\"") "freq=\"BM\""))))
+ (add-before 'check 'set-env-ci
+ (lambda _
+ ;; Some tests are skipped if the JANITOR_CI_MACHINE
+ ;; variable is not set.
+ (setenv "JANITOR_CI_MACHINE" "1"))))))
(propagated-inputs (list python-multipledispatch
python-natsort
python-pandas-flavor
@@ -947,6 +1504,8 @@ production-critical data pipelines or reproducible research settings. With
;; Optional imports. We do not propagate them due to
;; their size.
python-numba ;speedup of joins
+ python-setuptools
+ python-wheel
rdkit)) ;chemistry submodule
(home-page "https://github.com/pyjanitor-devs/pyjanitor")
(synopsis "Tools for cleaning and transforming pandas DataFrames")
@@ -958,6 +1517,48 @@ package was a port of the R package by the same name and it is inspired by the
ease-of-use and expressiveness of the @code{dplyr} package.")
(license license:expat)))
+(define-public python-pymcubes
+ (package
+ (name "python-pymcubes")
+ (version "0.1.6")
+ (source
+ (origin
+ (method git-fetch) ; no tests in PyPI
+ (uri (git-reference
+ (url "https://github.com/pmneila/PyMCubes")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1v2qhc4pwanx6a8k843mbh45yk77n3w63sy5lzk5c3q4pkvfj1b9"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'check 'prepare-test-environment
+ (lambda _
+ ;; FileNotFoundError: [Errno 2] No such file or directory:
+ ;; 'output/test.obj'
+ (mkdir "output")
+ (invoke "python" "setup.py" "build_ext" "--inplace"))))))
+ (native-inputs
+ (list python-cython
+ python-pytest
+ python-setuptools
+ python-wheel))
+ (propagated-inputs
+ (list python-pycollada
+ python-numpy
+ python-scipy))
+ (home-page "https://github.com/pmneila/PyMCubes")
+ (synopsis "Marching cubes for Python")
+ (description
+ "@code{PyMCubes} is an implementation of the marching cubes algorithm to
+extract iso-surfaces from volumetric data. The volumetric data can be given
+as a three-dimensional @code{NumPy} array or as a Python function @code{f(x,
+y, z)}.")
+ (license license:bsd-3)))
+
(define-public python-pythran
(package
(name "python-pythran")
@@ -1031,7 +1632,8 @@ Python module with the same interface, but (hopefully) faster.")
python-scikit-learn
python-scipy))
(native-inputs
- (list python-pytest python-pytest-cov))
+ (list python-pytest python-pytest-cov python-setuptools
+ python-wheel))
(home-page "https://github.com/johannfaouzi/pyts")
(synopsis "Python package for time series classification")
(description
@@ -1082,7 +1684,8 @@ written in C.")
"01g21v91f4d66xd0bvap0n6d6485w2fnq1636gx6h2s42550rlbd"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-importlib-metadata python-numpy))
- (native-inputs (list python-pytest python-sympy))
+ (native-inputs (list python-pytest python-setuptools python-sympy
+ python-wheel))
(home-page "https://numpoly.readthedocs.io/en/master/")
(synopsis "Polynomials as a numpy datatype")
(description "Numpoly is a generic library for creating, manipulating and
@@ -1092,6 +1695,32 @@ evaluating arrays of polynomials based on @code{numpy.ndarray objects}.")
(supported-systems '("x86_64-linux" "aarch64-linux" "powerpc64le-linux"))
(license license:bsd-2)))
+(define-public python-spin
+ (package
+ (name "python-spin")
+ (version "0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "spin" version))
+ (sha256
+ (base32 "0ff48nagfaai3j26g1db4zq2bwdv6kj5l7xhcs2l9kzg7qzrmhr7"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-click python-colorama python-tomli))
+ (native-inputs (list python-pytest))
+ (home-page "https://github.com/scientific-python/spin")
+ (synopsis "Developer tool for scientific Python libraries")
+ (description "@code{spin} is a simple interface for common development
+tasks. It comes with a few common build commands out the box, but can
+easily be customized per project.
+
+The impetus behind developing the tool was the mass migration of scientific
+Python libraries (SciPy, scikit-image, and NumPy, etc.) to Meson, after
+distutils was deprecated. When many of the build and installation commands
+changed, it made sense to abstract away the nuisance of having to re-learn
+them.")
+ (license license:bsd-3)))
+
(define-public python-baycomp
(package
(name "python-baycomp")
@@ -1116,6 +1745,64 @@ region of practical equivalence (rope), or that the second classifier has
higher scores.")
(license license:expat)))
+(define-public python-fast-histogram
+ (package
+ (name "python-fast-histogram")
+ (version "0.14")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "fast_histogram" version))
+ (sha256
+ (base32 "1sk9xa85cgm4sylzblwv3qr2dmm0ic06zkwxqa2xlazjiawp629r"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'check 'build-extensions
+ (lambda _
+ (invoke "python" "setup.py" "build_ext" "--inplace"))))))
+ (native-inputs
+ (list python-hypothesis
+ python-pytest
+ python-setuptools
+ python-setuptools-scm
+ python-wheel))
+ (propagated-inputs
+ (list python-numpy))
+ (home-page "https://github.com/astrofrog/fast-histogram")
+ (synopsis "Fast simple 1D and 2D histograms")
+ (description
+ "The fast-histogram mini-package aims to provide simple and fast
+histogram functions for regular bins that don't compromise on performance. It
+doesn't do anything complicated - it just implements a simple histogram
+algorithm in C and keeps it simple. The aim is to have functions that are
+fast but also robust and reliable. The result is a 1D histogram function here
+that is 7-15x faster than @code{numpy.histogram}, and a 2D histogram function
+that is 20-25x faster than @code{numpy.histogram2d}.")
+ (license license:bsd-3)))
+
+(define-public python-fastcluster
+ (package
+ (name "python-fastcluster")
+ (version "1.2.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "fastcluster" version))
+ (sha256
+ (base32 "19labbgnq85p4r4jbli2p045lgh57larhi2g2anagfxnlzpqdf5a"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy))
+ (native-inputs (list python-scipy))
+ (home-page "https://danifold.net/fastcluster.html")
+ (synopsis "Fast hierarchical clustering routines for R and Python")
+ (description "The fastcluster package implements seven common hierarchical
+clustering schemes efficiently. The package is made with two interfaces to
+standard software: R and Python.")
+ (license license:bsd-2)))
+
(define-public python-fbpca
(package
(name "python-fbpca")
@@ -1205,10 +1892,20 @@ multiple deep learning frameworks.")
"0cyldwchcrmbm1y7l1ry70kk8zdh7frxci3c6iwf4iyyj34dnra5"))))
(build-system pyproject-build-system)
(arguments
- ;; This needs a more recent version of python-hypothesis
- (list #:test-flags '(list "--ignore=xarray/tests/test_strategies.py")))
+ (list
+ #:test-flags
+ ;; This needs a more recent version of python-hypothesis
+ '(list "--ignore=xarray/tests/test_strategies.py"
+ ;; These are known to fail with Pandas 2
+ "-k"
+ (string-append "not test_datetime_conversion_warning"
+ " and not test_timedelta_conversion_warning"
+ ;; These expect deprecation warnings that are not
+ ;; emitted in our case.
+ " and not test_drop_index_labels"
+ " and not test_rename_multiindex"))))
(native-inputs
- (list python-setuptools-scm python-pytest))
+ (list python-setuptools python-setuptools-scm python-pytest python-wheel))
(propagated-inputs
(list python-numpy python-packaging python-pandas))
(home-page "https://github.com/pydata/xarray")
@@ -1223,6 +1920,54 @@ large and growing library of domain-agnostic functions for advanced analytics
and visualization with these data structures.")
(license license:asl2.0)))
+(define-public python-xarray-dataclasses
+ (package
+ (name "python-xarray-dataclasses")
+ (version "1.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/astropenguin/xarray-dataclasses/")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "043lc1hadr5y0y16g682viiafy0hfsa7q18lqmndpyvnmcgm893z"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy python-typing-extensions
+ python-xarray))
+ (native-inputs (list python-pytest python-poetry-core))
+ (home-page "https://github.com/astropenguin/xarray-dataclasses/")
+ (synopsis "Data creation made easy by dataclass")
+ (description "@code{xarray-dataclasses} is a Python package that makes it
+easy to create @code{xarray}'s @code{DataArray} and @code{Datase} objects that
+are \"typed\" (i.e. fixed dimensions, data type, coordinates, attributes, and
+name) using the Python's @code{dataclass}.")
+ (license license:expat)))
+
+;; Note that this package will be folded into xarray eventually. See
+;; https://github.com/pydata/xarray/issues/8572 for details.
+(define-public python-xarray-datatree
+ (package
+ (name "python-xarray-datatree")
+ (version "0.0.14")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "xarray-datatree" version))
+ (sha256
+ (base32 "1x1s25s6dp1f2hck9qw8vl8hgkyy23rcwag2a9vd3w0dbgrrl5i6"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-packaging python-xarray))
+ ;; We need setuptools-scm to correctly record the version string.
+ (native-inputs (list python-pytest python-setuptools-scm python-zarr))
+ (home-page "https://github.com/xarray-contrib/datatree")
+ (synopsis "Hierarchical tree-like data structures for xarray")
+ (description "Datatree is a prototype implementation of a tree-like
+hierarchical data structure for @code{xarray}. Datatree is in the process of
+being merged upstream into @code{xarray}.")
+ (license license:asl2.0)))
+
(define-public python-xarray-einstats
(package
(name "python-xarray-einstats")
@@ -1247,6 +1992,25 @@ and visualization with these data structures.")
functions and around einops with an API and features adapted to xarray.")
(license license:asl2.0)))
+(define-public python-xarray-schema
+ (package
+ (name "python-xarray-schema")
+ (version "0.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "xarray-schema" version))
+ (sha256
+ (base32 "08194629696z98dkc74i6c9zmy1jicvd2ajb75q0lsf0i427cv4w"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy python-xarray))
+ (native-inputs (list python-pytest python-setuptools-scm))
+ (home-page "https://github.com/carbonplan/xarray-schema")
+ (synopsis "Schema validation for Xarray objects")
+ (description "This package implements schema validation for Xarray
+objects.")
+ (license license:expat)))
+
(define-public python-pytensor
(package
(name "python-pytensor")
@@ -1308,7 +2072,9 @@ parentdir_prefix = pytensor-
(native-inputs (list python-cython
python-pytest
python-pytest-mock
- python-versioneer))
+ python-versioneer
+ python-setuptools
+ python-wheel))
(propagated-inputs (list python-cons
python-etuples
python-filelock
@@ -1382,6 +2148,36 @@ Python's native complex data types is also supported.")
automated with the minimum of fuss and the least effort.")
(license license:expat)))
+(define-public python-scs
+ (package
+ (name "python-scs")
+ (version "3.2.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bodono/scs-python")
+ (commit "3.2.4")
+ (recursive? #true)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "06wd8m3ri0gaddl7qq6243g25zjlnh3da915b73jnrfh7sg1nqsj"))))
+ (build-system pyproject-build-system)
+ (native-inputs
+ (list pkg-config
+ python-pytest
+ meson-python))
+ (inputs
+ (list openblas))
+ (propagated-inputs
+ (list python-numpy
+ python-scipy))
+ (home-page "https://github.com/bodono/scs-python")
+ (synopsis "Splitting conic solver")
+ (description "This package provides a Python interface for the
+SCS (Splitting conic solver) library.")
+ (license license:expat)))
+
(define-public python-statannot
(package
(name "python-statannot")
@@ -1416,14 +2212,20 @@ annotations on an existing boxplots and barplots generated by seaborn.")
(sha256
(base32 "00900bw24rxgcgwgxp9xlx0l5im96r1n5hn0r3mxvbdgc3lyyq48"))))
(build-system pyproject-build-system)
+ ;; Pint is optional, but we do not propagate it due to its size.
+ (native-inputs
+ (list python-pint
+ python-pytest
+ python-setuptools
+ python-setuptools-scm
+ python-wheel))
;; Astropy is an optional import, but we do not include it as it creates a
;; module cycle: astronomy->python-science->astronomy.
- (propagated-inputs (list python-h5py ; optional import
- python-matplotlib ; optional import
- python-numpy
- python-sympy))
- ;; Pint is optional, but we do not propagate it due to its size.
- (native-inputs (list python-pint python-pytest))
+ (propagated-inputs
+ (list python-h5py ; optional import
+ python-matplotlib ; optional import
+ python-numpy
+ python-sympy))
(home-page "https://unyt.readthedocs.io")
(synopsis "Library for working with data that has physical units")
(description
@@ -1554,7 +2356,7 @@ of Pandas
(define-public python-pingouin
(package
(name "python-pingouin")
- (version "0.5.2")
+ (version "0.5.4")
(source
;; The PyPI tarball does not contain the tests.
(origin
@@ -1565,11 +2367,15 @@ of Pandas
(file-name (git-file-name name version))
(sha256
(base32
- "0czy7cpn6xx9fs6wbz6rq2lpkb1a89bzxj1anf2f9in1m5qyrh83"))))
- (build-system python-build-system)
+ "1j3qkgvyc31604ddl952h4hwza7schg8kwkycmxvpvx7xjj7nn68"))))
+ (build-system pyproject-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
+ (list
+ #:test-flags
+ ;; This one fails due to minor differences in accuracy
+ '(list "-k" "not test_logistic_regression")
+ #:phases
+ '(modify-phases %standard-phases
(add-after 'unpack 'loosen-requirements
(lambda _
(substitute* '("requirements.txt" "setup.py")
@@ -1587,10 +2393,11 @@ of Pandas
(substitute* "pingouin/__init__.py"
(("^from outdated[^\n]*") "")
(("^warn_if_outdated[^\n]*") ""))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest")))))))
+ (add-after 'unpack 'sklearn-compatibility
+ (lambda _
+ (substitute* "pingouin/regression.py"
+ (("kwargs\\[\"penalty\"\\] = \"none\"")
+ "kwargs[\"penalty\"] = None")))))))
(native-inputs
(list python-pytest python-pytest-cov))
(propagated-inputs
@@ -1654,10 +2461,63 @@ and more
Mathematics (GLM) library to Python.")
(license license:zlib)))
+(define-public python-dask-expr
+ (package
+ (name "python-dask-expr")
+ (version "1.0.14")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dask/dask-expr")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0c2q8w8wl5d2hycbjp9vavkl5f36kaz390wxlis2d8d43jnqhf0d"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:tests? #false ;need python-distributed, which needs dask-expr.
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'versioneer
+ (lambda _
+ ;; Our version of versioneer needs setup.cfg. This is adapted
+ ;; from pyproject.toml.
+ (with-output-to-file "setup.cfg"
+ (lambda ()
+ (display "\
+[versioneer]
+VCS = git
+style = pep440
+versionfile_source = dask_expr/_version.py
+versionfile_build = dask_expr/_version.py
+tag_prefix =
+parentdir_prefix = dask_expr-
+")))
+ (invoke "versioneer" "install")
+ (substitute* "setup.py"
+ (("versioneer.get_version\\(\\)")
+ (string-append "\"" #$version "\""))))))))
+ (propagated-inputs (list python-pandas python-pyarrow))
+ (native-inputs
+ ;; We use python-dask/bootstrap so that python-dask can propagate this
+ ;; package without creating a mutually recursive dependency.
+ (list python-dask/bootstrap
+ python-pytest
+ python-setuptools
+ python-versioneer
+ python-wheel))
+ (home-page "https://github.com/dask/dask-expr")
+ (synopsis "Dask DataFrames with query optimization")
+ (description "This is a rewrite of Dask DataFrame that includes query
+optimization and generally improved organization.")
+ (license license:bsd-3)))
+
(define-public python-distributed
(package
(name "python-distributed")
- (version "2023.7.0")
+ (version "2024.4.2")
(source
(origin
;; The test files are not included in the archive on pypi
@@ -1668,12 +2528,12 @@ Mathematics (GLM) library to Python.")
(file-name (git-file-name name version))
(sha256
(base32
- "0b93fpwz7kw31pkzfyihpkw8mzbqshzd6rw5vcwld7n3z2aaaxxb"))))
+ "0sy9mqa8qlxsagbz8xn304csrlxhxj4b6k84yrjxdcmkp9pkx166"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
- '(list "-x" "-m"
+ '(list "-m"
(string-append "not slow"
" and not flaky"
" and not gpu"
@@ -1728,6 +2588,8 @@ Mathematics (GLM) library to Python.")
"test_locked_comm_drop_in_replacement"
"test_locked_comm_intercept_read"
"test_locked_comm_intercept_write"
+ "test_messages_are_ordered_bsend"
+ "test_messages_are_ordered_raw"
"test_mixing_clients_different_scheduler"
"test_multiple_listeners"
"test_no_dangling_asyncio_tasks"
@@ -1736,6 +2598,7 @@ Mathematics (GLM) library to Python.")
"test_plugin_multiple_exceptions"
"test_ports"
"test_preload_import_time"
+ "test_preload_manager_sequence"
"test_queue_in_task"
"test_quiet_client_close"
"test_rebalance_sync"
@@ -1775,9 +2638,12 @@ Mathematics (GLM) library to Python.")
"test_variable_in_task"
"test_worker_preload_text"
"test_worker_uses_same_host_as_nanny"
- "test_nanny_timeout") ; access to 127.0.0.1
+ "test_nanny_timeout") ; access to 127.0.0.1
" and not ")
+ ;; This seems to want to use 64GB of memory.
+ " and not test_computation_object_code_dask_compute"
+
;; These fail because it doesn't find dask[distributed]
" and not test_quiet_close_process"
@@ -1846,6 +2712,10 @@ parentdir_prefix = distributed-
(add-before 'check 'pre-check
(lambda _
(setenv "DISABLE_IPV6" "1")
+ ;; Disable job queueing
+ (setenv "DASK_DISTRIBUTED__SCHEDULER__WORKER_SATURATION" "inf")
+ ;; Do not use dask-expr
+ (setenv "DASK_DATAFRAME__QUERY_PLANNING" "False")
;; The integration tests are all problematic to some
;; degree. They either require network access or some
;; other setup. We only run the tests in
@@ -1866,6 +2736,7 @@ parentdir_prefix = distributed-
python-cloudpickle
python-cryptography
python-dask
+ python-dask-expr
python-msgpack
python-psutil
python-pyyaml
@@ -1881,7 +2752,8 @@ parentdir_prefix = distributed-
python-importlib-metadata
python-pytest
python-pytest-timeout
- python-versioneer))
+ python-versioneer
+ python-wheel))
(home-page "https://distributed.dask.org")
(synopsis "Distributed scheduler for Dask")
(description "Dask.distributed is a lightweight library for distributed
@@ -2038,6 +2910,10 @@ aggregated sum and more.")
"test_stack_non_linear_scale"
"test_uneven_num_of_lines"
+ ;; This triggers an unexpected but harmless
+ ;; warning.
+ "test_save_method"
+
;; Missing optional modules
"test_non_linear_smooth"
"test_non_linear_smooth_no_ci")
@@ -2070,6 +2946,9 @@ aggregated sum and more.")
python-pandas
python-pytest
python-pytest-cov
+ python-setuptools
+ python-setuptools-scm
+ python-wheel
tzdata-for-tests))
(home-page "https://github.com/has2k1/plotnine")
(synopsis "Grammar of Graphics for Python")
@@ -2173,7 +3052,9 @@ to do spectral analysis in Python.")
python-pandas
python-nose
python-pytest
- python-xarray))
+ python-setuptools
+ python-xarray
+ python-wheel))
(home-page "https://github.com/jupyter-widgets/traittypes")
(synopsis "Trait types for NumPy, SciPy and friends")
(description "The goal of this package is to provide a reference
@@ -2200,6 +3081,62 @@ build applications with traitlets in combination with the scipy stack.")
specification and test suite in Python.")
(license license:expat)))
+(define-public python-clarabel
+ (package
+ (name "python-clarabel")
+ (version "0.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "clarabel" version))
+ (sha256
+ (base32 "15k32ynvh45n9q905bxwamh5w5cia9bxzmwz69wbribmyhsv22m3"))
+ (patches
+ (search-patches "python-clarabel-blas.patch"))))
+ (build-system cargo-build-system)
+ (arguments
+ (list
+ #:imported-modules `(,@%cargo-build-system-modules
+ ,@%pyproject-build-system-modules)
+ #:modules '((guix build cargo-build-system)
+ ((guix build pyproject-build-system) #:prefix py:)
+ (guix build utils))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'build 'build-python-module
+ (assoc-ref py:%standard-phases 'build))
+ (add-after 'build-python-module 'install-python-module
+ (assoc-ref py:%standard-phases 'install)))
+ #:cargo-inputs
+ `(("rust-amd" ,rust-amd-0.2)
+ ("rust-blas" ,rust-blas-0.22)
+ ("rust-cfg-if" ,rust-cfg-if-1)
+ ("rust-derive-builder" ,rust-derive-builder-0.11)
+ ("rust-enum-dispatch" ,rust-enum-dispatch-0.3) ;0.3.8
+ ("rust-itertools" ,rust-itertools-0.11)
+ ("rust-lapack" ,rust-lapack-0.19)
+ ("rust-lazy-static" ,rust-lazy-static-1) ;1.4
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-num-derive" ,rust-num-derive-0.2)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-pyo3" ,rust-pyo3-0.20)
+ ("rust-serde" ,rust-serde-1)
+ ("rust-serde-json" ,rust-serde-json-1)
+ ("rust-thiserror" ,rust-thiserror-1))
+ #:features '(list "python")
+ #:install-source? #false))
+ (inputs
+ (list maturin))
+ (native-inputs
+ (list python-wrapper))
+ (propagated-inputs (list python-numpy python-scipy))
+ (home-page "https://github.com/oxfordcontrol/Clarabel.rs")
+ (synopsis "Interior-point solver for convex conic optimisation problems")
+ (description "Clarabel.rs is a Rust implementation of an interior point
+numerical solver for convex optimization problems using a novel homogeneous
+embedding.")
+ (license license:asl2.0)))
+
(define-public python-climin
(package
(name "python-climin")
@@ -2221,19 +3158,80 @@ heavily biased to machine learning scenarios. It works on top of
@command{numpy} and (partially) @command{gnumpy}.")
(license license:bsd-3)))
+(define-public python-corner
+ (package
+ (name "python-corner")
+ (version "2.2.2")
+ (source
+ (origin
+ (method git-fetch) ;no tests in PyPi archive
+ (uri (git-reference
+ (url "https://github.com/dfm/corner.py")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1i4dk4jxh0saysya2cnsfwlxwpldbdl174i9pwi4qj82av9jr2ii"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ #~(list
+ ;; XXX: Disable tests which failed with mismatched images, check why.
+ "-k" (string-append "not test_labels[png]"
+ " and not test_title_quantiles[png]"
+ " and not test_title_quantiles_default[png]"
+ " and not test_title_quantiles_raises[png]"
+ " and not test_bins[png]"
+ " and not test_bins_log[png]"
+ " and not test_titles1[png]"
+ " and not test_titles2[png]"
+ " and not test_pandas[png]"
+ " and not test_tight[png]"
+ " and not test_extended_overplotting[png]"
+ " and not test_reverse_overplotting[png]"
+ " and not test_arviz[png]"
+ " and not test_range_fig_arg[png]"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'pretend-version
+ ;; XXX: Make sure you're either building from a fully intact git
+ ;; repository or PyPI tarballs. Most other sources (such as GitHub's
+ ;; tarballs, a git checkout without the .git folder) don't contain
+ ;; the necessary metadata and will not work.
+ (lambda _
+ (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))))))
+ (propagated-inputs
+ (list python-matplotlib))
+ (native-inputs
+ (list python-arviz python-pytest python-scipy python-setuptools-scm))
+ (home-page "http://corner.readthedocs.io/")
+ (synopsis "Make some beautiful corner plots")
+ (description
+ "This Python module uses @code{matplotlib} to visualize multidimensional
+samples using a scatterplot matrix. In these visualizations, each one- and
+two-dimensional projection of the sample is plotted to reveal covariances.
+corner was originally conceived to display the results of Markov Chain Monte
+Carlo simulations and the defaults are chosen with this application in mind but
+it can be used for displaying many qualitatively different samples.")
+ (license license:bsd-2)))
+
(define-public python-paramz
(package
(name "python-paramz")
- (version "0.9.5")
+ (version "0.9.6")
(source (origin
- (method url-fetch)
- (uri (pypi-uri "paramz" version))
+ (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
- "16hbh97kj6b1c2gw22rqnr3w3nqkszh9gj8vgx738gq81wf225q9"))))
- (build-system python-build-system)
+ "1ywc2jzj40m6wmq227j3snxvp4434s0m1xk1abg6v6mr87pv2sa9"))))
+ (build-system pyproject-build-system)
(propagated-inputs (list python-decorator python-numpy python-scipy
python-six))
+ (native-inputs (list python-nose))
(home-page "https://github.com/sods/paramz")
(synopsis "The Parameterization Framework")
(description
@@ -2258,27 +3256,35 @@ for parameterized model creation and handling. Its features include:
(define-public python-gpy
(package
(name "python-gpy")
- (version "1.10.0")
+ (version "1.13.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "GPy" version))
(sha256
(base32
- "1yx65ajrmqp02ykclhlb0n8s3bx5r0xj075swwwigiqaippr7dx2"))
- (snippet
- #~(begin (use-modules (guix build utils))
- (substitute* "GPy/models/state_space_main.py"
- (("collections\\.Iterable") "collections.abc.Iterable"))))))
- (build-system python-build-system)
+ "05d1ry4jpp0srsrmp3qd6s0p2bjc4c0z99450pzdr79vagbfvlk4"))))
+ (build-system pyproject-build-system)
(arguments
- `(#:phases (modify-phases %standard-phases
- (add-before 'check 'remove-plotting-tests
- ;; These fail
- (lambda _
- (delete-file "GPy/testing/plotting_tests.py"))))))
- (native-inputs (list python-cython python-nose python-climin))
- (propagated-inputs (list python-numpy python-paramz python-scipy
- python-six))
+ (list
+ #:phases
+ '(modify-phases %standard-phases
+ (add-after 'unpack 'compatibility
+ (lambda _
+ ;; This file uses Python 2 statements
+ (delete-file "GPy/testing/mpi_test__.py")
+ (substitute* "setup.py"
+ (("scipy>=1.3.0,<1.12.0")
+ "scipy>=1.3.0,<=1.13.0"))
+ ;; Use numpy.exp because scipy.ext no longer exists
+ (substitute* "GPy/kern/src/sde_standard_periodic.py"
+ (("sp\\.exp") "np.exp"))
+ (substitute* "GPy/kern/src/sde_stationary.py"
+ (("sp\\.poly1d") "np.poly1d")
+ (("sp\\.roots") "np.roots")))))))
+ (native-inputs
+ (list python-cython python-matplotlib python-pods python-pytest))
+ (propagated-inputs
+ (list python-numpy python-paramz python-scipy python-six))
(home-page "https://sheffieldml.github.io/GPy/")
(synopsis "The Gaussian Process Toolbox")
(description
@@ -2322,7 +3328,7 @@ science including tools for accessing data sets in Python.")
"12i68jj9n1qj9phjnj6f0kmfhlsd3fqjlk9p6d4gs008azw5m8yn"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-numpy))
- (native-inputs (list pybind11 python-pytest))
+ (native-inputs (list pybind11 python-pytest python-setuptools python-wheel))
(home-page "https://github.com/nschloe/pyfma")
(synopsis "Fused multiply-add for Python")
(description "@code{pyfma} provides an implementation of fused
@@ -2366,7 +3372,7 @@ functions, convolutions, artificial neural networks etc.")
" and not TestDatasetOverlayArray"
" and not TestReader"
" and not test_filewriter.py"))))
- (native-inputs (list python-pytest))
+ (native-inputs (list python-pytest python-flit-core))
(inputs (list gdcm libjpeg-turbo))
(propagated-inputs (list python-numpy python-pillow))
(home-page "https://github.com/pydicom/pydicom")
@@ -2412,7 +3418,7 @@ data.")
import six
")))))))
(build-system pyproject-build-system)
- (native-inputs (list python-pandas))
+ (native-inputs (list python-pandas python-setuptools python-wheel))
(propagated-inputs (list python-numpy python-scipy python-six
python-tables))
(home-page "https://github.com/uchicago-cs/deepdish")
@@ -2449,6 +3455,31 @@ interoperability offered by HDF5.")
proportional-integral-derivative} controller.")
(license license:expat)))
+(define-public python-supersmoother
+ (package
+ (name "python-supersmoother")
+ (version "0.4")
+ (source
+ (origin
+ (method git-fetch) ; no package in PyPI
+ (uri (git-reference
+ (url "https://github.com/jakevdp/supersmoother")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1lkj8l2mpki6x2pxcwlrplx63lhi8h9v2rzxgjfb0cppsfr8m1wp"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy))
+ (native-inputs (list python-scipy))
+ (home-page "http://github.com/jakevdp/supersmoother")
+ (synopsis "Python implementation of Friedman's Supersmoother")
+ (description
+ "This package provides an efficient implementation of
+@url{https://www.slac.stanford.edu/pubs/slacpubs/3250/slac-pub-3477.pdf,
+Friedman's SuperSmoother} based in Python. It makes use of numpy for fast
+numerical computation.")
+ (license license:bsd-2)))
+
(define-public python-opt-einsum
(package
(name "python-opt-einsum")
@@ -2613,7 +3644,8 @@ NeuroML2 models.")
" and not test_pr_level_patient"
" and not test_pr_level_series"
" and not test_scp_cancelled"))))
- (native-inputs (list python-pyfakefs python-pytest))
+ (native-inputs (list python-pyfakefs python-pytest python-setuptools
+ python-wheel))
(propagated-inputs (list python-pydicom python-sqlalchemy))
(home-page "https://github.com/pydicom/pynetdicom")
(synopsis "Python implementation of the DICOM networking protocol")
@@ -2649,6 +3681,45 @@ visualization and image processing involving N-dimensional raster data) into
and from numpy arrays.")
(license license:expat)))
+(define-public python-pynsee
+ (package
+ (name "python-pynsee")
+ (version "0.1.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pynsee" version))
+ (sha256
+ (base32 "1w084ynwdd9f4wpcnakqc0nxcbj9gr8vppv4rd258i3dp1qq4sw5"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:tests? #f)) ; XXX: Tests require network access.
+ (native-inputs
+ (list python-setuptools
+ python-wheel))
+ (propagated-inputs
+ (list python-appdirs
+ python-openpyxl
+ python-pandas
+ python-platformdirs
+ python-pyarrow
+ python-requests
+ python-shapely
+ python-tqdm
+ python-unidecode
+ python-urllib3
+ python-xlrd))
+ (home-page "https://pynsee.readthedocs.io")
+ (synopsis
+ "Tools to Easily Search and Download French Data From INSEE and IGN APIs")
+ (description
+ "This package provides tools to easily search and download French data
+from INSEE and IGN APIs. This data includes more than 150 000 macroeconomic
+series, a dozen datasets of local french data, numerous sources available on
+@url{insee.fr}, geographical limits of administrative areas taken from IGN as
+well as key metadata and SIRENE database containing data on all French
+compagnies.")
+ (license license:expat)))
+
(define-public python-libneuroml
(package
(name "python-libneuroml")
@@ -2664,7 +3735,12 @@ and from numpy arrays.")
"0mrm4rd6x1sm6hkvhk20mkqp9q53sl3lbvq6hqzyymkw1iqq6bhy"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-lxml python-six))
- (native-inputs (list python-pytest python-numpy python-tables))
+ (native-inputs
+ (list python-pytest
+ python-numpy
+ python-setuptools
+ python-tables
+ python-wheel))
(home-page "https://libneuroml.readthedocs.org/en/latest/")
(synopsis
"Python library for working with NeuroML descriptions of neuronal models")