diff options
Diffstat (limited to 'gnu/packages/python-science.scm')
-rw-r--r-- | gnu/packages/python-science.scm | 387 |
1 files changed, 218 insertions, 169 deletions
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 6bc726fc83..855fe9a72c 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2022 Malte Frank Gerdes <malte.f.gerdes@gmail.com> ;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com> +;;; Copyright © 2022 Wiktor Żelazny <wzelazny@vurv.cz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -153,63 +154,6 @@ atlas_libs = openblas~%" #$(this-package-input "openblas")))))) (description "The SciPy library is one of the core packages that make up the SciPy stack. It provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization.") - (properties `((python2-variant . ,(delay python2-scipy)))) - (license license:bsd-3))) - -;; Version 1.2.2 is the last version to support Python 2 -(define-public python2-scipy - (package - (inherit (package-with-python2 - (strip-python2-variant python-scipy))) - (version "1.2.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "scipy" version)) - (sha256 - (base32 - "1cgvgin8fvckv96hjh3ikmwkra5rif51bdb75ifzf7xbil5iwcx4")))) - (native-inputs - (list python2-cython - python2-pytest - python2-sphinx - python2-numpydoc - gfortran-7 - gcc-7 - perl - which)))) - -(define-public python2-weave - (package - (name "python2-weave") - (version "0.16.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "weave" version)) - (sha256 - (base32 "0jnm3584mfichgwgrd1gk5i42ll9c08nkw9716n947n4338f6ghs")))) - (build-system python-build-system) - (arguments - `(#:python ,python-2 - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "nosetests" "-v" - "--exclude" - "test_(user|incorrect_ownership|char_fail|obj_fail)")))))) - (propagated-inputs - (list python2-numpy)) - (native-inputs - (list python2-nose)) - (home-page "https://www.scipy.org/") - (synopsis "Tools for including C/C++ code within Python code") - (description "Weave is the stand-alone version of the obsolete Scipy -submodule @code{scipy.weave}. It is Python 2.x only, and is provided for -users that need new versions of Scipy but have existing code that still -depends on @code{scipy.weave}. For new code, users are recommended to use -Cython.") (license license:bsd-3))) (define-public python-scikit-fuzzy @@ -488,106 +432,8 @@ 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.") - (properties `((python2-variant . ,(delay python2-pandas)))) (license license:bsd-3))) -;; Pandas 0.24.x are the last versions that support Python 2. -(define-public python2-pandas - (let ((pandas (package-with-python2 - (strip-python2-variant python-pandas)))) - (package - (inherit pandas) - (version "0.24.2") - (source (origin - (method url-fetch) - (uri (pypi-uri "pandas" version)) - (sha256 - (base32 - "18imlm8xbhcbwy4wa957a1fkamrcb0z988z006jpfda3ki09z4ag")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Adjust for renamed error message in Python 2.7.17. Taken - ;; from <https://github.com/pandas-dev/pandas/pull/29294>. - (substitute* "pandas/io/parsers.py" - (("if 'NULL byte' in msg:") - "if 'NULL byte' in msg or 'line contains NUL' in msg:")))))) - (arguments - `(#:modules ((guix build utils) - (guix build python-build-system) - (ice-9 ftw) - (srfi srfi-26)) - #:python ,python-2 - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-which - (lambda* (#:key inputs #:allow-other-keys) - (let ((which (assoc-ref inputs "which"))) - (substitute* "pandas/io/clipboard/__init__.py" - (("^CHECK_CMD = .*") - (string-append "CHECK_CMD = \"" which "\"\n")))))) - (replace 'check - (lambda _ - (let ((build-directory - (string-append - (getcwd) "/build/" - (car (scandir "build" - (cut string-prefix? "lib." <>)))))) - ;; Disable the "strict data files" option which causes - ;; the build to error out if required data files are - ;; not available (as is the case with PyPI archives). - (substitute* "setup.cfg" - (("addopts = --strict-data-files") "addopts = ")) - (with-directory-excursion build-directory - ;; Delete tests that require "moto" which is not yet - ;; in Guix. - (for-each delete-file - '("pandas/tests/io/conftest.py" - "pandas/tests/io/json/test_compression.py" - "pandas/tests/io/parser/test_network.py" - "pandas/tests/io/test_parquet.py")) - (invoke "pytest" "-vv" "pandas" "--skip-slow" - "--skip-network" "-k" - ;; XXX: Due to the deleted tests above. - "not test_read_s3_jsonl")))))))) - (propagated-inputs - (list python2-numpy python2-openpyxl python2-pytz python2-dateutil - python2-xlrd)) - (inputs - (list which)) - (native-inputs - (list python2-cython - python2-beautifulsoup4 - python2-lxml - python2-html5lib - python2-nose - python2-pytest - python2-pytest-mock))))) - -(define-public python2-pyflow - (package - (name "python2-pyflow") - (version "1.1.20") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/Illumina/pyflow/releases/download/v" - version "/pyflow-" version ".tar.gz")) - (sha256 - (base32 - "1bvfvviw58cndyn862qnv9nj3d9cd3a0dm4vc4sd9vwq8a6z1riv")))) - (build-system python-build-system) - (arguments - `(#:tests? #f ; There is no test suite. - ;; There is no official Python 3-compatible version and upstream is - ;; dead. See https://github.com/Illumina/pyflow/issues/20. - #:python ,python-2)) - (home-page "https://illumina.github.io/pyflow/") - (synopsis "Tool to manage tasks in a task dependency graph") - (description "This package is a Python module to manage tasks in the -context of a task dependency graph. It has some similarities to make.") - (license license:bsd-2))) - (define-public python-pythran (package (name "python-pythran") @@ -1015,7 +861,7 @@ and more (define-public python-distributed (package (name "python-distributed") - (version "2021.11.2") + (version "2022.05.2") (source (origin ;; The test files are not included in the archive on pypi @@ -1026,7 +872,7 @@ and more (file-name (git-file-name name version)) (sha256 (base32 - "1p20cbyabzl7rs8y3ydzszsskh4kw088m252ghgairhs0p2f95hl")) + "009jrlk7kmazrd3nkl217cl3x5ddg7kw9mqdgq1z9knv5h1rm8qv")) ;; Delete bundled copy of python-versioneer. (snippet '(delete-file "versioneer.py")))) (build-system python-build-system) @@ -1052,23 +898,139 @@ and more (("\"dask-worker\"") (format #false "\"~a/bin/dask-worker\"" (assoc-ref outputs "out")))))) + ;; ERROR: distributed==2022.5.2 + ;; ContextualVersionConflict (locket 0.2.0 + ;; (/gnu/store/...-python-locket-0.2.0/lib/python3.9/site-packages), + ;; Requirement.parse('locket>=1.0.0'), {'distributed'}) + (delete 'sanity-check) (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? (setenv "DISABLE_IPV6" "1") - (invoke "pytest" "-vv" "distributed" - "-m" "not slow and not gpu and not ipython and not avoid_ci" + ;; The integration tests are all problematic to some + ;; degree. They either require network access or some + ;; other setup. We only run the tests in + ;; distributed/tests. + (for-each (lambda (dir) + (delete-file-recursively + (string-append "distributed/" dir "/tests"))) + (list "cli" "comm" "dashboard" "deploy" "diagnostics" + "http" "http/scheduler" "http/worker" + "protocol" "shuffle")) + (invoke "python" "-m" "pytest" "-vv" "distributed" + "-m" + (string-append "not slow" + " and not flaky" + " and not gpu" + " and not ipython" + " and not avoid_ci") "-k" - ;; TODO: These tests fail for unknown reasons: (string-append - ;; TimeoutExpired - "not test_text" - ;; AssertionError - " and not test_version_option" - ;; "The 'distributed' distribution was not found" - " and not test_register_backend_entrypoint" - ;; "AttributeError: module 'distributed.dashboard' has no attribute 'scheduler'" - " and not test_get_client_functions_spawn_clusters")))))))) + ;; These fail because they require network access, + ;; specifically access to 8.8.8.8. + "not " + (string-join + (list + "TestClientSecurityLoader.test_security_loader" + "test_BatchedSend" + "test_allowed_failures_config" + "test_async_context_manager" + "test_async_with" + "test_client_repr_closed_sync" + "test_close_closed" + "test_close_fast_without_active_handlers" + "test_close_grace_period_for_handlers" + "test_close_loop_sync" + "test_close_properly" + "test_close_twice" + "test_compression" + "test_connection_pool" + "test_connection_pool_close_while_connecting" + "test_connection_pool_detects_remote_close" + "test_connection_pool_outside_cancellation" + "test_connection_pool_remove" + "test_connection_pool_respects_limit" + "test_connection_pool_tls" + "test_counters" + "test_dashboard_host" + "test_dashboard_link_cluster" + "test_dashboard_link_inproc" + "test_deserialize_error" + "test_dont_override_default_get" + "test_errors" + "test_fail_to_pickle_target_2" + "test_file_descriptors_dont_leak" + "test_finished" + "test_get_client_functions_spawn_clusters" + "test_host_uses_scheduler_protocol" + "test_identity_inproc" + "test_identity_tcp" + "test_large_packets_inproc" + "test_locked_comm_drop_in_replacement" + "test_locked_comm_intercept_read" + "test_locked_comm_intercept_write" + "test_multiple_listeners" + "test_no_dangling_asyncio_tasks" + "test_plugin_exception" + "test_plugin_internal_exception" + "test_plugin_multiple_exceptions" + "test_ports" + "test_preload_import_time" + "test_queue_in_task" + "test_quiet_client_close" + "test_rebalance_sync" + "test_repr_localcluster" + "test_require_encryption" + "test_rpc_default" + "test_rpc_inproc" + "test_rpc_message_lifetime_default" + "test_rpc_message_lifetime_inproc" + "test_rpc_message_lifetime_tcp" + "test_rpc_serialization" + "test_rpc_tcp" + "test_rpc_tls" + "test_rpc_with_many_connections_inproc" + "test_rpc_with_many_connections_tcp" + "test_scheduler_file" + "test_security_dict_input_no_security" + "test_security_loader" + "test_security_loader_ignored_if_explicit_security_provided" + "test_security_loader_ignored_if_returns_none" + "test_send_after_stream_start" + "test_send_before_close" + "test_send_before_start" + "test_send_recv_args" + "test_send_recv_cancelled" + "test_sending_traffic_jam" + "test_serializers" + "test_server" + "test_server_comms_mark_active_handlers" + "test_shutdown" + "test_shutdown_localcluster" + "test_teardown_failure_doesnt_crash_scheduler" + "test_threadpoolworkers_pick_correct_ioloop" + "test_tls_listen_connect" + "test_tls_temporary_credentials_functional" + "test_variable_in_task" + "test_worker_preload_text" + "test_worker_uses_same_host_as_nanny") + " and not ") + + ;; These fail because it doesn't find dask[distributed] + " and not test_quiet_close_process" + + ;; This one fails because of a silly assert failure: + ;; '2022.05.2' == '2022.5.2' + " and not test_version" + " and not test_git_revision" + + ;; Recursion stack failure. No idea what they + ;; expected to happen. + " and not test_stack_overflow" + + ;; These tests are rather flaky + " and not test_quiet_quit_when_cluster_leaves" + " and not multiple_clients_restart")))))))) (propagated-inputs (list python-click python-cloudpickle @@ -1082,9 +1044,13 @@ and more python-tblib python-toolz python-tornado-6 + python-urllib3 python-zict)) (native-inputs - (list python-pytest python-versioneer)) + (list python-pytest + python-pytest-timeout + python-flaky + python-versioneer)) (home-page "https://distributed.dask.org") (synopsis "Distributed scheduler for Dask") (description "Dask.distributed is a lightweight library for distributed @@ -1291,3 +1257,86 @@ build applications with traitlets in combination with the scipy stack.") (description "This package is an implementation of the Promises/A+ specification and test suite in Python.") (license license:expat))) + +(define-public python-climin + (package + (name "python-climin") + (version "0.1a1") + (source (origin + (method url-fetch) + (uri (pypi-uri "climin" version)) + (sha256 + (base32 + "1wpjisd5zzi5yvjff02hnxn84822k8sdxvvd33lil2x79wdb36rv")))) + (build-system python-build-system) + (native-inputs (list python-nose)) + (propagated-inputs (list python-numpydoc python-numpy python-scipy)) + (home-page "https://github.com/BRML/climin") + (synopsis "Optimization for machine learning") + (description + "@command{climin} is a Python package for optimization, +heavily biased to machine learning scenarios. It works on top of +@command{numpy} and (partially) @command{gnumpy}.") + (license license:bsd-3))) + +(define-public python-paramz + (package + (name "python-paramz") + (version "0.9.5") + (source (origin + (method url-fetch) + (uri (pypi-uri "paramz" version)) + (sha256 + (base32 + "16hbh97kj6b1c2gw22rqnr3w3nqkszh9gj8vgx738gq81wf225q9")))) + (build-system python-build-system) + (propagated-inputs (list python-decorator python-numpy python-scipy + python-six)) + (home-page "https://github.com/sods/paramz") + (synopsis "The Parameterization Framework") + (description + "@command{paramz} is a lightweight parameterization framework +for parameterized model creation and handling. Its features include: + +@itemize + @item Easy model creation with parameters. + @item Fast optimized access of parameters for optimization routines. + @item Memory efficient storage of parameters (only one copy in memory). + @item Renaming of parameters. + @item Intuitive printing of models and parameters. + @item Gradient saving directly inside parameters. + @item Gradient checking of parameters. + @item Optimization of parameters. + @item Jupyter notebook integration. + @item Efficient storage of models, for reloading. + @item Efficient caching. +@end itemize") + (license license:bsd-3))) + +(define-public python-gpy + (package + (name "python-gpy") + (version "1.10.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "GPy" version)) + (sha256 + (base32 + "1yx65ajrmqp02ykclhlb0n8s3bx5r0xj075swwwigiqaippr7dx2")))) + (build-system python-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)) + (home-page "https://sheffieldml.github.io/GPy/") + (synopsis "The Gaussian Process Toolbox") + (description + "@command{GPy} is a Gaussian Process (GP) framework written in +Python, from the Sheffield machine learning group. GPy implements a range of +machine learning algorithms based on GPs.") + (license license:bsd-3))) |