From 0e783e7b296ad932fb1168977299783f96970085 Mon Sep 17 00:00:00 2001 From: Lindsey Gray Date: Wed, 16 Jul 2025 11:19:16 -0700 Subject: [PATCH 1/2] use hatchling and drop setup.[py,cfg] --- .github/workflows/mypy.yml | 2 +- pyproject.toml | 63 ++++++++++++++- setup.cfg | 79 ------------------- setup.py | 10 --- {cubed => src/cubed}/__init__.py | 0 {cubed => src/cubed}/array/__init__.py | 0 {cubed => src/cubed}/array/nan_functions.py | 0 {cubed => src/cubed}/array/overlap.py | 0 {cubed => src/cubed}/array/pad.py | 0 {cubed => src/cubed}/array_api/__init__.py | 0 .../cubed}/array_api/array_object.py | 0 {cubed => src/cubed}/array_api/constants.py | 0 .../cubed}/array_api/creation_functions.py | 0 .../cubed}/array_api/data_type_functions.py | 0 {cubed => src/cubed}/array_api/dtypes.py | 0 .../cubed}/array_api/elementwise_functions.py | 0 .../cubed}/array_api/indexing_functions.py | 0 {cubed => src/cubed}/array_api/inspection.py | 0 {cubed => src/cubed}/array_api/linalg.py | 0 .../array_api/linear_algebra_functions.py | 0 .../array_api/manipulation_functions.py | 0 .../cubed}/array_api/searching_functions.py | 0 .../cubed}/array_api/statistical_functions.py | 0 .../cubed}/array_api/utility_functions.py | 0 {cubed => src/cubed}/backend_array_api.py | 0 {cubed => src/cubed}/core/__init__.py | 0 {cubed => src/cubed}/core/array.py | 0 {cubed => src/cubed}/core/groupby.py | 0 {cubed => src/cubed}/core/gufunc.py | 0 {cubed => src/cubed}/core/indexing.py | 0 {cubed => src/cubed}/core/ops.py | 0 {cubed => src/cubed}/core/optimization.py | 0 {cubed => src/cubed}/core/plan.py | 0 {cubed => src/cubed}/diagnostics/__init__.py | 0 {cubed => src/cubed}/diagnostics/history.py | 0 {cubed => src/cubed}/diagnostics/mem_usage.py | 0 {cubed => src/cubed}/diagnostics/mem_warn.py | 0 {cubed => src/cubed}/diagnostics/memray.py | 0 {cubed => src/cubed}/diagnostics/rich.py | 0 {cubed => src/cubed}/diagnostics/timeline.py | 0 {cubed => src/cubed}/diagnostics/tqdm.py | 0 {cubed => src/cubed}/icechunk.py | 0 {cubed => src/cubed}/primitive/__init__.py | 0 {cubed => src/cubed}/primitive/blockwise.py | 0 {cubed => src/cubed}/primitive/memory.py | 0 {cubed => src/cubed}/primitive/rechunk.py | 0 {cubed => src/cubed}/primitive/types.py | 0 {cubed => src/cubed}/random.py | 0 {cubed => src/cubed}/runtime/__init__.py | 0 {cubed => src/cubed}/runtime/asyncio.py | 0 {cubed => src/cubed}/runtime/backup.py | 0 {cubed => src/cubed}/runtime/create.py | 0 .../cubed}/runtime/executors/__init__.py | 0 .../cubed}/runtime/executors/beam.py | 0 .../cubed}/runtime/executors/coiled.py | 0 .../cubed}/runtime/executors/dask.py | 0 .../cubed}/runtime/executors/lithops.py | 0 .../cubed}/runtime/executors/local.py | 0 .../cubed}/runtime/executors/modal.py | 0 {cubed => src/cubed}/runtime/executors/ray.py | 0 .../cubed}/runtime/executors/spark.py | 0 {cubed => src/cubed}/runtime/pipeline.py | 0 {cubed => src/cubed}/runtime/types.py | 0 {cubed => src/cubed}/runtime/utils.py | 0 {cubed => src/cubed}/spec.py | 0 {cubed => src/cubed}/storage/__init__.py | 0 {cubed => src/cubed}/storage/backend.py | 0 .../cubed}/storage/backends/__init__.py | 0 .../cubed}/storage/backends/tensorstore.py | 0 .../cubed}/storage/backends/zarr_python.py | 0 .../cubed}/storage/backends/zarr_python_v3.py | 0 {cubed => src/cubed}/storage/types.py | 0 {cubed => src/cubed}/storage/virtual.py | 0 {cubed => src/cubed}/storage/zarr.py | 0 {cubed => src/cubed}/tests/__init__.py | 0 .../cubed}/tests/array/test_nan_functions.py | 0 .../cubed}/tests/array/test_overlap.py | 0 {cubed => src/cubed}/tests/array/test_pad.py | 0 .../cubed}/tests/primitive/__init__.py | 0 .../cubed}/tests/primitive/test_blockwise.py | 0 .../tests/primitive/test_blockwise_fusion.py | 0 .../cubed}/tests/primitive/test_memory.py | 0 .../cubed}/tests/primitive/test_rechunk.py | 0 .../cubed}/tests/runtime/__init__.py | 0 .../cubed}/tests/runtime/test_backup.py | 0 .../cubed}/tests/runtime/test_dask.py | 0 .../cubed}/tests/runtime/test_lithops.py | 0 .../cubed}/tests/runtime/test_local.py | 0 .../cubed}/tests/runtime/test_modal.py | 0 {cubed => src/cubed}/tests/runtime/utils.py | 0 .../cubed}/tests/storage/__init__.py | 0 .../cubed}/tests/storage/test_virtual.py | 0 .../cubed}/tests/storage/test_zarr.py | 0 {cubed => src/cubed}/tests/test_array_api.py | 0 {cubed => src/cubed}/tests/test_core.py | 0 .../cubed}/tests/test_executor_features.py | 0 {cubed => src/cubed}/tests/test_groupby.py | 0 {cubed => src/cubed}/tests/test_gufunc.py | 0 {cubed => src/cubed}/tests/test_html.py | 0 {cubed => src/cubed}/tests/test_icechunk.py | 0 {cubed => src/cubed}/tests/test_indexing.py | 0 {cubed => src/cubed}/tests/test_inspection.py | 0 {cubed => src/cubed}/tests/test_linalg.py | 0 .../cubed}/tests/test_mem_utilization.py | 0 .../tests/test_mem_utilization_rechunk.py | 0 {cubed => src/cubed}/tests/test_ops.py | 0 .../cubed}/tests/test_optimization.py | 0 {cubed => src/cubed}/tests/test_random.py | 0 {cubed => src/cubed}/tests/test_rechunk.py | 0 {cubed => src/cubed}/tests/test_types.py | 0 {cubed => src/cubed}/tests/test_utils.py | 0 {cubed => src/cubed}/tests/utils.py | 0 {cubed => src/cubed}/types.py | 0 {cubed => src/cubed}/utils.py | 0 {cubed => src/cubed}/vendor/__init__.py | 0 {cubed => src/cubed}/vendor/dask/LICENSE.txt | 0 {cubed => src/cubed}/vendor/dask/__init__.py | 0 .../cubed}/vendor/dask/array/__init__.py | 0 .../cubed}/vendor/dask/array/core.py | 0 .../cubed}/vendor/dask/array/core.pyi | 0 .../cubed}/vendor/dask/array/gufunc.py | 0 .../cubed}/vendor/dask/array/overlap.py | 0 .../cubed}/vendor/dask/array/reshape.py | 0 {cubed => src/cubed}/vendor/dask/array/svg.py | 0 .../cubed}/vendor/dask/array/utils.py | 0 {cubed => src/cubed}/vendor/dask/blockwise.py | 0 {cubed => src/cubed}/vendor/dask/core.py | 0 {cubed => src/cubed}/vendor/dask/utils.py | 0 .../cubed}/vendor/dask/widgets/__init__.py | 0 .../dask/widgets/templates/array.html.j2 | 0 .../cubed}/vendor/dask/widgets/widgets.py | 0 {cubed => src/cubed}/vendor/rechunker/LICENSE | 0 .../cubed}/vendor/rechunker/__init__.py | 0 .../cubed}/vendor/rechunker/algorithm.py | 0 .../cubed}/vendor/rechunker/compat.py | 0 .../cubed}/vendor/rechunker/types.py | 0 136 files changed, 60 insertions(+), 94 deletions(-) delete mode 100644 setup.cfg delete mode 100644 setup.py rename {cubed => src/cubed}/__init__.py (100%) rename {cubed => src/cubed}/array/__init__.py (100%) rename {cubed => src/cubed}/array/nan_functions.py (100%) rename {cubed => src/cubed}/array/overlap.py (100%) rename {cubed => src/cubed}/array/pad.py (100%) rename {cubed => src/cubed}/array_api/__init__.py (100%) rename {cubed => src/cubed}/array_api/array_object.py (100%) rename {cubed => src/cubed}/array_api/constants.py (100%) rename {cubed => src/cubed}/array_api/creation_functions.py (100%) rename {cubed => src/cubed}/array_api/data_type_functions.py (100%) rename {cubed => src/cubed}/array_api/dtypes.py (100%) rename {cubed => src/cubed}/array_api/elementwise_functions.py (100%) rename {cubed => src/cubed}/array_api/indexing_functions.py (100%) rename {cubed => src/cubed}/array_api/inspection.py (100%) rename {cubed => src/cubed}/array_api/linalg.py (100%) rename {cubed => src/cubed}/array_api/linear_algebra_functions.py (100%) rename {cubed => src/cubed}/array_api/manipulation_functions.py (100%) rename {cubed => src/cubed}/array_api/searching_functions.py (100%) rename {cubed => src/cubed}/array_api/statistical_functions.py (100%) rename {cubed => src/cubed}/array_api/utility_functions.py (100%) rename {cubed => src/cubed}/backend_array_api.py (100%) rename {cubed => src/cubed}/core/__init__.py (100%) rename {cubed => src/cubed}/core/array.py (100%) rename {cubed => src/cubed}/core/groupby.py (100%) rename {cubed => src/cubed}/core/gufunc.py (100%) rename {cubed => src/cubed}/core/indexing.py (100%) rename {cubed => src/cubed}/core/ops.py (100%) rename {cubed => src/cubed}/core/optimization.py (100%) rename {cubed => src/cubed}/core/plan.py (100%) rename {cubed => src/cubed}/diagnostics/__init__.py (100%) rename {cubed => src/cubed}/diagnostics/history.py (100%) rename {cubed => src/cubed}/diagnostics/mem_usage.py (100%) rename {cubed => src/cubed}/diagnostics/mem_warn.py (100%) rename {cubed => src/cubed}/diagnostics/memray.py (100%) rename {cubed => src/cubed}/diagnostics/rich.py (100%) rename {cubed => src/cubed}/diagnostics/timeline.py (100%) rename {cubed => src/cubed}/diagnostics/tqdm.py (100%) rename {cubed => src/cubed}/icechunk.py (100%) rename {cubed => src/cubed}/primitive/__init__.py (100%) rename {cubed => src/cubed}/primitive/blockwise.py (100%) rename {cubed => src/cubed}/primitive/memory.py (100%) rename {cubed => src/cubed}/primitive/rechunk.py (100%) rename {cubed => src/cubed}/primitive/types.py (100%) rename {cubed => src/cubed}/random.py (100%) rename {cubed => src/cubed}/runtime/__init__.py (100%) rename {cubed => src/cubed}/runtime/asyncio.py (100%) rename {cubed => src/cubed}/runtime/backup.py (100%) rename {cubed => src/cubed}/runtime/create.py (100%) rename {cubed => src/cubed}/runtime/executors/__init__.py (100%) rename {cubed => src/cubed}/runtime/executors/beam.py (100%) rename {cubed => src/cubed}/runtime/executors/coiled.py (100%) rename {cubed => src/cubed}/runtime/executors/dask.py (100%) rename {cubed => src/cubed}/runtime/executors/lithops.py (100%) rename {cubed => src/cubed}/runtime/executors/local.py (100%) rename {cubed => src/cubed}/runtime/executors/modal.py (100%) rename {cubed => src/cubed}/runtime/executors/ray.py (100%) rename {cubed => src/cubed}/runtime/executors/spark.py (100%) rename {cubed => src/cubed}/runtime/pipeline.py (100%) rename {cubed => src/cubed}/runtime/types.py (100%) rename {cubed => src/cubed}/runtime/utils.py (100%) rename {cubed => src/cubed}/spec.py (100%) rename {cubed => src/cubed}/storage/__init__.py (100%) rename {cubed => src/cubed}/storage/backend.py (100%) rename {cubed => src/cubed}/storage/backends/__init__.py (100%) rename {cubed => src/cubed}/storage/backends/tensorstore.py (100%) rename {cubed => src/cubed}/storage/backends/zarr_python.py (100%) rename {cubed => src/cubed}/storage/backends/zarr_python_v3.py (100%) rename {cubed => src/cubed}/storage/types.py (100%) rename {cubed => src/cubed}/storage/virtual.py (100%) rename {cubed => src/cubed}/storage/zarr.py (100%) rename {cubed => src/cubed}/tests/__init__.py (100%) rename {cubed => src/cubed}/tests/array/test_nan_functions.py (100%) rename {cubed => src/cubed}/tests/array/test_overlap.py (100%) rename {cubed => src/cubed}/tests/array/test_pad.py (100%) rename {cubed => src/cubed}/tests/primitive/__init__.py (100%) rename {cubed => src/cubed}/tests/primitive/test_blockwise.py (100%) rename {cubed => src/cubed}/tests/primitive/test_blockwise_fusion.py (100%) rename {cubed => src/cubed}/tests/primitive/test_memory.py (100%) rename {cubed => src/cubed}/tests/primitive/test_rechunk.py (100%) rename {cubed => src/cubed}/tests/runtime/__init__.py (100%) rename {cubed => src/cubed}/tests/runtime/test_backup.py (100%) rename {cubed => src/cubed}/tests/runtime/test_dask.py (100%) rename {cubed => src/cubed}/tests/runtime/test_lithops.py (100%) rename {cubed => src/cubed}/tests/runtime/test_local.py (100%) rename {cubed => src/cubed}/tests/runtime/test_modal.py (100%) rename {cubed => src/cubed}/tests/runtime/utils.py (100%) rename {cubed => src/cubed}/tests/storage/__init__.py (100%) rename {cubed => src/cubed}/tests/storage/test_virtual.py (100%) rename {cubed => src/cubed}/tests/storage/test_zarr.py (100%) rename {cubed => src/cubed}/tests/test_array_api.py (100%) rename {cubed => src/cubed}/tests/test_core.py (100%) rename {cubed => src/cubed}/tests/test_executor_features.py (100%) rename {cubed => src/cubed}/tests/test_groupby.py (100%) rename {cubed => src/cubed}/tests/test_gufunc.py (100%) rename {cubed => src/cubed}/tests/test_html.py (100%) rename {cubed => src/cubed}/tests/test_icechunk.py (100%) rename {cubed => src/cubed}/tests/test_indexing.py (100%) rename {cubed => src/cubed}/tests/test_inspection.py (100%) rename {cubed => src/cubed}/tests/test_linalg.py (100%) rename {cubed => src/cubed}/tests/test_mem_utilization.py (100%) rename {cubed => src/cubed}/tests/test_mem_utilization_rechunk.py (100%) rename {cubed => src/cubed}/tests/test_ops.py (100%) rename {cubed => src/cubed}/tests/test_optimization.py (100%) rename {cubed => src/cubed}/tests/test_random.py (100%) rename {cubed => src/cubed}/tests/test_rechunk.py (100%) rename {cubed => src/cubed}/tests/test_types.py (100%) rename {cubed => src/cubed}/tests/test_utils.py (100%) rename {cubed => src/cubed}/tests/utils.py (100%) rename {cubed => src/cubed}/types.py (100%) rename {cubed => src/cubed}/utils.py (100%) rename {cubed => src/cubed}/vendor/__init__.py (100%) rename {cubed => src/cubed}/vendor/dask/LICENSE.txt (100%) rename {cubed => src/cubed}/vendor/dask/__init__.py (100%) rename {cubed => src/cubed}/vendor/dask/array/__init__.py (100%) rename {cubed => src/cubed}/vendor/dask/array/core.py (100%) rename {cubed => src/cubed}/vendor/dask/array/core.pyi (100%) rename {cubed => src/cubed}/vendor/dask/array/gufunc.py (100%) rename {cubed => src/cubed}/vendor/dask/array/overlap.py (100%) rename {cubed => src/cubed}/vendor/dask/array/reshape.py (100%) rename {cubed => src/cubed}/vendor/dask/array/svg.py (100%) rename {cubed => src/cubed}/vendor/dask/array/utils.py (100%) rename {cubed => src/cubed}/vendor/dask/blockwise.py (100%) rename {cubed => src/cubed}/vendor/dask/core.py (100%) rename {cubed => src/cubed}/vendor/dask/utils.py (100%) rename {cubed => src/cubed}/vendor/dask/widgets/__init__.py (100%) rename {cubed => src/cubed}/vendor/dask/widgets/templates/array.html.j2 (100%) rename {cubed => src/cubed}/vendor/dask/widgets/widgets.py (100%) rename {cubed => src/cubed}/vendor/rechunker/LICENSE (100%) rename {cubed => src/cubed}/vendor/rechunker/__init__.py (100%) rename {cubed => src/cubed}/vendor/rechunker/algorithm.py (100%) rename {cubed => src/cubed}/vendor/rechunker/compat.py (100%) rename {cubed => src/cubed}/vendor/rechunker/types.py (100%) diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml index e1fac0aa4..82819fc29 100644 --- a/.github/workflows/mypy.yml +++ b/.github/workflows/mypy.yml @@ -46,4 +46,4 @@ jobs: - name: Run mypy run: | - python -m mypy cubed + python -m mypy src/cubed diff --git a/pyproject.toml b/pyproject.toml index 14be213cd..6642af743 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,10 @@ [build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" +requires = ["hatchling>=1.17.1", "hatch-vcs"] +build-backend = "hatchling.build" [project] name = "cubed" -version = "0.21.0" +dynamic = ["version"] authors = [ {name = "Tom White", email = "tom.e.white@gmail.com"}, ] @@ -94,11 +94,15 @@ homepage = "https://github.com/cubed-dev/cubed" documentation = "https://tomwhite.github.io/cubed" repository = "https://github.com/cubed-dev/cubed" +[tool.hatch] +version.source = "vcs" +build.hooks.vcs.version-file = "src/cubed/version.py" + [tool.pytest.ini_options] filterwarnings = [ "error::UserWarning", ] -testpaths = "cubed/tests" +testpaths = "src/cubed/tests" [tool.ruff] target-version = "py311" @@ -145,3 +149,54 @@ known-third-party = [ "toolz", "zarr", ] + +[tool.mypy] +exclude = "tests|doc" +files = "src/" +show_error_codes = true +allow_redefinition = true + +[[tool.mypy.overrides]] +# Ignore vendored libraries +modules = "mypy-cubed.vendor.*" +ignore_errors = true + +[[tool.mypy.overrides]] +# Most of the numerical computing stack doesn't have type annotations yet. +module = [ + "mypy-apache_beam.*", + "mypy-aiostream.*", + "mypy-array_api_compat.*", + "mypy-cloudpickle.*", + "mypy-coiled.*", + "mypy-dask.*", + "mypy-donfig.*", + "mypy-distributed.*", + "mypy-fsspec.*", + "mypy-icechunk.*", + "mypy-lithops.*", + "mypy-IPython.*", + "mypy-memray.*", + "mypy-modal.*", + "mypy-matplotlib.*", + "mypy-ndindex.*", + "mypy-networkx.*", + "mypy-numcodecs.*", + "mypy-numpy.*", + "mypy-obstore.*", + "mypy-pandas.*", + "mypy-psutil.*", + "mypy-pytest.*", + "mypy-ray.*", + "mypy-rechunker.*", + "mypy-seaborn.*", + "mypy-six.*", + "mypy-tenacity.*", + "mypy-tensorstore.*", + "mypy-tlz.*", + "mypy-toolz.*", + "mypy-tqdm.*", + "mypy-zarr.*", + "mypy-pyspark.*", +] +ignore_missing_imports = true diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 4e032f904..000000000 --- a/setup.cfg +++ /dev/null @@ -1,79 +0,0 @@ -[mypy] -exclude = tests|doc -files = . -show_error_codes = True -allow_redefinition = True - -# Ignore vendored libraries -[mypy-cubed.vendor.*] -ignore_errors = True - -# Most of the numerical computing stack doesn't have type annotations yet. -[mypy-apache_beam.*] -ignore_missing_imports = True -[mypy-aiostream.*] -ignore_missing_imports = True -[mypy-array_api_compat.*] -ignore_missing_imports = True -[mypy-cloudpickle.*] -ignore_missing_imports = True -[mypy-coiled.*] -ignore_missing_imports = True -[mypy-dask.*] -ignore_missing_imports = True -[mypy-donfig.*] -ignore_missing_imports = True -[mypy-distributed.*] -ignore_missing_imports = True -[mypy-fsspec.*] -ignore_missing_imports = True -[mypy-icechunk.*] -ignore_missing_imports = True -[mypy-lithops.*] -ignore_missing_imports = True -[mypy-IPython.*] -ignore_missing_imports = True -[mypy-memray.*] -ignore_missing_imports = True -[mypy-modal.*] -ignore_missing_imports = True -[mypy-matplotlib.*] -ignore_missing_imports = True -[mypy-ndindex.*] -ignore_missing_imports = True -[mypy-networkx.*] -ignore_missing_imports = True -[mypy-numcodecs.*] -ignore_missing_imports = True -[mypy-numpy.*] -ignore_missing_imports = True -[mypy-obstore.*] -ignore_missing_imports = True -[mypy-pandas.*] -ignore_missing_imports = True -[mypy-psutil.*] -ignore_missing_imports = True -[mypy-pytest.*] -ignore_missing_imports = True -[mypy-ray.*] -ignore_missing_imports = True -[mypy-rechunker.*] -ignore_missing_imports = True -[mypy-seaborn.*] -ignore_missing_imports = True -[mypy-six.*] -ignore_missing_imports = True -[mypy-tenacity.*] -ignore_missing_imports = True -[mypy-tensorstore.*] -ignore_missing_imports = True -[mypy-tlz.*] -ignore_missing_imports = True -[mypy-toolz.*] -ignore_missing_imports = True -[mypy-tqdm.*] -ignore_missing_imports = True -[mypy-zarr.*] -ignore_missing_imports = True -[mypy-pyspark.*] -ignore_missing_imports = True diff --git a/setup.py b/setup.py deleted file mode 100644 index 0ed447902..000000000 --- a/setup.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -from setuptools import setup - -if __name__ == "__main__": - setup( - name="cubed", - package_dir={ - "cubed": "cubed" - }, # avoids pip install problems if one creates a tmp directory alongside cubed directory - ) diff --git a/cubed/__init__.py b/src/cubed/__init__.py similarity index 100% rename from cubed/__init__.py rename to src/cubed/__init__.py diff --git a/cubed/array/__init__.py b/src/cubed/array/__init__.py similarity index 100% rename from cubed/array/__init__.py rename to src/cubed/array/__init__.py diff --git a/cubed/array/nan_functions.py b/src/cubed/array/nan_functions.py similarity index 100% rename from cubed/array/nan_functions.py rename to src/cubed/array/nan_functions.py diff --git a/cubed/array/overlap.py b/src/cubed/array/overlap.py similarity index 100% rename from cubed/array/overlap.py rename to src/cubed/array/overlap.py diff --git a/cubed/array/pad.py b/src/cubed/array/pad.py similarity index 100% rename from cubed/array/pad.py rename to src/cubed/array/pad.py diff --git a/cubed/array_api/__init__.py b/src/cubed/array_api/__init__.py similarity index 100% rename from cubed/array_api/__init__.py rename to src/cubed/array_api/__init__.py diff --git a/cubed/array_api/array_object.py b/src/cubed/array_api/array_object.py similarity index 100% rename from cubed/array_api/array_object.py rename to src/cubed/array_api/array_object.py diff --git a/cubed/array_api/constants.py b/src/cubed/array_api/constants.py similarity index 100% rename from cubed/array_api/constants.py rename to src/cubed/array_api/constants.py diff --git a/cubed/array_api/creation_functions.py b/src/cubed/array_api/creation_functions.py similarity index 100% rename from cubed/array_api/creation_functions.py rename to src/cubed/array_api/creation_functions.py diff --git a/cubed/array_api/data_type_functions.py b/src/cubed/array_api/data_type_functions.py similarity index 100% rename from cubed/array_api/data_type_functions.py rename to src/cubed/array_api/data_type_functions.py diff --git a/cubed/array_api/dtypes.py b/src/cubed/array_api/dtypes.py similarity index 100% rename from cubed/array_api/dtypes.py rename to src/cubed/array_api/dtypes.py diff --git a/cubed/array_api/elementwise_functions.py b/src/cubed/array_api/elementwise_functions.py similarity index 100% rename from cubed/array_api/elementwise_functions.py rename to src/cubed/array_api/elementwise_functions.py diff --git a/cubed/array_api/indexing_functions.py b/src/cubed/array_api/indexing_functions.py similarity index 100% rename from cubed/array_api/indexing_functions.py rename to src/cubed/array_api/indexing_functions.py diff --git a/cubed/array_api/inspection.py b/src/cubed/array_api/inspection.py similarity index 100% rename from cubed/array_api/inspection.py rename to src/cubed/array_api/inspection.py diff --git a/cubed/array_api/linalg.py b/src/cubed/array_api/linalg.py similarity index 100% rename from cubed/array_api/linalg.py rename to src/cubed/array_api/linalg.py diff --git a/cubed/array_api/linear_algebra_functions.py b/src/cubed/array_api/linear_algebra_functions.py similarity index 100% rename from cubed/array_api/linear_algebra_functions.py rename to src/cubed/array_api/linear_algebra_functions.py diff --git a/cubed/array_api/manipulation_functions.py b/src/cubed/array_api/manipulation_functions.py similarity index 100% rename from cubed/array_api/manipulation_functions.py rename to src/cubed/array_api/manipulation_functions.py diff --git a/cubed/array_api/searching_functions.py b/src/cubed/array_api/searching_functions.py similarity index 100% rename from cubed/array_api/searching_functions.py rename to src/cubed/array_api/searching_functions.py diff --git a/cubed/array_api/statistical_functions.py b/src/cubed/array_api/statistical_functions.py similarity index 100% rename from cubed/array_api/statistical_functions.py rename to src/cubed/array_api/statistical_functions.py diff --git a/cubed/array_api/utility_functions.py b/src/cubed/array_api/utility_functions.py similarity index 100% rename from cubed/array_api/utility_functions.py rename to src/cubed/array_api/utility_functions.py diff --git a/cubed/backend_array_api.py b/src/cubed/backend_array_api.py similarity index 100% rename from cubed/backend_array_api.py rename to src/cubed/backend_array_api.py diff --git a/cubed/core/__init__.py b/src/cubed/core/__init__.py similarity index 100% rename from cubed/core/__init__.py rename to src/cubed/core/__init__.py diff --git a/cubed/core/array.py b/src/cubed/core/array.py similarity index 100% rename from cubed/core/array.py rename to src/cubed/core/array.py diff --git a/cubed/core/groupby.py b/src/cubed/core/groupby.py similarity index 100% rename from cubed/core/groupby.py rename to src/cubed/core/groupby.py diff --git a/cubed/core/gufunc.py b/src/cubed/core/gufunc.py similarity index 100% rename from cubed/core/gufunc.py rename to src/cubed/core/gufunc.py diff --git a/cubed/core/indexing.py b/src/cubed/core/indexing.py similarity index 100% rename from cubed/core/indexing.py rename to src/cubed/core/indexing.py diff --git a/cubed/core/ops.py b/src/cubed/core/ops.py similarity index 100% rename from cubed/core/ops.py rename to src/cubed/core/ops.py diff --git a/cubed/core/optimization.py b/src/cubed/core/optimization.py similarity index 100% rename from cubed/core/optimization.py rename to src/cubed/core/optimization.py diff --git a/cubed/core/plan.py b/src/cubed/core/plan.py similarity index 100% rename from cubed/core/plan.py rename to src/cubed/core/plan.py diff --git a/cubed/diagnostics/__init__.py b/src/cubed/diagnostics/__init__.py similarity index 100% rename from cubed/diagnostics/__init__.py rename to src/cubed/diagnostics/__init__.py diff --git a/cubed/diagnostics/history.py b/src/cubed/diagnostics/history.py similarity index 100% rename from cubed/diagnostics/history.py rename to src/cubed/diagnostics/history.py diff --git a/cubed/diagnostics/mem_usage.py b/src/cubed/diagnostics/mem_usage.py similarity index 100% rename from cubed/diagnostics/mem_usage.py rename to src/cubed/diagnostics/mem_usage.py diff --git a/cubed/diagnostics/mem_warn.py b/src/cubed/diagnostics/mem_warn.py similarity index 100% rename from cubed/diagnostics/mem_warn.py rename to src/cubed/diagnostics/mem_warn.py diff --git a/cubed/diagnostics/memray.py b/src/cubed/diagnostics/memray.py similarity index 100% rename from cubed/diagnostics/memray.py rename to src/cubed/diagnostics/memray.py diff --git a/cubed/diagnostics/rich.py b/src/cubed/diagnostics/rich.py similarity index 100% rename from cubed/diagnostics/rich.py rename to src/cubed/diagnostics/rich.py diff --git a/cubed/diagnostics/timeline.py b/src/cubed/diagnostics/timeline.py similarity index 100% rename from cubed/diagnostics/timeline.py rename to src/cubed/diagnostics/timeline.py diff --git a/cubed/diagnostics/tqdm.py b/src/cubed/diagnostics/tqdm.py similarity index 100% rename from cubed/diagnostics/tqdm.py rename to src/cubed/diagnostics/tqdm.py diff --git a/cubed/icechunk.py b/src/cubed/icechunk.py similarity index 100% rename from cubed/icechunk.py rename to src/cubed/icechunk.py diff --git a/cubed/primitive/__init__.py b/src/cubed/primitive/__init__.py similarity index 100% rename from cubed/primitive/__init__.py rename to src/cubed/primitive/__init__.py diff --git a/cubed/primitive/blockwise.py b/src/cubed/primitive/blockwise.py similarity index 100% rename from cubed/primitive/blockwise.py rename to src/cubed/primitive/blockwise.py diff --git a/cubed/primitive/memory.py b/src/cubed/primitive/memory.py similarity index 100% rename from cubed/primitive/memory.py rename to src/cubed/primitive/memory.py diff --git a/cubed/primitive/rechunk.py b/src/cubed/primitive/rechunk.py similarity index 100% rename from cubed/primitive/rechunk.py rename to src/cubed/primitive/rechunk.py diff --git a/cubed/primitive/types.py b/src/cubed/primitive/types.py similarity index 100% rename from cubed/primitive/types.py rename to src/cubed/primitive/types.py diff --git a/cubed/random.py b/src/cubed/random.py similarity index 100% rename from cubed/random.py rename to src/cubed/random.py diff --git a/cubed/runtime/__init__.py b/src/cubed/runtime/__init__.py similarity index 100% rename from cubed/runtime/__init__.py rename to src/cubed/runtime/__init__.py diff --git a/cubed/runtime/asyncio.py b/src/cubed/runtime/asyncio.py similarity index 100% rename from cubed/runtime/asyncio.py rename to src/cubed/runtime/asyncio.py diff --git a/cubed/runtime/backup.py b/src/cubed/runtime/backup.py similarity index 100% rename from cubed/runtime/backup.py rename to src/cubed/runtime/backup.py diff --git a/cubed/runtime/create.py b/src/cubed/runtime/create.py similarity index 100% rename from cubed/runtime/create.py rename to src/cubed/runtime/create.py diff --git a/cubed/runtime/executors/__init__.py b/src/cubed/runtime/executors/__init__.py similarity index 100% rename from cubed/runtime/executors/__init__.py rename to src/cubed/runtime/executors/__init__.py diff --git a/cubed/runtime/executors/beam.py b/src/cubed/runtime/executors/beam.py similarity index 100% rename from cubed/runtime/executors/beam.py rename to src/cubed/runtime/executors/beam.py diff --git a/cubed/runtime/executors/coiled.py b/src/cubed/runtime/executors/coiled.py similarity index 100% rename from cubed/runtime/executors/coiled.py rename to src/cubed/runtime/executors/coiled.py diff --git a/cubed/runtime/executors/dask.py b/src/cubed/runtime/executors/dask.py similarity index 100% rename from cubed/runtime/executors/dask.py rename to src/cubed/runtime/executors/dask.py diff --git a/cubed/runtime/executors/lithops.py b/src/cubed/runtime/executors/lithops.py similarity index 100% rename from cubed/runtime/executors/lithops.py rename to src/cubed/runtime/executors/lithops.py diff --git a/cubed/runtime/executors/local.py b/src/cubed/runtime/executors/local.py similarity index 100% rename from cubed/runtime/executors/local.py rename to src/cubed/runtime/executors/local.py diff --git a/cubed/runtime/executors/modal.py b/src/cubed/runtime/executors/modal.py similarity index 100% rename from cubed/runtime/executors/modal.py rename to src/cubed/runtime/executors/modal.py diff --git a/cubed/runtime/executors/ray.py b/src/cubed/runtime/executors/ray.py similarity index 100% rename from cubed/runtime/executors/ray.py rename to src/cubed/runtime/executors/ray.py diff --git a/cubed/runtime/executors/spark.py b/src/cubed/runtime/executors/spark.py similarity index 100% rename from cubed/runtime/executors/spark.py rename to src/cubed/runtime/executors/spark.py diff --git a/cubed/runtime/pipeline.py b/src/cubed/runtime/pipeline.py similarity index 100% rename from cubed/runtime/pipeline.py rename to src/cubed/runtime/pipeline.py diff --git a/cubed/runtime/types.py b/src/cubed/runtime/types.py similarity index 100% rename from cubed/runtime/types.py rename to src/cubed/runtime/types.py diff --git a/cubed/runtime/utils.py b/src/cubed/runtime/utils.py similarity index 100% rename from cubed/runtime/utils.py rename to src/cubed/runtime/utils.py diff --git a/cubed/spec.py b/src/cubed/spec.py similarity index 100% rename from cubed/spec.py rename to src/cubed/spec.py diff --git a/cubed/storage/__init__.py b/src/cubed/storage/__init__.py similarity index 100% rename from cubed/storage/__init__.py rename to src/cubed/storage/__init__.py diff --git a/cubed/storage/backend.py b/src/cubed/storage/backend.py similarity index 100% rename from cubed/storage/backend.py rename to src/cubed/storage/backend.py diff --git a/cubed/storage/backends/__init__.py b/src/cubed/storage/backends/__init__.py similarity index 100% rename from cubed/storage/backends/__init__.py rename to src/cubed/storage/backends/__init__.py diff --git a/cubed/storage/backends/tensorstore.py b/src/cubed/storage/backends/tensorstore.py similarity index 100% rename from cubed/storage/backends/tensorstore.py rename to src/cubed/storage/backends/tensorstore.py diff --git a/cubed/storage/backends/zarr_python.py b/src/cubed/storage/backends/zarr_python.py similarity index 100% rename from cubed/storage/backends/zarr_python.py rename to src/cubed/storage/backends/zarr_python.py diff --git a/cubed/storage/backends/zarr_python_v3.py b/src/cubed/storage/backends/zarr_python_v3.py similarity index 100% rename from cubed/storage/backends/zarr_python_v3.py rename to src/cubed/storage/backends/zarr_python_v3.py diff --git a/cubed/storage/types.py b/src/cubed/storage/types.py similarity index 100% rename from cubed/storage/types.py rename to src/cubed/storage/types.py diff --git a/cubed/storage/virtual.py b/src/cubed/storage/virtual.py similarity index 100% rename from cubed/storage/virtual.py rename to src/cubed/storage/virtual.py diff --git a/cubed/storage/zarr.py b/src/cubed/storage/zarr.py similarity index 100% rename from cubed/storage/zarr.py rename to src/cubed/storage/zarr.py diff --git a/cubed/tests/__init__.py b/src/cubed/tests/__init__.py similarity index 100% rename from cubed/tests/__init__.py rename to src/cubed/tests/__init__.py diff --git a/cubed/tests/array/test_nan_functions.py b/src/cubed/tests/array/test_nan_functions.py similarity index 100% rename from cubed/tests/array/test_nan_functions.py rename to src/cubed/tests/array/test_nan_functions.py diff --git a/cubed/tests/array/test_overlap.py b/src/cubed/tests/array/test_overlap.py similarity index 100% rename from cubed/tests/array/test_overlap.py rename to src/cubed/tests/array/test_overlap.py diff --git a/cubed/tests/array/test_pad.py b/src/cubed/tests/array/test_pad.py similarity index 100% rename from cubed/tests/array/test_pad.py rename to src/cubed/tests/array/test_pad.py diff --git a/cubed/tests/primitive/__init__.py b/src/cubed/tests/primitive/__init__.py similarity index 100% rename from cubed/tests/primitive/__init__.py rename to src/cubed/tests/primitive/__init__.py diff --git a/cubed/tests/primitive/test_blockwise.py b/src/cubed/tests/primitive/test_blockwise.py similarity index 100% rename from cubed/tests/primitive/test_blockwise.py rename to src/cubed/tests/primitive/test_blockwise.py diff --git a/cubed/tests/primitive/test_blockwise_fusion.py b/src/cubed/tests/primitive/test_blockwise_fusion.py similarity index 100% rename from cubed/tests/primitive/test_blockwise_fusion.py rename to src/cubed/tests/primitive/test_blockwise_fusion.py diff --git a/cubed/tests/primitive/test_memory.py b/src/cubed/tests/primitive/test_memory.py similarity index 100% rename from cubed/tests/primitive/test_memory.py rename to src/cubed/tests/primitive/test_memory.py diff --git a/cubed/tests/primitive/test_rechunk.py b/src/cubed/tests/primitive/test_rechunk.py similarity index 100% rename from cubed/tests/primitive/test_rechunk.py rename to src/cubed/tests/primitive/test_rechunk.py diff --git a/cubed/tests/runtime/__init__.py b/src/cubed/tests/runtime/__init__.py similarity index 100% rename from cubed/tests/runtime/__init__.py rename to src/cubed/tests/runtime/__init__.py diff --git a/cubed/tests/runtime/test_backup.py b/src/cubed/tests/runtime/test_backup.py similarity index 100% rename from cubed/tests/runtime/test_backup.py rename to src/cubed/tests/runtime/test_backup.py diff --git a/cubed/tests/runtime/test_dask.py b/src/cubed/tests/runtime/test_dask.py similarity index 100% rename from cubed/tests/runtime/test_dask.py rename to src/cubed/tests/runtime/test_dask.py diff --git a/cubed/tests/runtime/test_lithops.py b/src/cubed/tests/runtime/test_lithops.py similarity index 100% rename from cubed/tests/runtime/test_lithops.py rename to src/cubed/tests/runtime/test_lithops.py diff --git a/cubed/tests/runtime/test_local.py b/src/cubed/tests/runtime/test_local.py similarity index 100% rename from cubed/tests/runtime/test_local.py rename to src/cubed/tests/runtime/test_local.py diff --git a/cubed/tests/runtime/test_modal.py b/src/cubed/tests/runtime/test_modal.py similarity index 100% rename from cubed/tests/runtime/test_modal.py rename to src/cubed/tests/runtime/test_modal.py diff --git a/cubed/tests/runtime/utils.py b/src/cubed/tests/runtime/utils.py similarity index 100% rename from cubed/tests/runtime/utils.py rename to src/cubed/tests/runtime/utils.py diff --git a/cubed/tests/storage/__init__.py b/src/cubed/tests/storage/__init__.py similarity index 100% rename from cubed/tests/storage/__init__.py rename to src/cubed/tests/storage/__init__.py diff --git a/cubed/tests/storage/test_virtual.py b/src/cubed/tests/storage/test_virtual.py similarity index 100% rename from cubed/tests/storage/test_virtual.py rename to src/cubed/tests/storage/test_virtual.py diff --git a/cubed/tests/storage/test_zarr.py b/src/cubed/tests/storage/test_zarr.py similarity index 100% rename from cubed/tests/storage/test_zarr.py rename to src/cubed/tests/storage/test_zarr.py diff --git a/cubed/tests/test_array_api.py b/src/cubed/tests/test_array_api.py similarity index 100% rename from cubed/tests/test_array_api.py rename to src/cubed/tests/test_array_api.py diff --git a/cubed/tests/test_core.py b/src/cubed/tests/test_core.py similarity index 100% rename from cubed/tests/test_core.py rename to src/cubed/tests/test_core.py diff --git a/cubed/tests/test_executor_features.py b/src/cubed/tests/test_executor_features.py similarity index 100% rename from cubed/tests/test_executor_features.py rename to src/cubed/tests/test_executor_features.py diff --git a/cubed/tests/test_groupby.py b/src/cubed/tests/test_groupby.py similarity index 100% rename from cubed/tests/test_groupby.py rename to src/cubed/tests/test_groupby.py diff --git a/cubed/tests/test_gufunc.py b/src/cubed/tests/test_gufunc.py similarity index 100% rename from cubed/tests/test_gufunc.py rename to src/cubed/tests/test_gufunc.py diff --git a/cubed/tests/test_html.py b/src/cubed/tests/test_html.py similarity index 100% rename from cubed/tests/test_html.py rename to src/cubed/tests/test_html.py diff --git a/cubed/tests/test_icechunk.py b/src/cubed/tests/test_icechunk.py similarity index 100% rename from cubed/tests/test_icechunk.py rename to src/cubed/tests/test_icechunk.py diff --git a/cubed/tests/test_indexing.py b/src/cubed/tests/test_indexing.py similarity index 100% rename from cubed/tests/test_indexing.py rename to src/cubed/tests/test_indexing.py diff --git a/cubed/tests/test_inspection.py b/src/cubed/tests/test_inspection.py similarity index 100% rename from cubed/tests/test_inspection.py rename to src/cubed/tests/test_inspection.py diff --git a/cubed/tests/test_linalg.py b/src/cubed/tests/test_linalg.py similarity index 100% rename from cubed/tests/test_linalg.py rename to src/cubed/tests/test_linalg.py diff --git a/cubed/tests/test_mem_utilization.py b/src/cubed/tests/test_mem_utilization.py similarity index 100% rename from cubed/tests/test_mem_utilization.py rename to src/cubed/tests/test_mem_utilization.py diff --git a/cubed/tests/test_mem_utilization_rechunk.py b/src/cubed/tests/test_mem_utilization_rechunk.py similarity index 100% rename from cubed/tests/test_mem_utilization_rechunk.py rename to src/cubed/tests/test_mem_utilization_rechunk.py diff --git a/cubed/tests/test_ops.py b/src/cubed/tests/test_ops.py similarity index 100% rename from cubed/tests/test_ops.py rename to src/cubed/tests/test_ops.py diff --git a/cubed/tests/test_optimization.py b/src/cubed/tests/test_optimization.py similarity index 100% rename from cubed/tests/test_optimization.py rename to src/cubed/tests/test_optimization.py diff --git a/cubed/tests/test_random.py b/src/cubed/tests/test_random.py similarity index 100% rename from cubed/tests/test_random.py rename to src/cubed/tests/test_random.py diff --git a/cubed/tests/test_rechunk.py b/src/cubed/tests/test_rechunk.py similarity index 100% rename from cubed/tests/test_rechunk.py rename to src/cubed/tests/test_rechunk.py diff --git a/cubed/tests/test_types.py b/src/cubed/tests/test_types.py similarity index 100% rename from cubed/tests/test_types.py rename to src/cubed/tests/test_types.py diff --git a/cubed/tests/test_utils.py b/src/cubed/tests/test_utils.py similarity index 100% rename from cubed/tests/test_utils.py rename to src/cubed/tests/test_utils.py diff --git a/cubed/tests/utils.py b/src/cubed/tests/utils.py similarity index 100% rename from cubed/tests/utils.py rename to src/cubed/tests/utils.py diff --git a/cubed/types.py b/src/cubed/types.py similarity index 100% rename from cubed/types.py rename to src/cubed/types.py diff --git a/cubed/utils.py b/src/cubed/utils.py similarity index 100% rename from cubed/utils.py rename to src/cubed/utils.py diff --git a/cubed/vendor/__init__.py b/src/cubed/vendor/__init__.py similarity index 100% rename from cubed/vendor/__init__.py rename to src/cubed/vendor/__init__.py diff --git a/cubed/vendor/dask/LICENSE.txt b/src/cubed/vendor/dask/LICENSE.txt similarity index 100% rename from cubed/vendor/dask/LICENSE.txt rename to src/cubed/vendor/dask/LICENSE.txt diff --git a/cubed/vendor/dask/__init__.py b/src/cubed/vendor/dask/__init__.py similarity index 100% rename from cubed/vendor/dask/__init__.py rename to src/cubed/vendor/dask/__init__.py diff --git a/cubed/vendor/dask/array/__init__.py b/src/cubed/vendor/dask/array/__init__.py similarity index 100% rename from cubed/vendor/dask/array/__init__.py rename to src/cubed/vendor/dask/array/__init__.py diff --git a/cubed/vendor/dask/array/core.py b/src/cubed/vendor/dask/array/core.py similarity index 100% rename from cubed/vendor/dask/array/core.py rename to src/cubed/vendor/dask/array/core.py diff --git a/cubed/vendor/dask/array/core.pyi b/src/cubed/vendor/dask/array/core.pyi similarity index 100% rename from cubed/vendor/dask/array/core.pyi rename to src/cubed/vendor/dask/array/core.pyi diff --git a/cubed/vendor/dask/array/gufunc.py b/src/cubed/vendor/dask/array/gufunc.py similarity index 100% rename from cubed/vendor/dask/array/gufunc.py rename to src/cubed/vendor/dask/array/gufunc.py diff --git a/cubed/vendor/dask/array/overlap.py b/src/cubed/vendor/dask/array/overlap.py similarity index 100% rename from cubed/vendor/dask/array/overlap.py rename to src/cubed/vendor/dask/array/overlap.py diff --git a/cubed/vendor/dask/array/reshape.py b/src/cubed/vendor/dask/array/reshape.py similarity index 100% rename from cubed/vendor/dask/array/reshape.py rename to src/cubed/vendor/dask/array/reshape.py diff --git a/cubed/vendor/dask/array/svg.py b/src/cubed/vendor/dask/array/svg.py similarity index 100% rename from cubed/vendor/dask/array/svg.py rename to src/cubed/vendor/dask/array/svg.py diff --git a/cubed/vendor/dask/array/utils.py b/src/cubed/vendor/dask/array/utils.py similarity index 100% rename from cubed/vendor/dask/array/utils.py rename to src/cubed/vendor/dask/array/utils.py diff --git a/cubed/vendor/dask/blockwise.py b/src/cubed/vendor/dask/blockwise.py similarity index 100% rename from cubed/vendor/dask/blockwise.py rename to src/cubed/vendor/dask/blockwise.py diff --git a/cubed/vendor/dask/core.py b/src/cubed/vendor/dask/core.py similarity index 100% rename from cubed/vendor/dask/core.py rename to src/cubed/vendor/dask/core.py diff --git a/cubed/vendor/dask/utils.py b/src/cubed/vendor/dask/utils.py similarity index 100% rename from cubed/vendor/dask/utils.py rename to src/cubed/vendor/dask/utils.py diff --git a/cubed/vendor/dask/widgets/__init__.py b/src/cubed/vendor/dask/widgets/__init__.py similarity index 100% rename from cubed/vendor/dask/widgets/__init__.py rename to src/cubed/vendor/dask/widgets/__init__.py diff --git a/cubed/vendor/dask/widgets/templates/array.html.j2 b/src/cubed/vendor/dask/widgets/templates/array.html.j2 similarity index 100% rename from cubed/vendor/dask/widgets/templates/array.html.j2 rename to src/cubed/vendor/dask/widgets/templates/array.html.j2 diff --git a/cubed/vendor/dask/widgets/widgets.py b/src/cubed/vendor/dask/widgets/widgets.py similarity index 100% rename from cubed/vendor/dask/widgets/widgets.py rename to src/cubed/vendor/dask/widgets/widgets.py diff --git a/cubed/vendor/rechunker/LICENSE b/src/cubed/vendor/rechunker/LICENSE similarity index 100% rename from cubed/vendor/rechunker/LICENSE rename to src/cubed/vendor/rechunker/LICENSE diff --git a/cubed/vendor/rechunker/__init__.py b/src/cubed/vendor/rechunker/__init__.py similarity index 100% rename from cubed/vendor/rechunker/__init__.py rename to src/cubed/vendor/rechunker/__init__.py diff --git a/cubed/vendor/rechunker/algorithm.py b/src/cubed/vendor/rechunker/algorithm.py similarity index 100% rename from cubed/vendor/rechunker/algorithm.py rename to src/cubed/vendor/rechunker/algorithm.py diff --git a/cubed/vendor/rechunker/compat.py b/src/cubed/vendor/rechunker/compat.py similarity index 100% rename from cubed/vendor/rechunker/compat.py rename to src/cubed/vendor/rechunker/compat.py diff --git a/cubed/vendor/rechunker/types.py b/src/cubed/vendor/rechunker/types.py similarity index 100% rename from cubed/vendor/rechunker/types.py rename to src/cubed/vendor/rechunker/types.py From 8bdf06270371912b85e3182130cb0966975d60bd Mon Sep 17 00:00:00 2001 From: Lindsey Gray Date: Wed, 16 Jul 2025 11:20:09 -0700 Subject: [PATCH 2/2] pre-commit linting --- .gitignore | 3 +++ src/cubed/vendor/dask/array/core.py | 4 ++-- src/cubed/vendor/dask/array/core.pyi | 10 ++-------- src/cubed/vendor/dask/blockwise.py | 5 ----- src/cubed/vendor/rechunker/algorithm.py | 3 ++- src/cubed/vendor/rechunker/types.py | 9 +++------ 6 files changed, 12 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index 6e99b9442..334308b0f 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,9 @@ MANIFEST *.manifest *.spec +# scikit-build-core dynamic version +src/cubed/version.py + # Installer logs pip-log.txt pip-delete-this-directory.txt diff --git a/src/cubed/vendor/dask/array/core.py b/src/cubed/vendor/dask/array/core.py index f92c8deca..7188795a8 100644 --- a/src/cubed/vendor/dask/array/core.py +++ b/src/cubed/vendor/dask/array/core.py @@ -4,7 +4,7 @@ from numbers import Number import numpy as np -from tlz import first, frequencies +from tlz import frequencies from ..utils import is_integer, parse_bytes @@ -312,7 +312,7 @@ def auto_chunks(chunks, shape, limit, dtype, previous_chunks=None): return tuple(chunks) if limit is None: - limit = "128MiB" # config.get("array.chunk-size") + limit = "128MiB" # config.get("array.chunk-size") if isinstance(limit, str): limit = parse_bytes(limit) diff --git a/src/cubed/vendor/dask/array/core.pyi b/src/cubed/vendor/dask/array/core.pyi index c9dfcaf48..e15771b58 100644 --- a/src/cubed/vendor/dask/array/core.pyi +++ b/src/cubed/vendor/dask/array/core.pyi @@ -3,18 +3,12 @@ from typing import List, Optional, Tuple from cubed.types import T_Chunks, T_DType, T_RectangularChunks, T_Shape def _check_regular_chunks(chunkset: T_RectangularChunks) -> bool: ... - -def broadcast_chunks( - *chunkss -) -> Tuple[Tuple[int, ...]]: ... - +def broadcast_chunks(*chunkss) -> Tuple[Tuple[int, ...]]: ... def common_blockdim(blockdims: List[Tuple[int, ...]]) -> Tuple[int, ...]: ... - def normalize_chunks( chunks: T_Chunks, shape: Optional[T_Shape] = None, limit: Optional[int] = None, dtype: Optional[T_DType] = None, previous_chunks: Optional[T_RectangularChunks] = None, -) -> T_RectangularChunks: - ... +) -> T_RectangularChunks: ... diff --git a/src/cubed/vendor/dask/blockwise.py b/src/cubed/vendor/dask/blockwise.py index ab28f79c8..8075afb4b 100644 --- a/src/cubed/vendor/dask/blockwise.py +++ b/src/cubed/vendor/dask/blockwise.py @@ -358,11 +358,6 @@ def lol_product(head, values): return lol_product(head + (values[0],), values[1:]) - - - - - def broadcast_dimensions(argpairs, numblocks, sentinels=(1, (1,)), consolidate=None): """Find block dimensions from arguments diff --git a/src/cubed/vendor/rechunker/algorithm.py b/src/cubed/vendor/rechunker/algorithm.py index 905e3e326..8590cf283 100644 --- a/src/cubed/vendor/rechunker/algorithm.py +++ b/src/cubed/vendor/rechunker/algorithm.py @@ -1,4 +1,5 @@ """Core rechunking algorithm stuff.""" + import logging import warnings from math import ceil, floor, prod @@ -270,7 +271,6 @@ def multistage_rechunking_plan( # increase the number of stages until min_mem is exceeded for stage_count in range(1, MAX_STAGES): - stage_chunks = calculate_stage_chunks(read_chunks, write_chunks, stage_count) pre_chunks = [read_chunks] + stage_chunks post_chunks = stage_chunks + [write_chunks] @@ -297,6 +297,7 @@ def multistage_rechunking_plan( f"Consider decreasing min_mem ({min_mem}) or increasing " f"({max_mem}) to find a more efficient plan.", category=ExcessiveIOWarning, + stacklevel=2, ) assert prev_plan is not None return prev_plan diff --git a/src/cubed/vendor/rechunker/types.py b/src/cubed/vendor/rechunker/types.py index e1ef210a5..4c4c5b1aa 100644 --- a/src/cubed/vendor/rechunker/types.py +++ b/src/cubed/vendor/rechunker/types.py @@ -1,4 +1,5 @@ """Types definitions used by executors.""" + from dataclasses import dataclass from typing import ( Any, @@ -61,12 +62,8 @@ class CopySpec(NamedTuple): Config = Any # TODO: better typing for config -SingleArgumentStageFunction = Callable[ - [Any, NamedArg(type=Any, name="config")], None -] # noqa: F821 -NoArgumentStageFunction = Callable[ - [NamedArg(type=Any, name="config")], None -] # noqa: F821 +SingleArgumentStageFunction = Callable[[Any, NamedArg(type=Any, name="config")], None] # noqa: F821 +NoArgumentStageFunction = Callable[[NamedArg(type=Any, name="config")], None] # noqa: F821 StageFunction = Union[NoArgumentStageFunction, SingleArgumentStageFunction]