spack/var/spack/repos/builtin/packages/py-dask/package.py
Dom Heinzeller b808338792
py-uxarray: new package plus dependencies (#47573)
* Add py-param@2.1.1
* Add py-panel@1.5.2
* Add py-bokeh@3.5.2
* New package py-datashader
* New package py-geoviews
* New package py-holoviews
* WIP: new package py-uxarray
* New package py-antimeridian
* New package py-dask-expr
* New package py-spatialpandas
* New package py-hvplot
* Add dependency on py-dask-expr for 'py-dask@2024.3: +dataframe'
* Added all dependencies for py-uxarray; still having problems with py-dask +dataframe / py-dask-expr
* Fix style errors in many packages
* Clean up comments and fix style errors in var/spack/repos/builtin/packages/py-dask-expr/package.py
* In var/spack/repos/builtin/packages/py-dask/package.py: since 2023.8, the dataframe variant requires the array variant
* Fix style errors in py-uxarray package
2024-12-05 18:20:55 -08:00

147 lines
8.0 KiB
Python

# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class PyDask(PythonPackage):
"""Dask is a flexible parallel computing library for analytics."""
homepage = "https://github.com/dask/dask/"
pypi = "dask/dask-1.1.0.tar.gz"
maintainers("skosukhin")
license("BSD-3-Clause")
version("2024.7.1", sha256="dbaef2d50efee841a9d981a218cfeb50392fc9a95e0403b6d680450e4f50d531")
version("2023.4.1", sha256="9dc72ebb509f58f3fe518c12dd5a488c67123fdd66ccb0b968b34fd11e512153")
version("2022.10.2", sha256="42cb43f601709575fa46ce09e74bea83fdd464187024f56954e09d9b428ceaab")
version("2021.6.2", sha256="8588fcd1a42224b7cfcd2ebc8ad616734abb6b1a4517efd52d89c7dd66eb91f8")
version("2021.4.1", sha256="195e4eeb154222ea7a1c368119b5f321ee4ec9d78531471fe0145a527f744aa8")
version("2020.12.0", sha256="43e745afd4b464e6c0113131e430a16dce6ac42460b06e24d799093d098f7ab0")
variant("array", default=True, description="Install requirements for dask.array")
variant(
"bag", default=True, when="@:2021.3.0", description="Install requirements for dask.bag"
)
variant("dataframe", default=True, description="Install requirements for dask.dataframe")
variant("distributed", default=True, description="Install requirements for dask.distributed")
variant("diagnostics", default=False, description="Install requirements for dask.diagnostics")
variant(
"delayed",
default=True,
when="@:2021.3.0",
description="Install requirements for dask.delayed (dask.imperative)",
)
conflicts("~array", when="@2023.8: +dataframe", msg="From 2023.8, +dataframe requires +array")
depends_on("python@3.8:", type=("build", "run"), when="@2022.10.2:")
depends_on("py-setuptools", type="build")
depends_on("py-setuptools@62.6:", type="build", when="@2023.4.1:")
depends_on("py-versioneer@0.28+toml", type="build", when="@2023.4.1:")
# Common requirements
depends_on("py-packaging@20:", type="build", when="@2022.10.2:")
depends_on("py-pyyaml", type=("build", "run"))
depends_on("py-pyyaml@5.3.1:", type=("build", "run"), when="@2022.10.2:")
depends_on("py-cloudpickle@1.1.1:", type=("build", "run"), when="@2021.3.1:")
depends_on("py-cloudpickle@1.5.0:", type=("build", "run"), when="@2023.4.1:")
depends_on("py-fsspec@0.6.0:", type=("build", "run"), when="@2021.3.1:")
depends_on("py-fsspec@2021.09.0:", type=("build", "run"), when="@2023.4.1:")
depends_on("py-toolz@0.8.2:", type=("build", "run"), when="@2021.3.1:")
depends_on("py-toolz@0.10.0:", type=("build", "run"), when="@2023.4.1:")
depends_on("py-partd@0.3.10:", type=("build", "run"), when="@2021.3.1:")
depends_on("py-partd@1.2.0:", type=("build", "run"), when="@2023.4.0:")
depends_on("py-partd@1.4.0:", type=("build", "run"), when="@2024.7.1:")
depends_on("py-click@7.0:", type=("build", "run"), when="@2022.10.2:")
depends_on("py-click@8.0:", type=("build", "run"), when="@2023.4.1:")
depends_on("py-importlib-metadata@4.13.0:", type=("build", "run"), when="@2023.4.0:")
# Requirements for dask.array
depends_on("py-numpy@1.15.1:", type=("build", "run"), when="@2020.12.0: +array")
depends_on("py-numpy@1.16.0:", type=("build", "run"), when="@2021.3.1: +array")
depends_on("py-numpy@1.18.0:", type=("build", "run"), when="@2022.10.2: +array")
depends_on("py-numpy@1.21.0:", type=("build", "run"), when="@2023.4.0: +array")
# https://github.com/dask/dask/issues/11066
depends_on("py-numpy@:1", when="@:2024.5.0+array", type=("build", "run"))
# The dependency on py-toolz is non-optional starting version 2021.3.1
depends_on("py-toolz@0.8.2:", type=("build", "run"), when="@:2021.3.0 +array")
# Requirements for dask.bag
depends_on("py-cloudpickle@0.2.1:", type=("build", "run"), when="@0.8.2: +bag")
# The dependency on py-cloudpickle is non-optional starting version 2021.3.1
depends_on("py-cloudpickle@0.2.2:", type=("build", "run"), when="@2.13.0:2021.3.0 +bag")
# The dependency on py-fsspec is non-optional starting version 2021.3.1
depends_on("py-fsspec@0.6.0:", type=("build", "run"), when="@:2021.3.0 +bag")
# The dependency on py-toolz is non-optional starting version 2021.3.1
depends_on("py-toolz@0.8.2:", type=("build", "run"), when="@:2021.3.0 +bag")
# The dependency on py-partd is non-optional starting version 2021.3.1
depends_on("py-partd@0.3.10:", type=("build", "run"), when="@:2021.3.0 +bag")
# Requirements for dask.dataframe
depends_on("py-numpy@1.15.1:", type=("build", "run"), when="@2020.12.0: +dataframe")
depends_on("py-numpy@1.16.0:", type=("build", "run"), when="@2021.3.1: +dataframe")
depends_on("py-numpy@1.18.0:", type=("build", "run"), when="@2022.10.2: +dataframe")
depends_on("py-numpy@1.21.0:", type=("build", "run"), when="@2023.4.0: +dataframe")
# https://github.com/dask/dask/issues/11066
depends_on("py-numpy@:1", when="@:2024.5.0+dataframe", type=("build", "run"))
depends_on("py-pandas@0.25.0:", type=("build", "run"), when="@2020.12.0: +dataframe")
depends_on("py-pandas@1.0:", type=("build", "run"), when="@2022.10.2: +dataframe")
depends_on("py-pandas@1.3:", type=("build", "run"), when="@2023.4.0: +dataframe")
depends_on("py-pandas@2.0:", type=("build", "run"), when="@2024.7.1: +dataframe")
# The dependency on py-toolz is non-optional starting version 2021.3.1
depends_on("py-toolz@0.8.2:", type=("build", "run"), when="@:2021.3.0 +dataframe")
# The dependency on py-partd is non-optional starting version 2021.3.1
depends_on("py-partd@0.3.10:", type=("build", "run"), when="@:2021.3.0 +dataframe")
# The dependency on py-fsspec is non-optional starting version 2021.3.1
depends_on("py-fsspec@0.6.0:", type=("build", "run"), when="@:2021.3.0 +dataframe")
# Starting with version 2024.3.0, dataframe requires a separate package py-dask-expr
depends_on("py-dask-expr", type=("build", "run"), when="@2024.3: +dataframe")
depends_on("py-dask-expr@1.1.9", type=("build", "run"), when="@2024.7.1 +dataframe")
# Requirements for dask.distributed
depends_on(
"py-distributed@2020.12.0:2021.8.0", type=("build", "run"), when="@:2021.6.1 +distributed"
)
depends_on("py-distributed@2021.6.2", type=("build", "run"), when="@2021.6.2 +distributed")
depends_on("py-distributed@2022.10.2", type=("build", "run"), when="@2022.10.2 +distributed")
depends_on("py-distributed@2023.4.1", type=("build", "run"), when="@2023.4.1 +distributed")
depends_on("py-distributed@2024.7.1", type=("build", "run"), when="@2024.7.1 +distributed")
# Requirements for dask.diagnostics
depends_on("py-bokeh@1.0.0:1,2.0.1:", type=("build", "run"), when="+diagnostics")
depends_on("py-bokeh@2.4.2:2", type=("build", "run"), when="@2022.10.2:2023.3 +diagnostics")
depends_on("py-bokeh@2.4.2:", type=("build", "run"), when="@2023.4.0: +diagnostics")
depends_on("py-jinja2", type=("build", "run"), when="@2022.10.2: +diagnostics")
depends_on("py-jinja2@2.10.3:", type=("build", "run"), when="@2023.4.0: +diagnostics")
# Requirements for dask.delayed
# The dependency on py-cloudpickle is non-optional starting version 2021.3.1
depends_on("py-cloudpickle@0.2.2:", type=("build", "run"), when="@:2021.3.0 +delayed")
# The dependency on py-toolz is non-optional starting version 2021.3.1
depends_on("py-toolz@0.8.2:", type=("build", "run"), when="@:2021.3.0 +delayed")
@property
def import_modules(self):
modules = ["dask", "dask.bytes"]
if "+array" in self.spec:
modules.append("dask.array")
if "+bag" in self.spec:
modules.append("dask.bag")
if "+dataframe" in self.spec:
modules.extend(["dask.dataframe", "dask.dataframe.tseries", "dask.dataframe.io"])
if "+diagnostics" in self.spec:
modules.append("dask.diagnostics")
return modules