pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

py-dask: Update to 2025.5.1



Module Name:	pkgsrc-wip
Committed By:	Matthew Danielson <matthewd%fastmail.us@localhost>
Pushed By:	matthewd
Date:		Wed May 21 20:10:22 2025 -0700
Changeset:	e2f8d88625c4c8aa0ad8c28960b690ed0f099f17

Modified Files:
	py-dask/Makefile
	py-dask/PLIST
	py-dask/distinfo
	py-dask_expr/Makefile
	py-dask_expr/PLIST
	py-dask_expr/distinfo

Log Message:
py-dask: Update to 2025.5.1

2025.5.1
Highlights

Fixed Dask Array slicing regression introduced in the 2025.5.0 release. See dask#11947 from Florian Jetter for more details.

2025.5.0
Highlights

    Fixed Array setitem when both the array and the indexer have unknown shape. See dask#11753 from Tom Augspurger for more details.

    Fixed several delayed graph handling issues introduced in the 2025.4.0 release. See dask#11917, dask#11907, and distributed#9071 from Florian Jetter for more details.

2025.4.1
Highlights

This release contains several graph optimization fixes for issues introduced in the 2025.4.0 release.

See dask#11906, dask#11898, dask#11903, and dask#11904 by Florian Jetter for more details.

2025.4.0
Highlights

    When computing multiple Dask-Expr backed collections like DataFrames, they are now optimized together instead of individually.

    Graph materialization and low level optimization is now being performed on the scheduler of a distributed cluster (if available).

    New kwarg force for DataFrame.shuffle which signals the optimizer to not drop the shuffle during optimization.

    Collections that are passed to Dask methods as arguments are now properly optimized. If multiple collections are passed as arguments they will be optimized together. Collections passed this way are prohibited from being being reused, i.e. if the collection is used again in another function call it will be computed again. This pattern is used to avoid pipeline breakers which typically drive memory usage. Avoiding those should reduce memory pressure on the cluster but can cause runtime regressions.

    (Special case of above point) Collections passed to Delayed objects are now optimized automatically.

Breaking changes

    Support for custom low level optimizers removed.

    Top level dask.optimize will now always trigger graph materialization. Previously this was not always the case. This also causes any low level HLG annotations to be dropped.

    DataFrame and Array compute results are now always concatenated on the cluster. Previously, the behavior was dependent on the API used to call compute (dask.compute, DaskCollection.compute, or Client.compute).

    dask.base.collections_to_dsk has been renamed to collections_to_expr and no longer returns a HighLevelGraph or dict object but instead guarantees an dask._expr.Expr object. Further, it no longer performs low level optimization immediately but instead delays until the Expr instance is materialized, i.e. the returned object is no longer a mapping such that converting it to dict or iterating over it is not possible any more.

2025.3.0
Highlights
Automatically adjust chunksizes in xarray.apply_ufunc

apply_ufunc requires the core dimension to have chunksize=-1. The underlying rechunking operation will automatically adjust the chunksize of the core dimension but keep the other dimensions the same. This can cause exploding chunksizes under the hood.

This release adds an intermediate step that resizes the non-core dimensions by the same factor that the core dimension will increase to keep the maximum chunksize under control. This behavior is automatically enabled when allow_rechunk=True is set.

import xarray as xr
import dask.array as da

arr = xr.DataArray(
    da.random.random((1, 750, 45910), chunks=(1, "auto", -1)),
    dims=["band", "y", "x"],
)

result = arr.interp(
    y=arr.coords["y"],
    method="linear",
)

Previously

Individual chunks are exploding to 25 GiB, likely causing out of memory errors.
Individual chunks are exploding to 25 GiB, likely causing out of memory errors.

Now

Dask will now automatically split individual chunks into chunks that will have the same chunksize minus a small tolerance.
Individual chunks are now roughly the same size

2025.2.0
Highlights

This release includes a critical fix that fixes a deadlock that can arise when seceded task are rescheduled, or cancelled and resubmitted, e.g. due to a worker being lost.

See distributed#8991 by Hendrik Makait for more details.

2025.1.0
Highlights
Legacy Dask DataFrame Implementation removed

This release drops the legacy Dask DataFrame implementation. The API with query planning is now the only available Dask DataFrame implementation.

This enforces the deprecation of the configuration:

dask.config.set({"dataframe.query-planning": False})

Dask-Expr was merged into the dask package as well as the dask/dask repository. It is no longer necessary to install dask-expr separately.
Reducing Memory Pressure for Xarray Workloads

Dask introduced a mechanism that is called root task queuing in 2022. This mechanism allows Dask to detect tasks that are reading data from storage and schedule them defensively to avoid memory pressure on the cluster through overproduction of these tasks. The underlying mechanism was very fragile and failed for specific types of computations like opening multiple zarr stores or loading a large number of netcdf files.

The recent changes in Dask’s task graph representation allow for more robust detection of root tasks. This change makes the detection mechanism independent of the workload running and is especially beneficial for Xarray workloads.

This results in significantly more memory stability and a reduced memory footprint for workloads where root task detection was previously failing and makes the expected memory profile deterministic and independent of the topology of the task graph.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=e2f8d88625c4c8aa0ad8c28960b690ed0f099f17

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 py-dask/Makefile      |   7 +-
 py-dask/PLIST         | 342 ++++++++++++++++++++++++++++++++++++++++++++++----
 py-dask/distinfo      |   6 +-
 py-dask_expr/Makefile |   2 +-
 py-dask_expr/PLIST    | 153 ----------------------
 py-dask_expr/distinfo |   6 +-
 6 files changed, 333 insertions(+), 183 deletions(-)

diffs:
diff --git a/py-dask/Makefile b/py-dask/Makefile
index f02fc37fc4..c6a6efe704 100644
--- a/py-dask/Makefile
+++ b/py-dask/Makefile
@@ -1,6 +1,6 @@
 # $NetBSD$
 
-DISTNAME=	dask-2024.12.1
+DISTNAME=	dask-2025.5.1
 PKGNAME=	${PYPKGPREFIX}-${DISTNAME}
 CATEGORIES=	math python
 GITHUB_PROJECT=	dask
@@ -13,6 +13,7 @@ COMMENT=	Flexible parallel computing library for analytics
 LICENSE=	modified-bsd
 
 .include "../../mk/bsd.prefs.mk"
+.include "../../lang/python/pyversion.mk"
 
 TOOL_DEPENDS+=	${PYPKGPREFIX}-wheel>=0:../../devel/py-wheel
 TOOL_DEPENDS+=	${PYPKGPREFIX}-versioneer>=0.28:../../devel/py-versioneer
@@ -39,9 +40,11 @@ DEPENDS+=	${PYPKGPREFIX}-jinja2>=2.10.3:../../textproc/py-jinja2
 DEPENDS+=	${PYPKGPREFIX}-yaml>=5.3.1:../../textproc/py-yaml
 DEPENDS+=	${PYPKGPREFIX}-apache-arrow>=14.0.1:../../wip/py-apache-arrow
 DEPENDS+=	${PYPKGPREFIX}-bokeh>=2.4.2:../../wip/py-bokeh
+.if  ${PYTHON_VERSION} < 313
 DEPENDS+=	${PYPKGPREFIX}-cityhash-[0-9]*:../../wip/py-cityhash
+.endif
 DEPENDS+=	${PYPKGPREFIX}-cloudpickle>=1.5.0:../../converters/py-cloudpickle
-DEPENDS+=	${PYPKGPREFIX}-dask_expr>=1.1.17:../../wip/py-dask_expr
+#DEPENDS+=	${PYPKGPREFIX}-dask_expr>=1.1.17:../../wip/py-dask_expr
 DEPENDS+=	${PYPKGPREFIX}-distributed>=${GITHUB_TAG}:../../wip/py-distributed
 DEPENDS+=	${PYPKGPREFIX}-fastavro>=1.1.0:../../wip/py-fastavro
 DEPENDS+=	${PYPKGPREFIX}-partd>=1.2.0:../../wip/py-partd
diff --git a/py-dask/PLIST b/py-dask/PLIST
index 209d1d57b0..f15f66a888 100644
--- a/py-dask/PLIST
+++ b/py-dask/PLIST
@@ -13,9 +13,18 @@ ${PYSITELIB}/dask/__init__.pyo
 ${PYSITELIB}/dask/__main__.py
 ${PYSITELIB}/dask/__main__.pyc
 ${PYSITELIB}/dask/__main__.pyo
+${PYSITELIB}/dask/_collections.py
+${PYSITELIB}/dask/_collections.pyc
+${PYSITELIB}/dask/_collections.pyo
 ${PYSITELIB}/dask/_compatibility.py
 ${PYSITELIB}/dask/_compatibility.pyc
 ${PYSITELIB}/dask/_compatibility.pyo
+${PYSITELIB}/dask/_dispatch.py
+${PYSITELIB}/dask/_dispatch.pyc
+${PYSITELIB}/dask/_dispatch.pyo
+${PYSITELIB}/dask/_expr.py
+${PYSITELIB}/dask/_expr.pyc
+${PYSITELIB}/dask/_expr.pyo
 ${PYSITELIB}/dask/_task_spec.py
 ${PYSITELIB}/dask/_task_spec.pyc
 ${PYSITELIB}/dask/_task_spec.pyo
@@ -26,9 +35,72 @@ ${PYSITELIB}/dask/array/NUMPY_LICENSE.txt
 ${PYSITELIB}/dask/array/__init__.py
 ${PYSITELIB}/dask/array/__init__.pyc
 ${PYSITELIB}/dask/array/__init__.pyo
+${PYSITELIB}/dask/array/_array_expr/__init__.py
+${PYSITELIB}/dask/array/_array_expr/__init__.pyc
+${PYSITELIB}/dask/array/_array_expr/__init__.pyo
+${PYSITELIB}/dask/array/_array_expr/_backends.py
+${PYSITELIB}/dask/array/_array_expr/_backends.pyc
+${PYSITELIB}/dask/array/_array_expr/_backends.pyo
+${PYSITELIB}/dask/array/_array_expr/_blockwise.py
+${PYSITELIB}/dask/array/_array_expr/_blockwise.pyc
+${PYSITELIB}/dask/array/_array_expr/_blockwise.pyo
+${PYSITELIB}/dask/array/_array_expr/_collection.py
+${PYSITELIB}/dask/array/_array_expr/_collection.pyc
+${PYSITELIB}/dask/array/_array_expr/_collection.pyo
+${PYSITELIB}/dask/array/_array_expr/_creation.py
+${PYSITELIB}/dask/array/_array_expr/_creation.pyc
+${PYSITELIB}/dask/array/_array_expr/_creation.pyo
+${PYSITELIB}/dask/array/_array_expr/_expr.py
+${PYSITELIB}/dask/array/_array_expr/_expr.pyc
+${PYSITELIB}/dask/array/_array_expr/_expr.pyo
+${PYSITELIB}/dask/array/_array_expr/_gufunc.py
+${PYSITELIB}/dask/array/_array_expr/_gufunc.pyc
+${PYSITELIB}/dask/array/_array_expr/_gufunc.pyo
+${PYSITELIB}/dask/array/_array_expr/_io.py
+${PYSITELIB}/dask/array/_array_expr/_io.pyc
+${PYSITELIB}/dask/array/_array_expr/_io.pyo
+${PYSITELIB}/dask/array/_array_expr/_map_blocks.py
+${PYSITELIB}/dask/array/_array_expr/_map_blocks.pyc
+${PYSITELIB}/dask/array/_array_expr/_map_blocks.pyo
+${PYSITELIB}/dask/array/_array_expr/_overlap.py
+${PYSITELIB}/dask/array/_array_expr/_overlap.pyc
+${PYSITELIB}/dask/array/_array_expr/_overlap.pyo
+${PYSITELIB}/dask/array/_array_expr/_rechunk.py
+${PYSITELIB}/dask/array/_array_expr/_rechunk.pyc
+${PYSITELIB}/dask/array/_array_expr/_rechunk.pyo
+${PYSITELIB}/dask/array/_array_expr/_reductions.py
+${PYSITELIB}/dask/array/_array_expr/_reductions.pyc
+${PYSITELIB}/dask/array/_array_expr/_reductions.pyo
+${PYSITELIB}/dask/array/_array_expr/_shuffle.py
+${PYSITELIB}/dask/array/_array_expr/_shuffle.pyc
+${PYSITELIB}/dask/array/_array_expr/_shuffle.pyo
+${PYSITELIB}/dask/array/_array_expr/_slicing.py
+${PYSITELIB}/dask/array/_array_expr/_slicing.pyc
+${PYSITELIB}/dask/array/_array_expr/_slicing.pyo
+${PYSITELIB}/dask/array/_array_expr/_ufunc.py
+${PYSITELIB}/dask/array/_array_expr/_ufunc.pyc
+${PYSITELIB}/dask/array/_array_expr/_ufunc.pyo
+${PYSITELIB}/dask/array/_array_expr/_utils.py
+${PYSITELIB}/dask/array/_array_expr/_utils.pyc
+${PYSITELIB}/dask/array/_array_expr/_utils.pyo
+${PYSITELIB}/dask/array/_array_expr/random.py
+${PYSITELIB}/dask/array/_array_expr/random.pyc
+${PYSITELIB}/dask/array/_array_expr/random.pyo
+${PYSITELIB}/dask/array/_array_expr/tests/__init__.py
+${PYSITELIB}/dask/array/_array_expr/tests/__init__.pyc
+${PYSITELIB}/dask/array/_array_expr/tests/__init__.pyo
+${PYSITELIB}/dask/array/_array_expr/tests/test_collection.py
+${PYSITELIB}/dask/array/_array_expr/tests/test_collection.pyc
+${PYSITELIB}/dask/array/_array_expr/tests/test_collection.pyo
+${PYSITELIB}/dask/array/_reductions_generic.py
+${PYSITELIB}/dask/array/_reductions_generic.pyc
+${PYSITELIB}/dask/array/_reductions_generic.pyo
 ${PYSITELIB}/dask/array/_shuffle.py
 ${PYSITELIB}/dask/array/_shuffle.pyc
 ${PYSITELIB}/dask/array/_shuffle.pyo
+${PYSITELIB}/dask/array/api.py
+${PYSITELIB}/dask/array/api.pyc
+${PYSITELIB}/dask/array/api.pyo
 ${PYSITELIB}/dask/array/backends.py
 ${PYSITELIB}/dask/array/backends.pyc
 ${PYSITELIB}/dask/array/backends.pyo
@@ -116,6 +188,9 @@ ${PYSITELIB}/dask/array/svg.pyo
 ${PYSITELIB}/dask/array/tests/__init__.py
 ${PYSITELIB}/dask/array/tests/__init__.pyc
 ${PYSITELIB}/dask/array/tests/__init__.pyo
+${PYSITELIB}/dask/array/tests/test_api.py
+${PYSITELIB}/dask/array/tests/test_api.pyc
+${PYSITELIB}/dask/array/tests/test_api.pyo
 ${PYSITELIB}/dask/array/tests/test_array_core.py
 ${PYSITELIB}/dask/array/tests/test_array_core.pyc
 ${PYSITELIB}/dask/array/tests/test_array_core.pyo
@@ -367,12 +442,12 @@ ${PYSITELIB}/dask/dataframe/_pyarrow.pyo
 ${PYSITELIB}/dask/dataframe/_pyarrow_compat.py
 ${PYSITELIB}/dask/dataframe/_pyarrow_compat.pyc
 ${PYSITELIB}/dask/dataframe/_pyarrow_compat.pyo
-${PYSITELIB}/dask/dataframe/_testing.py
-${PYSITELIB}/dask/dataframe/_testing.pyc
-${PYSITELIB}/dask/dataframe/_testing.pyo
 ${PYSITELIB}/dask/dataframe/accessor.py
 ${PYSITELIB}/dask/dataframe/accessor.pyc
 ${PYSITELIB}/dask/dataframe/accessor.pyo
+${PYSITELIB}/dask/dataframe/api.py
+${PYSITELIB}/dask/dataframe/api.pyc
+${PYSITELIB}/dask/dataframe/api.pyo
 ${PYSITELIB}/dask/dataframe/backends.py
 ${PYSITELIB}/dask/dataframe/backends.pyc
 ${PYSITELIB}/dask/dataframe/backends.pyo
@@ -382,6 +457,231 @@ ${PYSITELIB}/dask/dataframe/categorical.pyo
 ${PYSITELIB}/dask/dataframe/core.py
 ${PYSITELIB}/dask/dataframe/core.pyc
 ${PYSITELIB}/dask/dataframe/core.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/__init__.py
+${PYSITELIB}/dask/dataframe/dask_expr/__init__.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/__init__.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_accessor.py
+${PYSITELIB}/dask/dataframe/dask_expr/_accessor.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_accessor.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_backends.py
+${PYSITELIB}/dask/dataframe/dask_expr/_backends.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_backends.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_categorical.py
+${PYSITELIB}/dask/dataframe/dask_expr/_categorical.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_categorical.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_collection.py
+${PYSITELIB}/dask/dataframe/dask_expr/_collection.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_collection.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_concat.py
+${PYSITELIB}/dask/dataframe/dask_expr/_concat.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_concat.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_cumulative.py
+${PYSITELIB}/dask/dataframe/dask_expr/_cumulative.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_cumulative.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_datetime.py
+${PYSITELIB}/dask/dataframe/dask_expr/_datetime.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_datetime.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_describe.py
+${PYSITELIB}/dask/dataframe/dask_expr/_describe.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_describe.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_dummies.py
+${PYSITELIB}/dask/dataframe/dask_expr/_dummies.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_dummies.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_expr.py
+${PYSITELIB}/dask/dataframe/dask_expr/_expr.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_expr.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_groupby.py
+${PYSITELIB}/dask/dataframe/dask_expr/_groupby.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_groupby.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_indexing.py
+${PYSITELIB}/dask/dataframe/dask_expr/_indexing.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_indexing.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_interchange.py
+${PYSITELIB}/dask/dataframe/dask_expr/_interchange.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_interchange.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_merge.py
+${PYSITELIB}/dask/dataframe/dask_expr/_merge.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_merge.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_merge_asof.py
+${PYSITELIB}/dask/dataframe/dask_expr/_merge_asof.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_merge_asof.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_quantile.py
+${PYSITELIB}/dask/dataframe/dask_expr/_quantile.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_quantile.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_quantiles.py
+${PYSITELIB}/dask/dataframe/dask_expr/_quantiles.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_quantiles.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_reductions.py
+${PYSITELIB}/dask/dataframe/dask_expr/_reductions.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_reductions.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_repartition.py
+${PYSITELIB}/dask/dataframe/dask_expr/_repartition.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_repartition.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_rolling.py
+${PYSITELIB}/dask/dataframe/dask_expr/_rolling.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_rolling.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_shuffle.py
+${PYSITELIB}/dask/dataframe/dask_expr/_shuffle.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_shuffle.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_str_accessor.py
+${PYSITELIB}/dask/dataframe/dask_expr/_str_accessor.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_str_accessor.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_util.py
+${PYSITELIB}/dask/dataframe/dask_expr/_util.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_util.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/_version.py
+${PYSITELIB}/dask/dataframe/dask_expr/_version.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/_version.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/datasets.py
+${PYSITELIB}/dask/dataframe/dask_expr/datasets.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/datasets.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/__init__.py
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/__init__.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/__init__.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_analyze.py
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_analyze.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_analyze.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_analyze_plugin.py
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_analyze_plugin.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_analyze_plugin.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_explain.py
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_explain.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/diagnostics/_explain.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/__init__.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/__init__.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/__init__.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/_delayed.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/_delayed.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/_delayed.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/bag.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/bag.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/bag.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/io.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/io.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/io.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/parquet.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/parquet.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/parquet.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/records.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/records.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/records.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/__init__.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/__init__.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/__init__.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_delayed.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_delayed.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_delayed.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_distributed.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_distributed.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_distributed.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_from_pandas.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_from_pandas.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_from_pandas.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_io.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_io.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_io.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_parquet.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_parquet.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_parquet.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_sql.py
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_sql.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/io/tests/test_sql.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/__init__.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/__init__.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/__init__.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/_util.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/_util.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/_util.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_align_partitions.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_align_partitions.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_align_partitions.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_categorical.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_categorical.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_categorical.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_collection.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_collection.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_collection.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_concat.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_concat.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_concat.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_core.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_core.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_core.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_cumulative.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_cumulative.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_cumulative.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_datasets.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_datasets.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_datasets.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_datetime.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_datetime.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_datetime.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_describe.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_describe.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_describe.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_diagnostics.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_diagnostics.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_diagnostics.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_distributed.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_distributed.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_distributed.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_dummies.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_dummies.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_dummies.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_format.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_format.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_format.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_fusion.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_fusion.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_fusion.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_groupby.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_groupby.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_groupby.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_indexing.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_indexing.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_indexing.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_interchange.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_interchange.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_interchange.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_map_partitions_overlap.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_map_partitions_overlap.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_map_partitions_overlap.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_merge.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_merge.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_merge.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_merge_asof.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_merge_asof.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_merge_asof.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_partitioning_knowledge.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_partitioning_knowledge.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_partitioning_knowledge.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_predicate_pushdown.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_predicate_pushdown.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_predicate_pushdown.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_quantiles.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_quantiles.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_quantiles.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_reductions.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_reductions.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_reductions.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_repartition.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_repartition.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_repartition.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_reshape.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_reshape.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_reshape.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_rolling.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_rolling.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_rolling.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_shuffle.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_shuffle.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_shuffle.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_string_accessor.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_string_accessor.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_string_accessor.pyo
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_ufunc.py
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_ufunc.pyc
+${PYSITELIB}/dask/dataframe/dask_expr/tests/test_ufunc.pyo
 ${PYSITELIB}/dask/dataframe/dispatch.py
 ${PYSITELIB}/dask/dataframe/dispatch.pyc
 ${PYSITELIB}/dask/dataframe/dispatch.pyo
@@ -436,9 +736,6 @@ ${PYSITELIB}/dask/dataframe/io/parquet/arrow.pyo
 ${PYSITELIB}/dask/dataframe/io/parquet/core.py
 ${PYSITELIB}/dask/dataframe/io/parquet/core.pyc
 ${PYSITELIB}/dask/dataframe/io/parquet/core.pyo
-${PYSITELIB}/dask/dataframe/io/parquet/fastparquet.py
-${PYSITELIB}/dask/dataframe/io/parquet/fastparquet.pyc
-${PYSITELIB}/dask/dataframe/io/parquet/fastparquet.pyo
 ${PYSITELIB}/dask/dataframe/io/parquet/utils.py
 ${PYSITELIB}/dask/dataframe/io/parquet/utils.pyc
 ${PYSITELIB}/dask/dataframe/io/parquet/utils.pyo
@@ -481,18 +778,9 @@ ${PYSITELIB}/dask/dataframe/methods.pyo
 ${PYSITELIB}/dask/dataframe/multi.py
 ${PYSITELIB}/dask/dataframe/multi.pyc
 ${PYSITELIB}/dask/dataframe/multi.pyo
-${PYSITELIB}/dask/dataframe/numeric.py
-${PYSITELIB}/dask/dataframe/numeric.pyc
-${PYSITELIB}/dask/dataframe/numeric.pyo
-${PYSITELIB}/dask/dataframe/optimize.py
-${PYSITELIB}/dask/dataframe/optimize.pyc
-${PYSITELIB}/dask/dataframe/optimize.pyo
 ${PYSITELIB}/dask/dataframe/partitionquantiles.py
 ${PYSITELIB}/dask/dataframe/partitionquantiles.pyc
 ${PYSITELIB}/dask/dataframe/partitionquantiles.pyo
-${PYSITELIB}/dask/dataframe/reshape.py
-${PYSITELIB}/dask/dataframe/reshape.pyc
-${PYSITELIB}/dask/dataframe/reshape.pyo
 ${PYSITELIB}/dask/dataframe/rolling.py
 ${PYSITELIB}/dask/dataframe/rolling.pyc
 ${PYSITELIB}/dask/dataframe/rolling.pyo
@@ -505,6 +793,9 @@ ${PYSITELIB}/dask/dataframe/tests/__init__.pyo
 ${PYSITELIB}/dask/dataframe/tests/test_accessors.py
 ${PYSITELIB}/dask/dataframe/tests/test_accessors.pyc
 ${PYSITELIB}/dask/dataframe/tests/test_accessors.pyo
+${PYSITELIB}/dask/dataframe/tests/test_api.py
+${PYSITELIB}/dask/dataframe/tests/test_api.pyc
+${PYSITELIB}/dask/dataframe/tests/test_api.pyo
 ${PYSITELIB}/dask/dataframe/tests/test_arithmetics_reduction.py
 ${PYSITELIB}/dask/dataframe/tests/test_arithmetics_reduction.pyc
 ${PYSITELIB}/dask/dataframe/tests/test_arithmetics_reduction.pyo
@@ -520,9 +811,6 @@ ${PYSITELIB}/dask/dataframe/tests/test_dataframe.pyo
 ${PYSITELIB}/dask/dataframe/tests/test_extensions.py
 ${PYSITELIB}/dask/dataframe/tests/test_extensions.pyc
 ${PYSITELIB}/dask/dataframe/tests/test_extensions.pyo
-${PYSITELIB}/dask/dataframe/tests/test_format.py
-${PYSITELIB}/dask/dataframe/tests/test_format.pyc
-${PYSITELIB}/dask/dataframe/tests/test_format.pyo
 ${PYSITELIB}/dask/dataframe/tests/test_groupby.py
 ${PYSITELIB}/dask/dataframe/tests/test_groupby.pyc
 ${PYSITELIB}/dask/dataframe/tests/test_groupby.pyo
@@ -547,9 +835,6 @@ ${PYSITELIB}/dask/dataframe/tests/test_multi.pyo
 ${PYSITELIB}/dask/dataframe/tests/test_numeric.py
 ${PYSITELIB}/dask/dataframe/tests/test_numeric.pyc
 ${PYSITELIB}/dask/dataframe/tests/test_numeric.pyo
-${PYSITELIB}/dask/dataframe/tests/test_optimize_dataframe.py
-${PYSITELIB}/dask/dataframe/tests/test_optimize_dataframe.pyc
-${PYSITELIB}/dask/dataframe/tests/test_optimize_dataframe.pyo
 ${PYSITELIB}/dask/dataframe/tests/test_pyarrow.py
 ${PYSITELIB}/dask/dataframe/tests/test_pyarrow.pyc
 ${PYSITELIB}/dask/dataframe/tests/test_pyarrow.pyo
@@ -583,6 +868,9 @@ ${PYSITELIB}/dask/dataframe/tseries/tests/__init__.pyo
 ${PYSITELIB}/dask/dataframe/tseries/tests/test_resample.py
 ${PYSITELIB}/dask/dataframe/tseries/tests/test_resample.pyc
 ${PYSITELIB}/dask/dataframe/tseries/tests/test_resample.pyo
+${PYSITELIB}/dask/dataframe/tseries/tests/test_resample_expr.py
+${PYSITELIB}/dask/dataframe/tseries/tests/test_resample_expr.pyc
+${PYSITELIB}/dask/dataframe/tseries/tests/test_resample_expr.pyo
 ${PYSITELIB}/dask/dataframe/utils.py
 ${PYSITELIB}/dask/dataframe/utils.pyc
 ${PYSITELIB}/dask/dataframe/utils.pyo
@@ -656,6 +944,9 @@ ${PYSITELIB}/dask/sizeof.pyo
 ${PYSITELIB}/dask/system.py
 ${PYSITELIB}/dask/system.pyc
 ${PYSITELIB}/dask/system.pyo
+${PYSITELIB}/dask/task_spec.py
+${PYSITELIB}/dask/task_spec.pyc
+${PYSITELIB}/dask/task_spec.pyo
 ${PYSITELIB}/dask/tests/__init__.py
 ${PYSITELIB}/dask/tests/__init__.pyc
 ${PYSITELIB}/dask/tests/__init__.pyo
@@ -704,6 +995,9 @@ ${PYSITELIB}/dask/tests/test_docs.pyo
 ${PYSITELIB}/dask/tests/test_dot.py
 ${PYSITELIB}/dask/tests/test_dot.pyc
 ${PYSITELIB}/dask/tests/test_dot.pyo
+${PYSITELIB}/dask/tests/test_expr.py
+${PYSITELIB}/dask/tests/test_expr.pyc
+${PYSITELIB}/dask/tests/test_expr.pyo
 ${PYSITELIB}/dask/tests/test_graph_manipulation.py
 ${PYSITELIB}/dask/tests/test_graph_manipulation.pyc
 ${PYSITELIB}/dask/tests/test_graph_manipulation.pyo
@@ -713,6 +1007,12 @@ ${PYSITELIB}/dask/tests/test_hashing.pyo
 ${PYSITELIB}/dask/tests/test_highgraph.py
 ${PYSITELIB}/dask/tests/test_highgraph.pyc
 ${PYSITELIB}/dask/tests/test_highgraph.pyo
+${PYSITELIB}/dask/tests/test_hlgexpr.py
+${PYSITELIB}/dask/tests/test_hlgexpr.pyc
+${PYSITELIB}/dask/tests/test_hlgexpr.pyo
+${PYSITELIB}/dask/tests/test_imports.py
+${PYSITELIB}/dask/tests/test_imports.pyc
+${PYSITELIB}/dask/tests/test_imports.pyo
 ${PYSITELIB}/dask/tests/test_layers.py
 ${PYSITELIB}/dask/tests/test_layers.pyc
 ${PYSITELIB}/dask/tests/test_layers.pyo
diff --git a/py-dask/distinfo b/py-dask/distinfo
index 2a575a9c98..7a7ec40dfa 100644
--- a/py-dask/distinfo
+++ b/py-dask/distinfo
@@ -1,6 +1,6 @@
 $NetBSD$
 
-BLAKE2s (dask-2024.12.1.tar.gz) = 8b4fd1ba344238fddf7071fb091328bd3a395573f84dc76b15a278cf624e4436
-SHA512 (dask-2024.12.1.tar.gz) = bdf64fbe3d988eee8b4606bd561d3ba41f68a51d8d84fdc76987104574accaa5ddb1882d4bbc6fb8a6139b8bfbb6cc59a40e0deac96b07fba3ea45a60438c182
-Size (dask-2024.12.1.tar.gz) = 10701889 bytes
+BLAKE2s (dask-2025.5.1.tar.gz) = 12f3b3e5de031920d07975aefe9deb14bbc258a5c951382efaadf1c3f3c1380c
+SHA512 (dask-2025.5.1.tar.gz) = abd8f99388b3fbacfbe28b15e1619a2eea9730dd431cb994a18785038b3c9da8dc2cc7322fd83477700763d8e90a7881dc7035267dd5c134ecabf19d6e8e2dbe
+Size (dask-2025.5.1.tar.gz) = 10971933 bytes
 SHA1 (patch-pyproject.toml) = bae684c99d9ae6d0e83c6ac58eefccd3b8d2638d
diff --git a/py-dask_expr/Makefile b/py-dask_expr/Makefile
index ad6541ea55..9d23960c33 100644
--- a/py-dask_expr/Makefile
+++ b/py-dask_expr/Makefile
@@ -1,6 +1,6 @@
 # $NetBSD$
 
-DISTNAME=	dask_expr-1.1.21
+DISTNAME=	dask_expr-2.0.0
 PKGNAME=	${PYPKGPREFIX}-${DISTNAME}
 CATEGORIES=	math python
 MASTER_SITES=	${MASTER_SITE_PYPI:=d/dask_expr/}
diff --git a/py-dask_expr/PLIST b/py-dask_expr/PLIST
index 99843c660d..9825099de9 100644
--- a/py-dask_expr/PLIST
+++ b/py-dask_expr/PLIST
@@ -7,156 +7,3 @@ ${PYSITELIB}/${WHEEL_INFODIR}/top_level.txt
 ${PYSITELIB}/dask_expr/__init__.py
 ${PYSITELIB}/dask_expr/__init__.pyc
 ${PYSITELIB}/dask_expr/__init__.pyo
-${PYSITELIB}/dask_expr/_accessor.py
-${PYSITELIB}/dask_expr/_accessor.pyc
-${PYSITELIB}/dask_expr/_accessor.pyo
-${PYSITELIB}/dask_expr/_backends.py
-${PYSITELIB}/dask_expr/_backends.pyc
-${PYSITELIB}/dask_expr/_backends.pyo
-${PYSITELIB}/dask_expr/_categorical.py
-${PYSITELIB}/dask_expr/_categorical.pyc
-${PYSITELIB}/dask_expr/_categorical.pyo
-${PYSITELIB}/dask_expr/_collection.py
-${PYSITELIB}/dask_expr/_collection.pyc
-${PYSITELIB}/dask_expr/_collection.pyo
-${PYSITELIB}/dask_expr/_concat.py
-${PYSITELIB}/dask_expr/_concat.pyc
-${PYSITELIB}/dask_expr/_concat.pyo
-${PYSITELIB}/dask_expr/_core.py
-${PYSITELIB}/dask_expr/_core.pyc
-${PYSITELIB}/dask_expr/_core.pyo
-${PYSITELIB}/dask_expr/_cumulative.py
-${PYSITELIB}/dask_expr/_cumulative.pyc
-${PYSITELIB}/dask_expr/_cumulative.pyo
-${PYSITELIB}/dask_expr/_datetime.py
-${PYSITELIB}/dask_expr/_datetime.pyc
-${PYSITELIB}/dask_expr/_datetime.pyo
-${PYSITELIB}/dask_expr/_describe.py
-${PYSITELIB}/dask_expr/_describe.pyc
-${PYSITELIB}/dask_expr/_describe.pyo
-${PYSITELIB}/dask_expr/_dispatch.py
-${PYSITELIB}/dask_expr/_dispatch.pyc
-${PYSITELIB}/dask_expr/_dispatch.pyo
-${PYSITELIB}/dask_expr/_dummies.py
-${PYSITELIB}/dask_expr/_dummies.pyc
-${PYSITELIB}/dask_expr/_dummies.pyo
-${PYSITELIB}/dask_expr/_expr.py
-${PYSITELIB}/dask_expr/_expr.pyc
-${PYSITELIB}/dask_expr/_expr.pyo
-${PYSITELIB}/dask_expr/_groupby.py
-${PYSITELIB}/dask_expr/_groupby.pyc
-${PYSITELIB}/dask_expr/_groupby.pyo
-${PYSITELIB}/dask_expr/_indexing.py
-${PYSITELIB}/dask_expr/_indexing.pyc
-${PYSITELIB}/dask_expr/_indexing.pyo
-${PYSITELIB}/dask_expr/_interchange.py
-${PYSITELIB}/dask_expr/_interchange.pyc
-${PYSITELIB}/dask_expr/_interchange.pyo
-${PYSITELIB}/dask_expr/_merge.py
-${PYSITELIB}/dask_expr/_merge.pyc
-${PYSITELIB}/dask_expr/_merge.pyo
-${PYSITELIB}/dask_expr/_merge_asof.py
-${PYSITELIB}/dask_expr/_merge_asof.pyc
-${PYSITELIB}/dask_expr/_merge_asof.pyo
-${PYSITELIB}/dask_expr/_quantile.py
-${PYSITELIB}/dask_expr/_quantile.pyc
-${PYSITELIB}/dask_expr/_quantile.pyo
-${PYSITELIB}/dask_expr/_quantiles.py
-${PYSITELIB}/dask_expr/_quantiles.pyc
-${PYSITELIB}/dask_expr/_quantiles.pyo
-${PYSITELIB}/dask_expr/_reductions.py
-${PYSITELIB}/dask_expr/_reductions.pyc
-${PYSITELIB}/dask_expr/_reductions.pyo
-${PYSITELIB}/dask_expr/_repartition.py
-${PYSITELIB}/dask_expr/_repartition.pyc
-${PYSITELIB}/dask_expr/_repartition.pyo
-${PYSITELIB}/dask_expr/_resample.py
-${PYSITELIB}/dask_expr/_resample.pyc
-${PYSITELIB}/dask_expr/_resample.pyo
-${PYSITELIB}/dask_expr/_rolling.py
-${PYSITELIB}/dask_expr/_rolling.pyc
-${PYSITELIB}/dask_expr/_rolling.pyo
-${PYSITELIB}/dask_expr/_shuffle.py
-${PYSITELIB}/dask_expr/_shuffle.pyc
-${PYSITELIB}/dask_expr/_shuffle.pyo
-${PYSITELIB}/dask_expr/_str_accessor.py
-${PYSITELIB}/dask_expr/_str_accessor.pyc
-${PYSITELIB}/dask_expr/_str_accessor.pyo
-${PYSITELIB}/dask_expr/_util.py
-${PYSITELIB}/dask_expr/_util.pyc
-${PYSITELIB}/dask_expr/_util.pyo
-${PYSITELIB}/dask_expr/_version.py
-${PYSITELIB}/dask_expr/_version.pyc
-${PYSITELIB}/dask_expr/_version.pyo
-${PYSITELIB}/dask_expr/array/__init__.py
-${PYSITELIB}/dask_expr/array/__init__.pyc
-${PYSITELIB}/dask_expr/array/__init__.pyo
-${PYSITELIB}/dask_expr/array/_creation.py
-${PYSITELIB}/dask_expr/array/_creation.pyc
-${PYSITELIB}/dask_expr/array/_creation.pyo
-${PYSITELIB}/dask_expr/array/blockwise.py
-${PYSITELIB}/dask_expr/array/blockwise.pyc
-${PYSITELIB}/dask_expr/array/blockwise.pyo
-${PYSITELIB}/dask_expr/array/core.py
-${PYSITELIB}/dask_expr/array/core.pyc
-${PYSITELIB}/dask_expr/array/core.pyo
-${PYSITELIB}/dask_expr/array/random.py
-${PYSITELIB}/dask_expr/array/random.pyc
-${PYSITELIB}/dask_expr/array/random.pyo
-${PYSITELIB}/dask_expr/array/rechunk.py
-${PYSITELIB}/dask_expr/array/rechunk.pyc
-${PYSITELIB}/dask_expr/array/rechunk.pyo
-${PYSITELIB}/dask_expr/array/reductions.py
-${PYSITELIB}/dask_expr/array/reductions.pyc
-${PYSITELIB}/dask_expr/array/reductions.pyo
-${PYSITELIB}/dask_expr/array/slicing.py
-${PYSITELIB}/dask_expr/array/slicing.pyc
-${PYSITELIB}/dask_expr/array/slicing.pyo
-${PYSITELIB}/dask_expr/datasets.py
-${PYSITELIB}/dask_expr/datasets.pyc
-${PYSITELIB}/dask_expr/datasets.pyo
-${PYSITELIB}/dask_expr/diagnostics/__init__.py
-${PYSITELIB}/dask_expr/diagnostics/__init__.pyc
-${PYSITELIB}/dask_expr/diagnostics/__init__.pyo
-${PYSITELIB}/dask_expr/diagnostics/_analyze.py
-${PYSITELIB}/dask_expr/diagnostics/_analyze.pyc
-${PYSITELIB}/dask_expr/diagnostics/_analyze.pyo
-${PYSITELIB}/dask_expr/diagnostics/_analyze_plugin.py
-${PYSITELIB}/dask_expr/diagnostics/_analyze_plugin.pyc
-${PYSITELIB}/dask_expr/diagnostics/_analyze_plugin.pyo
-${PYSITELIB}/dask_expr/diagnostics/_explain.py
-${PYSITELIB}/dask_expr/diagnostics/_explain.pyc
-${PYSITELIB}/dask_expr/diagnostics/_explain.pyo
-${PYSITELIB}/dask_expr/io/__init__.py
-${PYSITELIB}/dask_expr/io/__init__.pyc
-${PYSITELIB}/dask_expr/io/__init__.pyo
-${PYSITELIB}/dask_expr/io/_delayed.py
-${PYSITELIB}/dask_expr/io/_delayed.pyc
-${PYSITELIB}/dask_expr/io/_delayed.pyo
-${PYSITELIB}/dask_expr/io/bag.py
-${PYSITELIB}/dask_expr/io/bag.pyc
-${PYSITELIB}/dask_expr/io/bag.pyo
-${PYSITELIB}/dask_expr/io/csv.py
-${PYSITELIB}/dask_expr/io/csv.pyc
-${PYSITELIB}/dask_expr/io/csv.pyo
-${PYSITELIB}/dask_expr/io/hdf.py
-${PYSITELIB}/dask_expr/io/hdf.pyc
-${PYSITELIB}/dask_expr/io/hdf.pyo
-${PYSITELIB}/dask_expr/io/io.py
-${PYSITELIB}/dask_expr/io/io.pyc
-${PYSITELIB}/dask_expr/io/io.pyo
-${PYSITELIB}/dask_expr/io/json.py
-${PYSITELIB}/dask_expr/io/json.pyc
-${PYSITELIB}/dask_expr/io/json.pyo
-${PYSITELIB}/dask_expr/io/orc.py
-${PYSITELIB}/dask_expr/io/orc.pyc
-${PYSITELIB}/dask_expr/io/orc.pyo
-${PYSITELIB}/dask_expr/io/parquet.py
-${PYSITELIB}/dask_expr/io/parquet.pyc
-${PYSITELIB}/dask_expr/io/parquet.pyo
-${PYSITELIB}/dask_expr/io/records.py
-${PYSITELIB}/dask_expr/io/records.pyc
-${PYSITELIB}/dask_expr/io/records.pyo
-${PYSITELIB}/dask_expr/io/sql.py
-${PYSITELIB}/dask_expr/io/sql.pyc
-${PYSITELIB}/dask_expr/io/sql.pyo
diff --git a/py-dask_expr/distinfo b/py-dask_expr/distinfo
index 44a8a4a813..ba5d192c7a 100644
--- a/py-dask_expr/distinfo
+++ b/py-dask_expr/distinfo
@@ -1,5 +1,5 @@
 $NetBSD$
 
-BLAKE2s (dask_expr-1.1.21.tar.gz) = e992d922fb89decb4daefce9dad7ef1a820be6e9e8d333c47d81e4800acc68d2
-SHA512 (dask_expr-1.1.21.tar.gz) = 3c4ed74b5fa339671229a05cf0c71cc38b77d0bd2ede6f8ef852ae1c3ee7b5605ccbeae2b18ad52c003f0adf5cb7f5509b4545aaa4ee2397d0c6dffd5a409f3a
-Size (dask_expr-1.1.21.tar.gz) = 223929 bytes
+BLAKE2s (dask_expr-2.0.0.tar.gz) = 392070adcd05eb825c14d8346fcc9e52a87eaf421221e600e7a7a9441e81cae1
+SHA512 (dask_expr-2.0.0.tar.gz) = 46b1a43b8d04039df9b25854b3358fcbb00ebac161ec8b64e8346f2378cf5fbf0ad93582cc4f97bcf1f0cc0168dca93f8c065f38f41ecbe2deb62a039e6763fe
+Size (dask_expr-2.0.0.tar.gz) = 3781 bytes



Home | Main Index | Thread Index | Old Index