dvt-dask 2026.3.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (713) hide show
  1. dvt_dask-2026.3.11/.codex/config.toml +18 -0
  2. dvt_dask-2026.3.11/.codex/skills/experiment-mapping-lab/SKILL.md +64 -0
  3. dvt_dask-2026.3.11/.codex/skills/experiment-mapping-lab/agents/openai.yaml +4 -0
  4. dvt_dask-2026.3.11/.codex/skills/experiment-mapping-lab/scripts/create_experiment.py +111 -0
  5. dvt_dask-2026.3.11/.git-blame-ignore-revs +24 -0
  6. dvt_dask-2026.3.11/.github/CONTRIBUTING.md +2 -0
  7. dvt_dask-2026.3.11/.github/PULL_REQUEST_TEMPLATE.md +3 -0
  8. dvt_dask-2026.3.11/.github/dependabot.yml +9 -0
  9. dvt_dask-2026.3.11/.github/release-drafter.yml +13 -0
  10. dvt_dask-2026.3.11/.github/release.yml +26 -0
  11. dvt_dask-2026.3.11/.github/workflows/additional.yml +32 -0
  12. dvt_dask-2026.3.11/.github/workflows/conda.yml +64 -0
  13. dvt_dask-2026.3.11/.github/workflows/label-all.yml +14 -0
  14. dvt_dask-2026.3.11/.github/workflows/pre-commit.yml +18 -0
  15. dvt_dask-2026.3.11/.github/workflows/publish-test-results.yaml +50 -0
  16. dvt_dask-2026.3.11/.github/workflows/release-drafter.yml +32 -0
  17. dvt_dask-2026.3.11/.github/workflows/release-publish.yml +33 -0
  18. dvt_dask-2026.3.11/.github/workflows/stale-bot.yaml +20 -0
  19. dvt_dask-2026.3.11/.github/workflows/test-report.yaml +66 -0
  20. dvt_dask-2026.3.11/.github/workflows/tests.yml +174 -0
  21. dvt_dask-2026.3.11/.github/workflows/upstream.yml +87 -0
  22. dvt_dask-2026.3.11/.gitignore +33 -0
  23. dvt_dask-2026.3.11/.pre-commit-config.yaml +43 -0
  24. dvt_dask-2026.3.11/.readthedocs.yaml +17 -0
  25. dvt_dask-2026.3.11/AGENTS.md +47 -0
  26. dvt_dask-2026.3.11/CONTRIBUTING.md +3 -0
  27. dvt_dask-2026.3.11/LICENSE.txt +29 -0
  28. dvt_dask-2026.3.11/MANIFEST.in +12 -0
  29. dvt_dask-2026.3.11/PKG-INFO +93 -0
  30. dvt_dask-2026.3.11/README.rst +30 -0
  31. dvt_dask-2026.3.11/codecov.yml +27 -0
  32. dvt_dask-2026.3.11/conftest.py +106 -0
  33. dvt_dask-2026.3.11/continuous_integration/environment-3.10.yaml +76 -0
  34. dvt_dask-2026.3.11/continuous_integration/environment-3.11.yaml +75 -0
  35. dvt_dask-2026.3.11/continuous_integration/environment-3.12.yaml +76 -0
  36. dvt_dask-2026.3.11/continuous_integration/environment-3.13.yaml +72 -0
  37. dvt_dask-2026.3.11/continuous_integration/environment-3.14.yaml +71 -0
  38. dvt_dask-2026.3.11/continuous_integration/environment-3.14t.yaml +90 -0
  39. dvt_dask-2026.3.11/continuous_integration/environment-mindeps-array.yaml +24 -0
  40. dvt_dask-2026.3.11/continuous_integration/environment-mindeps-dataframe.yaml +26 -0
  41. dvt_dask-2026.3.11/continuous_integration/environment-mindeps-distributed.yaml +26 -0
  42. dvt_dask-2026.3.11/continuous_integration/environment-mindeps-non-optional.yaml +22 -0
  43. dvt_dask-2026.3.11/continuous_integration/environment-mindeps-optional.yaml +65 -0
  44. dvt_dask-2026.3.11/continuous_integration/recipe/meta.yaml +59 -0
  45. dvt_dask-2026.3.11/continuous_integration/scripts/install.sh +55 -0
  46. dvt_dask-2026.3.11/continuous_integration/scripts/run_tests.sh +23 -0
  47. dvt_dask-2026.3.11/dask/__init__.py +24 -0
  48. dvt_dask-2026.3.11/dask/__main__.py +11 -0
  49. dvt_dask-2026.3.11/dask/_collections.py +10 -0
  50. dvt_dask-2026.3.11/dask/_compatibility.py +133 -0
  51. dvt_dask-2026.3.11/dask/_dispatch.py +5 -0
  52. dvt_dask-2026.3.11/dask/_expr.py +1452 -0
  53. dvt_dask-2026.3.11/dask/_pandas_compat.py +163 -0
  54. dvt_dask-2026.3.11/dask/_task_spec.py +1316 -0
  55. dvt_dask-2026.3.11/dask/_version.py +24 -0
  56. dvt_dask-2026.3.11/dask/array/NUMPY_LICENSE.txt +30 -0
  57. dvt_dask-2026.3.11/dask/array/__init__.py +931 -0
  58. dvt_dask-2026.3.11/dask/array/_array_expr/__init__.py +34 -0
  59. dvt_dask-2026.3.11/dask/array/_array_expr/_backends.py +128 -0
  60. dvt_dask-2026.3.11/dask/array/_array_expr/_blockwise.py +373 -0
  61. dvt_dask-2026.3.11/dask/array/_array_expr/_collection.py +1581 -0
  62. dvt_dask-2026.3.11/dask/array/_array_expr/_creation.py +583 -0
  63. dvt_dask-2026.3.11/dask/array/_array_expr/_expr.py +290 -0
  64. dvt_dask-2026.3.11/dask/array/_array_expr/_gufunc.py +857 -0
  65. dvt_dask-2026.3.11/dask/array/_array_expr/_io.py +136 -0
  66. dvt_dask-2026.3.11/dask/array/_array_expr/_map_blocks.py +491 -0
  67. dvt_dask-2026.3.11/dask/array/_array_expr/_overlap.py +909 -0
  68. dvt_dask-2026.3.11/dask/array/_array_expr/_rechunk.py +200 -0
  69. dvt_dask-2026.3.11/dask/array/_array_expr/_reductions.py +366 -0
  70. dvt_dask-2026.3.11/dask/array/_array_expr/_shuffle.py +216 -0
  71. dvt_dask-2026.3.11/dask/array/_array_expr/_slicing.py +490 -0
  72. dvt_dask-2026.3.11/dask/array/_array_expr/_ufunc.py +345 -0
  73. dvt_dask-2026.3.11/dask/array/_array_expr/_utils.py +74 -0
  74. dvt_dask-2026.3.11/dask/array/_array_expr/random.py +1127 -0
  75. dvt_dask-2026.3.11/dask/array/_array_expr/tests/__init__.py +0 -0
  76. dvt_dask-2026.3.11/dask/array/_array_expr/tests/test_collection.py +134 -0
  77. dvt_dask-2026.3.11/dask/array/_array_expr/tests/test_config.py +29 -0
  78. dvt_dask-2026.3.11/dask/array/_reductions_generic.py +342 -0
  79. dvt_dask-2026.3.11/dask/array/_shuffle.py +328 -0
  80. dvt_dask-2026.3.11/dask/array/api.py +3 -0
  81. dvt_dask-2026.3.11/dask/array/backends.py +440 -0
  82. dvt_dask-2026.3.11/dask/array/blockwise.py +312 -0
  83. dvt_dask-2026.3.11/dask/array/chunk.py +434 -0
  84. dvt_dask-2026.3.11/dask/array/chunk_types.py +157 -0
  85. dvt_dask-2026.3.11/dask/array/core.py +6277 -0
  86. dvt_dask-2026.3.11/dask/array/creation.py +1301 -0
  87. dvt_dask-2026.3.11/dask/array/cupy_entry_point.py +72 -0
  88. dvt_dask-2026.3.11/dask/array/dispatch.py +21 -0
  89. dvt_dask-2026.3.11/dask/array/einsumfuncs.py +295 -0
  90. dvt_dask-2026.3.11/dask/array/fft.py +316 -0
  91. dvt_dask-2026.3.11/dask/array/gufunc.py +821 -0
  92. dvt_dask-2026.3.11/dask/array/image.py +71 -0
  93. dvt_dask-2026.3.11/dask/array/lib/__init__.py +3 -0
  94. dvt_dask-2026.3.11/dask/array/lib/stride_tricks.py +3 -0
  95. dvt_dask-2026.3.11/dask/array/linalg.py +1547 -0
  96. dvt_dask-2026.3.11/dask/array/ma.py +228 -0
  97. dvt_dask-2026.3.11/dask/array/numpy_compat.py +191 -0
  98. dvt_dask-2026.3.11/dask/array/optimization.py +318 -0
  99. dvt_dask-2026.3.11/dask/array/overlap.py +943 -0
  100. dvt_dask-2026.3.11/dask/array/percentile.py +341 -0
  101. dvt_dask-2026.3.11/dask/array/random.py +1113 -0
  102. dvt_dask-2026.3.11/dask/array/rechunk.py +870 -0
  103. dvt_dask-2026.3.11/dask/array/reductions.py +1813 -0
  104. dvt_dask-2026.3.11/dask/array/reshape.py +592 -0
  105. dvt_dask-2026.3.11/dask/array/routines.py +2614 -0
  106. dvt_dask-2026.3.11/dask/array/slicing.py +2117 -0
  107. dvt_dask-2026.3.11/dask/array/stats.py +517 -0
  108. dvt_dask-2026.3.11/dask/array/svg.py +296 -0
  109. dvt_dask-2026.3.11/dask/array/tests/__init__.py +0 -0
  110. dvt_dask-2026.3.11/dask/array/tests/test_api.py +32 -0
  111. dvt_dask-2026.3.11/dask/array/tests/test_array_core.py +6180 -0
  112. dvt_dask-2026.3.11/dask/array/tests/test_array_expr_incompatible.py +31 -0
  113. dvt_dask-2026.3.11/dask/array/tests/test_array_function.py +265 -0
  114. dvt_dask-2026.3.11/dask/array/tests/test_array_utils.py +141 -0
  115. dvt_dask-2026.3.11/dask/array/tests/test_atop.py +886 -0
  116. dvt_dask-2026.3.11/dask/array/tests/test_chunk.py +133 -0
  117. dvt_dask-2026.3.11/dask/array/tests/test_creation.py +1115 -0
  118. dvt_dask-2026.3.11/dask/array/tests/test_cupy_core.py +677 -0
  119. dvt_dask-2026.3.11/dask/array/tests/test_cupy_creation.py +203 -0
  120. dvt_dask-2026.3.11/dask/array/tests/test_cupy_gufunc.py +26 -0
  121. dvt_dask-2026.3.11/dask/array/tests/test_cupy_linalg.py +425 -0
  122. dvt_dask-2026.3.11/dask/array/tests/test_cupy_overlap.py +132 -0
  123. dvt_dask-2026.3.11/dask/array/tests/test_cupy_percentile.py +84 -0
  124. dvt_dask-2026.3.11/dask/array/tests/test_cupy_random.py +217 -0
  125. dvt_dask-2026.3.11/dask/array/tests/test_cupy_reductions.py +79 -0
  126. dvt_dask-2026.3.11/dask/array/tests/test_cupy_routines.py +222 -0
  127. dvt_dask-2026.3.11/dask/array/tests/test_cupy_slicing.py +162 -0
  128. dvt_dask-2026.3.11/dask/array/tests/test_cupy_sparse.py +105 -0
  129. dvt_dask-2026.3.11/dask/array/tests/test_dispatch.py +292 -0
  130. dvt_dask-2026.3.11/dask/array/tests/test_fft.py +295 -0
  131. dvt_dask-2026.3.11/dask/array/tests/test_gufunc.py +725 -0
  132. dvt_dask-2026.3.11/dask/array/tests/test_image.py +54 -0
  133. dvt_dask-2026.3.11/dask/array/tests/test_linalg.py +1137 -0
  134. dvt_dask-2026.3.11/dask/array/tests/test_map_blocks.py +15 -0
  135. dvt_dask-2026.3.11/dask/array/tests/test_masked.py +505 -0
  136. dvt_dask-2026.3.11/dask/array/tests/test_numpy_compat.py +42 -0
  137. dvt_dask-2026.3.11/dask/array/tests/test_optimization.py +256 -0
  138. dvt_dask-2026.3.11/dask/array/tests/test_overlap.py +987 -0
  139. dvt_dask-2026.3.11/dask/array/tests/test_percentiles.py +132 -0
  140. dvt_dask-2026.3.11/dask/array/tests/test_random.py +447 -0
  141. dvt_dask-2026.3.11/dask/array/tests/test_rechunk.py +1251 -0
  142. dvt_dask-2026.3.11/dask/array/tests/test_reductions.py +1101 -0
  143. dvt_dask-2026.3.11/dask/array/tests/test_reshape.py +449 -0
  144. dvt_dask-2026.3.11/dask/array/tests/test_routines.py +2904 -0
  145. dvt_dask-2026.3.11/dask/array/tests/test_shuffle.py +154 -0
  146. dvt_dask-2026.3.11/dask/array/tests/test_slicing.py +1153 -0
  147. dvt_dask-2026.3.11/dask/array/tests/test_sparse.py +191 -0
  148. dvt_dask-2026.3.11/dask/array/tests/test_stats.py +179 -0
  149. dvt_dask-2026.3.11/dask/array/tests/test_svg.py +97 -0
  150. dvt_dask-2026.3.11/dask/array/tests/test_testing.py +21 -0
  151. dvt_dask-2026.3.11/dask/array/tests/test_ufunc.py +602 -0
  152. dvt_dask-2026.3.11/dask/array/tests/test_wrap.py +92 -0
  153. dvt_dask-2026.3.11/dask/array/tests/test_xarray.py +202 -0
  154. dvt_dask-2026.3.11/dask/array/tiledb_io.py +167 -0
  155. dvt_dask-2026.3.11/dask/array/ufunc.py +349 -0
  156. dvt_dask-2026.3.11/dask/array/utils.py +602 -0
  157. dvt_dask-2026.3.11/dask/array/wrap.py +242 -0
  158. dvt_dask-2026.3.11/dask/backends.py +163 -0
  159. dvt_dask-2026.3.11/dask/bag/__init__.py +46 -0
  160. dvt_dask-2026.3.11/dask/bag/avro.py +300 -0
  161. dvt_dask-2026.3.11/dask/bag/chunk.py +36 -0
  162. dvt_dask-2026.3.11/dask/bag/core.py +2749 -0
  163. dvt_dask-2026.3.11/dask/bag/random.py +194 -0
  164. dvt_dask-2026.3.11/dask/bag/tests/__init__.py +0 -0
  165. dvt_dask-2026.3.11/dask/bag/tests/test_avro.py +120 -0
  166. dvt_dask-2026.3.11/dask/bag/tests/test_bag.py +1817 -0
  167. dvt_dask-2026.3.11/dask/bag/tests/test_random.py +207 -0
  168. dvt_dask-2026.3.11/dask/bag/tests/test_text.py +153 -0
  169. dvt_dask-2026.3.11/dask/bag/text.py +199 -0
  170. dvt_dask-2026.3.11/dask/bag/utils.py +10 -0
  171. dvt_dask-2026.3.11/dask/base.py +1305 -0
  172. dvt_dask-2026.3.11/dask/blockwise.py +1569 -0
  173. dvt_dask-2026.3.11/dask/bytes/__init__.py +3 -0
  174. dvt_dask-2026.3.11/dask/bytes/core.py +194 -0
  175. dvt_dask-2026.3.11/dask/bytes/tests/__init__.py +0 -0
  176. dvt_dask-2026.3.11/dask/bytes/tests/test_bytes_utils.py +158 -0
  177. dvt_dask-2026.3.11/dask/bytes/tests/test_compression.py +24 -0
  178. dvt_dask-2026.3.11/dask/bytes/tests/test_http.py +222 -0
  179. dvt_dask-2026.3.11/dask/bytes/tests/test_local.py +354 -0
  180. dvt_dask-2026.3.11/dask/bytes/tests/test_s3.py +632 -0
  181. dvt_dask-2026.3.11/dask/bytes/utils.py +26 -0
  182. dvt_dask-2026.3.11/dask/cache.py +68 -0
  183. dvt_dask-2026.3.11/dask/callbacks.py +189 -0
  184. dvt_dask-2026.3.11/dask/cli.py +210 -0
  185. dvt_dask-2026.3.11/dask/config.py +846 -0
  186. dvt_dask-2026.3.11/dask/conftest.py +36 -0
  187. dvt_dask-2026.3.11/dask/context.py +69 -0
  188. dvt_dask-2026.3.11/dask/core.py +547 -0
  189. dvt_dask-2026.3.11/dask/dask-schema.yaml +280 -0
  190. dvt_dask-2026.3.11/dask/dask.yaml +59 -0
  191. dvt_dask-2026.3.11/dask/dataframe/__init__.py +125 -0
  192. dvt_dask-2026.3.11/dask/dataframe/_compat.py +84 -0
  193. dvt_dask-2026.3.11/dask/dataframe/_dtypes.py +71 -0
  194. dvt_dask-2026.3.11/dask/dataframe/_pyarrow.py +102 -0
  195. dvt_dask-2026.3.11/dask/dataframe/_pyarrow_compat.py +30 -0
  196. dvt_dask-2026.3.11/dask/dataframe/accessor.py +135 -0
  197. dvt_dask-2026.3.11/dask/dataframe/api.py +10 -0
  198. dvt_dask-2026.3.11/dask/dataframe/backends.py +871 -0
  199. dvt_dask-2026.3.11/dask/dataframe/categorical.py +67 -0
  200. dvt_dask-2026.3.11/dask/dataframe/core.py +486 -0
  201. dvt_dask-2026.3.11/dask/dataframe/dask_expr/__init__.py +10 -0
  202. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_accessor.py +120 -0
  203. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_backends.py +76 -0
  204. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_categorical.py +212 -0
  205. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_collection.py +6690 -0
  206. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_concat.py +383 -0
  207. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_cumulative.py +151 -0
  208. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_datetime.py +74 -0
  209. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_describe.py +114 -0
  210. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_dummies.py +179 -0
  211. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_expr.py +4224 -0
  212. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_groupby.py +2334 -0
  213. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_indexing.py +453 -0
  214. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_interchange.py +64 -0
  215. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_merge.py +985 -0
  216. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_merge_asof.py +441 -0
  217. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_operation_callbacks.py +515 -0
  218. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_quantile.py +135 -0
  219. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_quantiles.py +90 -0
  220. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_reductions.py +1545 -0
  221. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_repartition.py +522 -0
  222. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_rolling.py +343 -0
  223. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_shuffle.py +1428 -0
  224. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_str_accessor.py +192 -0
  225. dvt_dask-2026.3.11/dask/dataframe/dask_expr/_util.py +204 -0
  226. dvt_dask-2026.3.11/dask/dataframe/dask_expr/datasets.py +250 -0
  227. dvt_dask-2026.3.11/dask/dataframe/dask_expr/diagnostics/__init__.py +6 -0
  228. dvt_dask-2026.3.11/dask/dataframe/dask_expr/diagnostics/_analyze.py +203 -0
  229. dvt_dask-2026.3.11/dask/dataframe/dask_expr/diagnostics/_analyze_plugin.py +135 -0
  230. dvt_dask-2026.3.11/dask/dataframe/dask_expr/diagnostics/_explain.py +110 -0
  231. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/__init__.py +4 -0
  232. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/_delayed.py +164 -0
  233. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/bag.py +43 -0
  234. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/io.py +719 -0
  235. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/parquet.py +2024 -0
  236. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/records.py +22 -0
  237. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/tests/__init__.py +0 -0
  238. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/tests/test_delayed.py +77 -0
  239. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/tests/test_distributed.py +64 -0
  240. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/tests/test_from_pandas.py +156 -0
  241. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/tests/test_io.py +561 -0
  242. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/tests/test_parquet.py +651 -0
  243. dvt_dask-2026.3.11/dask/dataframe/dask_expr/io/tests/test_sql.py +41 -0
  244. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/__init__.py +0 -0
  245. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/_util.py +44 -0
  246. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_align_partitions.py +104 -0
  247. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_categorical.py +72 -0
  248. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_collection.py +2858 -0
  249. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_concat.py +405 -0
  250. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_core.py +65 -0
  251. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_cumulative.py +22 -0
  252. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_datasets.py +123 -0
  253. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_datetime.py +119 -0
  254. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_describe.py +67 -0
  255. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_diagnostics.py +40 -0
  256. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_distributed.py +470 -0
  257. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_dummies.py +30 -0
  258. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_format.py +221 -0
  259. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_fusion.py +147 -0
  260. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_groupby.py +1099 -0
  261. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_indexing.py +205 -0
  262. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_interchange.py +20 -0
  263. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_map_partitions_overlap.py +391 -0
  264. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_merge.py +1112 -0
  265. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_merge_asof.py +78 -0
  266. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_operation_callbacks.py +589 -0
  267. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_partitioning_knowledge.py +249 -0
  268. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_predicate_pushdown.py +61 -0
  269. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_quantiles.py +21 -0
  270. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_reductions.py +573 -0
  271. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_repartition.py +144 -0
  272. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_reshape.py +83 -0
  273. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_rolling.py +201 -0
  274. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_shuffle.py +833 -0
  275. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_string_accessor.py +159 -0
  276. dvt_dask-2026.3.11/dask/dataframe/dask_expr/tests/test_ufunc.py +78 -0
  277. dvt_dask-2026.3.11/dask/dataframe/dispatch.py +140 -0
  278. dvt_dask-2026.3.11/dask/dataframe/extensions.py +26 -0
  279. dvt_dask-2026.3.11/dask/dataframe/groupby.py +1259 -0
  280. dvt_dask-2026.3.11/dask/dataframe/hyperloglog.py +83 -0
  281. dvt_dask-2026.3.11/dask/dataframe/indexing.py +115 -0
  282. dvt_dask-2026.3.11/dask/dataframe/io/__init__.py +13 -0
  283. dvt_dask-2026.3.11/dask/dataframe/io/csv.py +966 -0
  284. dvt_dask-2026.3.11/dask/dataframe/io/demo.py +548 -0
  285. dvt_dask-2026.3.11/dask/dataframe/io/hdf.py +552 -0
  286. dvt_dask-2026.3.11/dask/dataframe/io/io.py +369 -0
  287. dvt_dask-2026.3.11/dask/dataframe/io/json.py +324 -0
  288. dvt_dask-2026.3.11/dask/dataframe/io/orc/__init__.py +3 -0
  289. dvt_dask-2026.3.11/dask/dataframe/io/orc/arrow.py +127 -0
  290. dvt_dask-2026.3.11/dask/dataframe/io/orc/core.py +224 -0
  291. dvt_dask-2026.3.11/dask/dataframe/io/orc/utils.py +19 -0
  292. dvt_dask-2026.3.11/dask/dataframe/io/parquet/__init__.py +3 -0
  293. dvt_dask-2026.3.11/dask/dataframe/io/parquet/arrow.py +1841 -0
  294. dvt_dask-2026.3.11/dask/dataframe/io/parquet/core.py +716 -0
  295. dvt_dask-2026.3.11/dask/dataframe/io/parquet/utils.py +762 -0
  296. dvt_dask-2026.3.11/dask/dataframe/io/sql.py +606 -0
  297. dvt_dask-2026.3.11/dask/dataframe/io/tests/__init__.py +0 -0
  298. dvt_dask-2026.3.11/dask/dataframe/io/tests/test_csv.py +1925 -0
  299. dvt_dask-2026.3.11/dask/dataframe/io/tests/test_demo.py +348 -0
  300. dvt_dask-2026.3.11/dask/dataframe/io/tests/test_hdf.py +880 -0
  301. dvt_dask-2026.3.11/dask/dataframe/io/tests/test_io.py +990 -0
  302. dvt_dask-2026.3.11/dask/dataframe/io/tests/test_json.py +246 -0
  303. dvt_dask-2026.3.11/dask/dataframe/io/tests/test_orc.py +158 -0
  304. dvt_dask-2026.3.11/dask/dataframe/io/tests/test_parquet.py +4004 -0
  305. dvt_dask-2026.3.11/dask/dataframe/io/tests/test_sql.py +584 -0
  306. dvt_dask-2026.3.11/dask/dataframe/io/utils.py +252 -0
  307. dvt_dask-2026.3.11/dask/dataframe/methods.py +541 -0
  308. dvt_dask-2026.3.11/dask/dataframe/multi.py +366 -0
  309. dvt_dask-2026.3.11/dask/dataframe/partitionquantiles.py +475 -0
  310. dvt_dask-2026.3.11/dask/dataframe/rolling.py +49 -0
  311. dvt_dask-2026.3.11/dask/dataframe/shuffle.py +240 -0
  312. dvt_dask-2026.3.11/dask/dataframe/tests/__init__.py +0 -0
  313. dvt_dask-2026.3.11/dask/dataframe/tests/test_accessors.py +343 -0
  314. dvt_dask-2026.3.11/dask/dataframe/tests/test_api.py +33 -0
  315. dvt_dask-2026.3.11/dask/dataframe/tests/test_arithmetics_reduction.py +1494 -0
  316. dvt_dask-2026.3.11/dask/dataframe/tests/test_boolean.py +33 -0
  317. dvt_dask-2026.3.11/dask/dataframe/tests/test_categorical.py +519 -0
  318. dvt_dask-2026.3.11/dask/dataframe/tests/test_dataframe.py +5443 -0
  319. dvt_dask-2026.3.11/dask/dataframe/tests/test_extensions.py +52 -0
  320. dvt_dask-2026.3.11/dask/dataframe/tests/test_groupby.py +3286 -0
  321. dvt_dask-2026.3.11/dask/dataframe/tests/test_hashing.py +84 -0
  322. dvt_dask-2026.3.11/dask/dataframe/tests/test_hyperloglog.py +96 -0
  323. dvt_dask-2026.3.11/dask/dataframe/tests/test_indexing.py +658 -0
  324. dvt_dask-2026.3.11/dask/dataframe/tests/test_merge_column_and_index.py +277 -0
  325. dvt_dask-2026.3.11/dask/dataframe/tests/test_methods.py +13 -0
  326. dvt_dask-2026.3.11/dask/dataframe/tests/test_multi.py +2448 -0
  327. dvt_dask-2026.3.11/dask/dataframe/tests/test_numeric.py +78 -0
  328. dvt_dask-2026.3.11/dask/dataframe/tests/test_pyarrow.py +184 -0
  329. dvt_dask-2026.3.11/dask/dataframe/tests/test_pyarrow_compat.py +142 -0
  330. dvt_dask-2026.3.11/dask/dataframe/tests/test_reshape.py +335 -0
  331. dvt_dask-2026.3.11/dask/dataframe/tests/test_rolling.py +508 -0
  332. dvt_dask-2026.3.11/dask/dataframe/tests/test_shuffle.py +1290 -0
  333. dvt_dask-2026.3.11/dask/dataframe/tests/test_ufunc.py +572 -0
  334. dvt_dask-2026.3.11/dask/dataframe/tests/test_utils_dataframe.py +737 -0
  335. dvt_dask-2026.3.11/dask/dataframe/tseries/__init__.py +0 -0
  336. dvt_dask-2026.3.11/dask/dataframe/tseries/resample.py +374 -0
  337. dvt_dask-2026.3.11/dask/dataframe/tseries/tests/__init__.py +0 -0
  338. dvt_dask-2026.3.11/dask/dataframe/tseries/tests/test_resample.py +248 -0
  339. dvt_dask-2026.3.11/dask/dataframe/tseries/tests/test_resample_expr.py +152 -0
  340. dvt_dask-2026.3.11/dask/dataframe/utils.py +785 -0
  341. dvt_dask-2026.3.11/dask/datasets.py +179 -0
  342. dvt_dask-2026.3.11/dask/delayed.py +932 -0
  343. dvt_dask-2026.3.11/dask/diagnostics/__init__.py +6 -0
  344. dvt_dask-2026.3.11/dask/diagnostics/profile.py +414 -0
  345. dvt_dask-2026.3.11/dask/diagnostics/profile_visualize.py +437 -0
  346. dvt_dask-2026.3.11/dask/diagnostics/progress.py +153 -0
  347. dvt_dask-2026.3.11/dask/diagnostics/tests/__init__.py +0 -0
  348. dvt_dask-2026.3.11/dask/diagnostics/tests/test_profiler.py +389 -0
  349. dvt_dask-2026.3.11/dask/diagnostics/tests/test_progress.py +137 -0
  350. dvt_dask-2026.3.11/dask/distributed.py +24 -0
  351. dvt_dask-2026.3.11/dask/dot.py +550 -0
  352. dvt_dask-2026.3.11/dask/graph_manipulation.py +558 -0
  353. dvt_dask-2026.3.11/dask/hashing.py +100 -0
  354. dvt_dask-2026.3.11/dask/highlevelgraph.py +1017 -0
  355. dvt_dask-2026.3.11/dask/layers.py +484 -0
  356. dvt_dask-2026.3.11/dask/local.py +1014 -0
  357. dvt_dask-2026.3.11/dask/ml.py +15 -0
  358. dvt_dask-2026.3.11/dask/multiprocessing.py +270 -0
  359. dvt_dask-2026.3.11/dask/optimization.py +888 -0
  360. dvt_dask-2026.3.11/dask/order.py +839 -0
  361. dvt_dask-2026.3.11/dask/py.typed +0 -0
  362. dvt_dask-2026.3.11/dask/rewrite.py +437 -0
  363. dvt_dask-2026.3.11/dask/sizeof.py +316 -0
  364. dvt_dask-2026.3.11/dask/system.py +92 -0
  365. dvt_dask-2026.3.11/dask/task_spec.py +23 -0
  366. dvt_dask-2026.3.11/dask/tests/__init__.py +0 -0
  367. dvt_dask-2026.3.11/dask/tests/test_backends.py +22 -0
  368. dvt_dask-2026.3.11/dask/tests/test_base.py +1040 -0
  369. dvt_dask-2026.3.11/dask/tests/test_cache.py +80 -0
  370. dvt_dask-2026.3.11/dask/tests/test_callbacks.py +137 -0
  371. dvt_dask-2026.3.11/dask/tests/test_ci.py +41 -0
  372. dvt_dask-2026.3.11/dask/tests/test_cli.py +259 -0
  373. dvt_dask-2026.3.11/dask/tests/test_config.py +683 -0
  374. dvt_dask-2026.3.11/dask/tests/test_context.py +65 -0
  375. dvt_dask-2026.3.11/dask/tests/test_core.py +306 -0
  376. dvt_dask-2026.3.11/dask/tests/test_datasets.py +48 -0
  377. dvt_dask-2026.3.11/dask/tests/test_delayed.py +964 -0
  378. dvt_dask-2026.3.11/dask/tests/test_distributed.py +1091 -0
  379. dvt_dask-2026.3.11/dask/tests/test_docs.py +25 -0
  380. dvt_dask-2026.3.11/dask/tests/test_dot.py +395 -0
  381. dvt_dask-2026.3.11/dask/tests/test_expr.py +167 -0
  382. dvt_dask-2026.3.11/dask/tests/test_graph_manipulation.py +346 -0
  383. dvt_dask-2026.3.11/dask/tests/test_hashing.py +44 -0
  384. dvt_dask-2026.3.11/dask/tests/test_highgraph.py +364 -0
  385. dvt_dask-2026.3.11/dask/tests/test_hlgexpr.py +283 -0
  386. dvt_dask-2026.3.11/dask/tests/test_imports.py +49 -0
  387. dvt_dask-2026.3.11/dask/tests/test_layers.py +210 -0
  388. dvt_dask-2026.3.11/dask/tests/test_local.py +392 -0
  389. dvt_dask-2026.3.11/dask/tests/test_ml.py +15 -0
  390. dvt_dask-2026.3.11/dask/tests/test_multiprocessing.py +306 -0
  391. dvt_dask-2026.3.11/dask/tests/test_optimization.py +1381 -0
  392. dvt_dask-2026.3.11/dask/tests/test_order.py +2701 -0
  393. dvt_dask-2026.3.11/dask/tests/test_rewrite.py +157 -0
  394. dvt_dask-2026.3.11/dask/tests/test_sizeof.py +307 -0
  395. dvt_dask-2026.3.11/dask/tests/test_spark_compat.py +204 -0
  396. dvt_dask-2026.3.11/dask/tests/test_system.py +158 -0
  397. dvt_dask-2026.3.11/dask/tests/test_task_spec.py +1196 -0
  398. dvt_dask-2026.3.11/dask/tests/test_threaded.py +257 -0
  399. dvt_dask-2026.3.11/dask/tests/test_tokenize.py +1542 -0
  400. dvt_dask-2026.3.11/dask/tests/test_traceback.py +162 -0
  401. dvt_dask-2026.3.11/dask/tests/test_typing.py +218 -0
  402. dvt_dask-2026.3.11/dask/tests/test_utils.py +1028 -0
  403. dvt_dask-2026.3.11/dask/tests/test_utils_test.py +50 -0
  404. dvt_dask-2026.3.11/dask/tests/warning_aliases.py +10 -0
  405. dvt_dask-2026.3.11/dask/threaded.py +135 -0
  406. dvt_dask-2026.3.11/dask/tokenize.py +489 -0
  407. dvt_dask-2026.3.11/dask/typing.py +443 -0
  408. dvt_dask-2026.3.11/dask/utils.py +2362 -0
  409. dvt_dask-2026.3.11/dask/utils_test.py +164 -0
  410. dvt_dask-2026.3.11/dask/widgets/__init__.py +26 -0
  411. dvt_dask-2026.3.11/dask/widgets/templates/array.html.j2 +40 -0
  412. dvt_dask-2026.3.11/dask/widgets/templates/dataframe.html.j2 +3 -0
  413. dvt_dask-2026.3.11/dask/widgets/templates/highlevelgraph.html.j2 +25 -0
  414. dvt_dask-2026.3.11/dask/widgets/templates/highlevelgraph_layer.html.j2 +50 -0
  415. dvt_dask-2026.3.11/dask/widgets/tests/templates/bytes.html.j2 +3 -0
  416. dvt_dask-2026.3.11/dask/widgets/tests/templates/custom_filter.html.j2 +3 -0
  417. dvt_dask-2026.3.11/dask/widgets/tests/templates/example.html.j2 +3 -0
  418. dvt_dask-2026.3.11/dask/widgets/tests/test_widgets.py +48 -0
  419. dvt_dask-2026.3.11/dask/widgets/widgets.py +40 -0
  420. dvt_dask-2026.3.11/docs/Makefile +155 -0
  421. dvt_dask-2026.3.11/docs/README.rst +15 -0
  422. dvt_dask-2026.3.11/docs/make.bat +192 -0
  423. dvt_dask-2026.3.11/docs/release-procedure.md +100 -0
  424. dvt_dask-2026.3.11/docs/requirements-docs.txt +26 -0
  425. dvt_dask-2026.3.11/docs/source/10-minutes-to-dask.rst +563 -0
  426. dvt_dask-2026.3.11/docs/source/_static/config_converter.js +320 -0
  427. dvt_dask-2026.3.11/docs/source/_static/custom.js +26 -0
  428. dvt_dask-2026.3.11/docs/source/_static/dask-simple.png +0 -0
  429. dvt_dask-2026.3.11/docs/source/_static/main-page.css +153 -0
  430. dvt_dask-2026.3.11/docs/source/_static/profile.html +31 -0
  431. dvt_dask-2026.3.11/docs/source/_static/stacked_profile.html +31 -0
  432. dvt_dask-2026.3.11/docs/source/_static/style.css +25 -0
  433. dvt_dask-2026.3.11/docs/source/_static/theme_overrides.css +13 -0
  434. dvt_dask-2026.3.11/docs/source/_static/transpose_cyto.html +10058 -0
  435. dvt_dask-2026.3.11/docs/source/_static/yaml.min.js +2 -0
  436. dvt_dask-2026.3.11/docs/source/_templates/layout.html +3 -0
  437. dvt_dask-2026.3.11/docs/source/adaptive.rst +121 -0
  438. dvt_dask-2026.3.11/docs/source/api.rst +127 -0
  439. dvt_dask-2026.3.11/docs/source/array-api.rst +556 -0
  440. dvt_dask-2026.3.11/docs/source/array-assignment.rst +104 -0
  441. dvt_dask-2026.3.11/docs/source/array-best-practices.rst +127 -0
  442. dvt_dask-2026.3.11/docs/source/array-chunks.rst +376 -0
  443. dvt_dask-2026.3.11/docs/source/array-creation.rst +635 -0
  444. dvt_dask-2026.3.11/docs/source/array-design.rst +182 -0
  445. dvt_dask-2026.3.11/docs/source/array-gufunc.rst +92 -0
  446. dvt_dask-2026.3.11/docs/source/array-numpy-compatibility.rst +390 -0
  447. dvt_dask-2026.3.11/docs/source/array-overlap.rst +183 -0
  448. dvt_dask-2026.3.11/docs/source/array-random.rst +89 -0
  449. dvt_dask-2026.3.11/docs/source/array-slicing.rst +98 -0
  450. dvt_dask-2026.3.11/docs/source/array-sparse.rst +84 -0
  451. dvt_dask-2026.3.11/docs/source/array-stack.rst +84 -0
  452. dvt_dask-2026.3.11/docs/source/array-stats.rst +38 -0
  453. dvt_dask-2026.3.11/docs/source/array.rst +125 -0
  454. dvt_dask-2026.3.11/docs/source/bag-api.rst +123 -0
  455. dvt_dask-2026.3.11/docs/source/bag-creation.rst +158 -0
  456. dvt_dask-2026.3.11/docs/source/bag.rst +118 -0
  457. dvt_dask-2026.3.11/docs/source/best-practices.rst +372 -0
  458. dvt_dask-2026.3.11/docs/source/caching.rst +165 -0
  459. dvt_dask-2026.3.11/docs/source/changelog.rst +9894 -0
  460. dvt_dask-2026.3.11/docs/source/cheatsheet.rst +8 -0
  461. dvt_dask-2026.3.11/docs/source/cli.rst +137 -0
  462. dvt_dask-2026.3.11/docs/source/conf.py +492 -0
  463. dvt_dask-2026.3.11/docs/source/configuration.rst +549 -0
  464. dvt_dask-2026.3.11/docs/source/custom-collections.rst +473 -0
  465. dvt_dask-2026.3.11/docs/source/custom-graphs.rst +114 -0
  466. dvt_dask-2026.3.11/docs/source/customize-initialization.rst +125 -0
  467. dvt_dask-2026.3.11/docs/source/dashboard-progress-script.py +47 -0
  468. dvt_dask-2026.3.11/docs/source/dashboard.rst +269 -0
  469. dvt_dask-2026.3.11/docs/source/daskcheatsheet.pdf +0 -0
  470. dvt_dask-2026.3.11/docs/source/dataframe-api.rst +756 -0
  471. dvt_dask-2026.3.11/docs/source/dataframe-best-practices.rst +239 -0
  472. dvt_dask-2026.3.11/docs/source/dataframe-categoricals.rst +105 -0
  473. dvt_dask-2026.3.11/docs/source/dataframe-create.rst +186 -0
  474. dvt_dask-2026.3.11/docs/source/dataframe-design.rst +156 -0
  475. dvt_dask-2026.3.11/docs/source/dataframe-extend.rst +225 -0
  476. dvt_dask-2026.3.11/docs/source/dataframe-extra.rst +14 -0
  477. dvt_dask-2026.3.11/docs/source/dataframe-groupby.rst +231 -0
  478. dvt_dask-2026.3.11/docs/source/dataframe-hive.rst +246 -0
  479. dvt_dask-2026.3.11/docs/source/dataframe-indexing.rst +205 -0
  480. dvt_dask-2026.3.11/docs/source/dataframe-joins.rst +84 -0
  481. dvt_dask-2026.3.11/docs/source/dataframe-optimizer.rst +100 -0
  482. dvt_dask-2026.3.11/docs/source/dataframe-parquet.rst +270 -0
  483. dvt_dask-2026.3.11/docs/source/dataframe-sql.rst +273 -0
  484. dvt_dask-2026.3.11/docs/source/dataframe.rst +200 -0
  485. dvt_dask-2026.3.11/docs/source/debugging-performance.rst +15 -0
  486. dvt_dask-2026.3.11/docs/source/delayed-api.rst +48 -0
  487. dvt_dask-2026.3.11/docs/source/delayed-best-practices.rst +303 -0
  488. dvt_dask-2026.3.11/docs/source/delayed-collections.rst +39 -0
  489. dvt_dask-2026.3.11/docs/source/delayed.rst +226 -0
  490. dvt_dask-2026.3.11/docs/source/deploying-cli.rst +103 -0
  491. dvt_dask-2026.3.11/docs/source/deploying-cloud.rst +131 -0
  492. dvt_dask-2026.3.11/docs/source/deploying-docker.rst +77 -0
  493. dvt_dask-2026.3.11/docs/source/deploying-extra.rst +13 -0
  494. dvt_dask-2026.3.11/docs/source/deploying-hpc.rst +259 -0
  495. dvt_dask-2026.3.11/docs/source/deploying-kubernetes.rst +125 -0
  496. dvt_dask-2026.3.11/docs/source/deploying-python-advanced.rst +212 -0
  497. dvt_dask-2026.3.11/docs/source/deploying-python.rst +101 -0
  498. dvt_dask-2026.3.11/docs/source/deploying-ssh.rst +54 -0
  499. dvt_dask-2026.3.11/docs/source/deploying.rst +206 -0
  500. dvt_dask-2026.3.11/docs/source/deployment-considerations.rst +99 -0
  501. dvt_dask-2026.3.11/docs/source/develop.rst +347 -0
  502. dvt_dask-2026.3.11/docs/source/diagnostics-distributed.rst +149 -0
  503. dvt_dask-2026.3.11/docs/source/diagnostics-local.rst +323 -0
  504. dvt_dask-2026.3.11/docs/source/ecosystem.rst +83 -0
  505. dvt_dask-2026.3.11/docs/source/expr-system-internals.rst +206 -0
  506. dvt_dask-2026.3.11/docs/source/faq.rst +438 -0
  507. dvt_dask-2026.3.11/docs/source/futures.rst +963 -0
  508. dvt_dask-2026.3.11/docs/source/gpu.rst +161 -0
  509. dvt_dask-2026.3.11/docs/source/graph_manipulation.rst +72 -0
  510. dvt_dask-2026.3.11/docs/source/graphs.rst +156 -0
  511. dvt_dask-2026.3.11/docs/source/graphviz.rst +158 -0
  512. dvt_dask-2026.3.11/docs/source/high-level-graphs.rst +198 -0
  513. dvt_dask-2026.3.11/docs/source/how-to/connect-to-remote-data.rst +387 -0
  514. dvt_dask-2026.3.11/docs/source/how-to/debug.rst +279 -0
  515. dvt_dask-2026.3.11/docs/source/how-to/extend-sizeof.rst +36 -0
  516. dvt_dask-2026.3.11/docs/source/how-to/index.rst +16 -0
  517. dvt_dask-2026.3.11/docs/source/how-to/selecting-the-collection-backend.rst +150 -0
  518. dvt_dask-2026.3.11/docs/source/images/10_minutes_array_graph.png +0 -0
  519. dvt_dask-2026.3.11/docs/source/images/10_minutes_bag_graph.png +0 -0
  520. dvt_dask-2026.3.11/docs/source/images/10_minutes_dataframe_graph.png +0 -0
  521. dvt_dask-2026.3.11/docs/source/images/HHMI_Janelia_Color.png +0 -0
  522. dvt_dask-2026.3.11/docs/source/images/array.svg +421 -0
  523. dvt_dask-2026.3.11/docs/source/images/async-embarrassing.gif +0 -0
  524. dvt_dask-2026.3.11/docs/source/images/changelog/2023110-rechunking-disk-perf.png +0 -0
  525. dvt_dask-2026.3.11/docs/source/images/changelog/dask-order-constant-memory.png +0 -0
  526. dvt_dask-2026.3.11/docs/source/images/changelog/dask-order-growing-memory.png +0 -0
  527. dvt_dask-2026.3.11/docs/source/images/changelog/einstein-constant-chunks.png +0 -0
  528. dvt_dask-2026.3.11/docs/source/images/changelog/einstein-exploding-chunks.png +0 -0
  529. dvt_dask-2026.3.11/docs/source/images/changelog/einstein-initial-array.png +0 -0
  530. dvt_dask-2026.3.11/docs/source/images/changelog/gufunc_chunksizes_constant.png +0 -0
  531. dvt_dask-2026.3.11/docs/source/images/changelog/gufunc_chunksizes_exploding.png +0 -0
  532. dvt_dask-2026.3.11/docs/source/images/changelog/reshape-constant-memory.png +0 -0
  533. dvt_dask-2026.3.11/docs/source/images/changelog/reshape-memory-increase.png +0 -0
  534. dvt_dask-2026.3.11/docs/source/images/changelog/rolling-construct-constant-chunks.png +0 -0
  535. dvt_dask-2026.3.11/docs/source/images/changelog/rolling-construct-exploding-chunks.png +0 -0
  536. dvt_dask-2026.3.11/docs/source/images/changelog/rolling-construct-initially.png +0 -0
  537. dvt_dask-2026.3.11/docs/source/images/changelog/vindex-memory-constant.png +0 -0
  538. dvt_dask-2026.3.11/docs/source/images/changelog/vindex-memory-increase.png +0 -0
  539. dvt_dask-2026.3.11/docs/source/images/cloud-provider-logos.svg +1 -0
  540. dvt_dask-2026.3.11/docs/source/images/concurrent-futures-threaded.webp +0 -0
  541. dvt_dask-2026.3.11/docs/source/images/crosstalk.svg +1868 -0
  542. dvt_dask-2026.3.11/docs/source/images/dashboard_jupyterlab.png +0 -0
  543. dvt_dask-2026.3.11/docs/source/images/dashboard_link.png +0 -0
  544. dvt_dask-2026.3.11/docs/source/images/dashboard_memory.png +0 -0
  545. dvt_dask-2026.3.11/docs/source/images/dashboard_memory_new.gif +0 -0
  546. dvt_dask-2026.3.11/docs/source/images/dashboard_progress.png +0 -0
  547. dvt_dask-2026.3.11/docs/source/images/dashboard_status.png +0 -0
  548. dvt_dask-2026.3.11/docs/source/images/dashboard_task_processing.png +0 -0
  549. dvt_dask-2026.3.11/docs/source/images/dashboard_task_stream_unhealthy.png +0 -0
  550. dvt_dask-2026.3.11/docs/source/images/dashboard_taskstream_healthy.png +0 -0
  551. dvt_dask-2026.3.11/docs/source/images/dask-adaptive.svg +2985 -0
  552. dvt_dask-2026.3.11/docs/source/images/dask-array.svg +349 -0
  553. dvt_dask-2026.3.11/docs/source/images/dask-cluster-manager.svg +342 -0
  554. dvt_dask-2026.3.11/docs/source/images/dask-dataframe.svg +117 -0
  555. dvt_dask-2026.3.11/docs/source/images/dask-overview-distributed-callout.svg +4 -0
  556. dvt_dask-2026.3.11/docs/source/images/dask-overview-schedulers.svg +4 -0
  557. dvt_dask-2026.3.11/docs/source/images/dask-overview.svg +419 -0
  558. dvt_dask-2026.3.11/docs/source/images/dask_horizontal.svg +13 -0
  559. dvt_dask-2026.3.11/docs/source/images/dask_horizontal_black.svg +45 -0
  560. dvt_dask-2026.3.11/docs/source/images/dask_horizontal_on_blue.svg +48 -0
  561. dvt_dask-2026.3.11/docs/source/images/dask_horizontal_on_pink.svg +46 -0
  562. dvt_dask-2026.3.11/docs/source/images/dask_horizontal_white.svg +46 -0
  563. dvt_dask-2026.3.11/docs/source/images/dask_icon.svg +25 -0
  564. dvt_dask-2026.3.11/docs/source/images/dask_icon_black.svg +25 -0
  565. dvt_dask-2026.3.11/docs/source/images/dask_icon_on_pink.svg +25 -0
  566. dvt_dask-2026.3.11/docs/source/images/dask_icon_white.svg +25 -0
  567. dvt_dask-2026.3.11/docs/source/images/dataframe-optimize-explain.png +0 -0
  568. dvt_dask-2026.3.11/docs/source/images/delayed-inc-double-add.svg +312 -0
  569. dvt_dask-2026.3.11/docs/source/images/distributed-overview.svg +236 -0
  570. dvt_dask-2026.3.11/docs/source/images/frame-shuffle.svg +438 -0
  571. dvt_dask-2026.3.11/docs/source/images/frame-sort.svg +516 -0
  572. dvt_dask-2026.3.11/docs/source/images/frame.svg +275 -0
  573. dvt_dask-2026.3.11/docs/source/images/futures-graph.png +0 -0
  574. dvt_dask-2026.3.11/docs/source/images/gputester-msg.png +0 -0
  575. dvt_dask-2026.3.11/docs/source/images/growth_of_languages.png +0 -0
  576. dvt_dask-2026.3.11/docs/source/images/growth_of_libraries.png +0 -0
  577. dvt_dask-2026.3.11/docs/source/images/inc-add.svg +65 -0
  578. dvt_dask-2026.3.11/docs/source/images/map-reduce-task-scheduling.svg +2409 -0
  579. dvt_dask-2026.3.11/docs/source/images/map_blocks_drop_axis.png +0 -0
  580. dvt_dask-2026.3.11/docs/source/images/merge_chunks.png +0 -0
  581. dvt_dask-2026.3.11/docs/source/images/merge_chunks_false.png +0 -0
  582. dvt_dask-2026.3.11/docs/source/images/optimize_dask1.svg +211 -0
  583. dvt_dask-2026.3.11/docs/source/images/optimize_dask2.svg +151 -0
  584. dvt_dask-2026.3.11/docs/source/images/optimize_dask3.svg +91 -0
  585. dvt_dask-2026.3.11/docs/source/images/optimize_dask4.svg +73 -0
  586. dvt_dask-2026.3.11/docs/source/images/optimize_dask5.svg +49 -0
  587. dvt_dask-2026.3.11/docs/source/images/optimizer/automatic-repartitioning.svg +21 -0
  588. dvt_dask-2026.3.11/docs/source/images/optimizer/avoiding-shuffles.svg +21 -0
  589. dvt_dask-2026.3.11/docs/source/images/order-failure.png +0 -0
  590. dvt_dask-2026.3.11/docs/source/images/order-success.png +0 -0
  591. dvt_dask-2026.3.11/docs/source/images/overlap.svg +937 -0
  592. dvt_dask-2026.3.11/docs/source/images/overlapping-blocks.svg +444 -0
  593. dvt_dask-2026.3.11/docs/source/images/overlapping-neighbors.svg +129 -0
  594. dvt_dask-2026.3.11/docs/source/images/pipeline.svg +754 -0
  595. dvt_dask-2026.3.11/docs/source/images/reshape.png +0 -0
  596. dvt_dask-2026.3.11/docs/source/images/reshape_problem.png +0 -0
  597. dvt_dask-2026.3.11/docs/source/images/reshape_rechunked.png +0 -0
  598. dvt_dask-2026.3.11/docs/source/images/scaling-edges.png +0 -0
  599. dvt_dask-2026.3.11/docs/source/images/scaling-nodes.png +0 -0
  600. dvt_dask-2026.3.11/docs/source/images/simple-dask.png +0 -0
  601. dvt_dask-2026.3.11/docs/source/images/transpose-hlg-hovertooltip.png +0 -0
  602. dvt_dask-2026.3.11/docs/source/images/transpose-hlg-html-repr.png +0 -0
  603. dvt_dask-2026.3.11/docs/source/images/transpose.svg +553 -0
  604. dvt_dask-2026.3.11/docs/source/images/transpose_opt.svg +390 -0
  605. dvt_dask-2026.3.11/docs/source/images/trivial.svg +1643 -0
  606. dvt_dask-2026.3.11/docs/source/images/unoverlapping-neighbors.svg +76 -0
  607. dvt_dask-2026.3.11/docs/source/index.rst +386 -0
  608. dvt_dask-2026.3.11/docs/source/install.rst +225 -0
  609. dvt_dask-2026.3.11/docs/source/internals.rst +17 -0
  610. dvt_dask-2026.3.11/docs/source/logos.rst +34 -0
  611. dvt_dask-2026.3.11/docs/source/maintainers.rst +83 -0
  612. dvt_dask-2026.3.11/docs/source/ml.rst +214 -0
  613. dvt_dask-2026.3.11/docs/source/optimize.rst +370 -0
  614. dvt_dask-2026.3.11/docs/source/order.rst +160 -0
  615. dvt_dask-2026.3.11/docs/source/phases-of-computation.rst +116 -0
  616. dvt_dask-2026.3.11/docs/source/presentations.rst +25 -0
  617. dvt_dask-2026.3.11/docs/source/prometheus.rst +22 -0
  618. dvt_dask-2026.3.11/docs/source/scheduler-overview.rst +190 -0
  619. dvt_dask-2026.3.11/docs/source/scheduling-policy.rst +87 -0
  620. dvt_dask-2026.3.11/docs/source/scheduling.rst +292 -0
  621. dvt_dask-2026.3.11/docs/source/scripts/scheduling.py +128 -0
  622. dvt_dask-2026.3.11/docs/source/shared.rst +150 -0
  623. dvt_dask-2026.3.11/docs/source/software-environments.rst +97 -0
  624. dvt_dask-2026.3.11/docs/source/spark.rst +247 -0
  625. dvt_dask-2026.3.11/docs/source/spec.rst +186 -0
  626. dvt_dask-2026.3.11/docs/source/support.rst +102 -0
  627. dvt_dask-2026.3.11/docs/source/understanding-performance.rst +35 -0
  628. dvt_dask-2026.3.11/docs/source/user-interfaces.rst +350 -0
  629. dvt_dask-2026.3.11/docs/source/why.rst +242 -0
  630. dvt_dask-2026.3.11/dvt_dask.egg-info/PKG-INFO +93 -0
  631. dvt_dask-2026.3.11/dvt_dask.egg-info/SOURCES.txt +711 -0
  632. dvt_dask-2026.3.11/dvt_dask.egg-info/dependency_links.txt +1 -0
  633. dvt_dask-2026.3.11/dvt_dask.egg-info/entry_points.txt +5 -0
  634. dvt_dask-2026.3.11/dvt_dask.egg-info/requires.txt +44 -0
  635. dvt_dask-2026.3.11/dvt_dask.egg-info/scm_file_list.json +706 -0
  636. dvt_dask-2026.3.11/dvt_dask.egg-info/scm_version.json +8 -0
  637. dvt_dask-2026.3.11/dvt_dask.egg-info/top_level.txt +1 -0
  638. dvt_dask-2026.3.11/pyproject.toml +241 -0
  639. dvt_dask-2026.3.11/scripts/__init__.py +0 -0
  640. dvt_dask-2026.3.11/scripts/build.py +11 -0
  641. dvt_dask-2026.3.11/scripts/services/__init__.py +0 -0
  642. dvt_dask-2026.3.11/scripts/services/run_project_mcp.py +27 -0
  643. dvt_dask-2026.3.11/scripts/upload_builds.py +309 -0
  644. dvt_dask-2026.3.11/services/__init__.py +0 -0
  645. dvt_dask-2026.3.11/services/benchmarking/__init__.py +11 -0
  646. dvt_dask-2026.3.11/services/benchmarking/config.py +111 -0
  647. dvt_dask-2026.3.11/services/benchmarking/docker/Dockerfile +21 -0
  648. dvt_dask-2026.3.11/services/benchmarking/docker/entrypoint.sh +5 -0
  649. dvt_dask-2026.3.11/services/benchmarking/generators.py +90 -0
  650. dvt_dask-2026.3.11/services/benchmarking/measurements.py +243 -0
  651. dvt_dask-2026.3.11/services/benchmarking/pipeline.py +180 -0
  652. dvt_dask-2026.3.11/services/benchmarking/reporting.py +99 -0
  653. dvt_dask-2026.3.11/services/benchmarking/run_registry.py +82 -0
  654. dvt_dask-2026.3.11/services/benchmarking/runner.py +107 -0
  655. dvt_dask-2026.3.11/services/benchmarking/runs/0000_20260306_143810/config_effective.json +24 -0
  656. dvt_dask-2026.3.11/services/benchmarking/runs/0000_20260306_143810/logs/runner.log +2552 -0
  657. dvt_dask-2026.3.11/services/benchmarking/runs/0000_20260306_143810/raw_measurements.csv +26 -0
  658. dvt_dask-2026.3.11/services/benchmarking/runs/0000_20260306_143810/results.csv +6 -0
  659. dvt_dask-2026.3.11/services/benchmarking/runs/0000_20260306_143810/run_info.json +9 -0
  660. dvt_dask-2026.3.11/services/benchmarking/runs/0001_20260306_144219/config_effective.json +24 -0
  661. dvt_dask-2026.3.11/services/benchmarking/runs/0001_20260306_144219/logs/runner.log +85 -0
  662. dvt_dask-2026.3.11/services/benchmarking/runs/0001_20260306_144219/raw_measurements.csv +6 -0
  663. dvt_dask-2026.3.11/services/benchmarking/runs/0001_20260306_144219/results.csv +6 -0
  664. dvt_dask-2026.3.11/services/benchmarking/runs/0001_20260306_144219/run_info.json +9 -0
  665. dvt_dask-2026.3.11/services/benchmarking/runs/0002_20260306_144348/config_effective.json +24 -0
  666. dvt_dask-2026.3.11/services/benchmarking/runs/0002_20260306_144348/logs/runner.log +12 -0
  667. dvt_dask-2026.3.11/services/benchmarking/runs/0002_20260306_144348/raw_measurements.csv +6 -0
  668. dvt_dask-2026.3.11/services/benchmarking/runs/0002_20260306_144348/results.csv +6 -0
  669. dvt_dask-2026.3.11/services/benchmarking/runs/0002_20260306_144348/run_info.json +9 -0
  670. dvt_dask-2026.3.11/services/benchmarking/runs/0003_20260306_144403/config_effective.json +24 -0
  671. dvt_dask-2026.3.11/services/benchmarking/runs/0003_20260306_144403/logs/runner.log +32 -0
  672. dvt_dask-2026.3.11/services/benchmarking/runs/0003_20260306_144403/raw_measurements.csv +26 -0
  673. dvt_dask-2026.3.11/services/benchmarking/runs/0003_20260306_144403/results.csv +6 -0
  674. dvt_dask-2026.3.11/services/benchmarking/runs/0003_20260306_144403/run_info.json +9 -0
  675. dvt_dask-2026.3.11/services/benchmarking/runs/0004_20260306_144536/config_effective.json +24 -0
  676. dvt_dask-2026.3.11/services/benchmarking/runs/0004_20260306_144536/logs/runner.log +12 -0
  677. dvt_dask-2026.3.11/services/benchmarking/runs/0004_20260306_144536/raw_measurements.csv +6 -0
  678. dvt_dask-2026.3.11/services/benchmarking/runs/0004_20260306_144536/results.csv +6 -0
  679. dvt_dask-2026.3.11/services/benchmarking/runs/0004_20260306_144536/run_info.json +9 -0
  680. dvt_dask-2026.3.11/services/benchmarking/runs/0005_20260306_144555/config_effective.json +24 -0
  681. dvt_dask-2026.3.11/services/benchmarking/runs/0005_20260306_144555/logs/runner.log +32 -0
  682. dvt_dask-2026.3.11/services/benchmarking/runs/0005_20260306_144555/raw_measurements.csv +26 -0
  683. dvt_dask-2026.3.11/services/benchmarking/runs/0005_20260306_144555/results.csv +6 -0
  684. dvt_dask-2026.3.11/services/benchmarking/runs/0005_20260306_144555/run_info.json +9 -0
  685. dvt_dask-2026.3.11/services/benchmarking/runs/0006_20260306_144721/config_effective.json +24 -0
  686. dvt_dask-2026.3.11/services/benchmarking/runs/0006_20260306_144721/logs/runner.log +12 -0
  687. dvt_dask-2026.3.11/services/benchmarking/runs/0006_20260306_144721/raw_measurements.csv +6 -0
  688. dvt_dask-2026.3.11/services/benchmarking/runs/0006_20260306_144721/results.csv +6 -0
  689. dvt_dask-2026.3.11/services/benchmarking/runs/0006_20260306_144721/run_info.json +9 -0
  690. dvt_dask-2026.3.11/services/benchmarking/runs/0007_20260306_145649/config_effective.json +24 -0
  691. dvt_dask-2026.3.11/services/benchmarking/runs/0007_20260306_145649/logs/runner.log +12 -0
  692. dvt_dask-2026.3.11/services/benchmarking/runs/0007_20260306_145649/raw_measurements.csv +6 -0
  693. dvt_dask-2026.3.11/services/benchmarking/runs/0007_20260306_145649/results.csv +6 -0
  694. dvt_dask-2026.3.11/services/benchmarking/runs/0007_20260306_145649/run_info.json +9 -0
  695. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/artifacts/callbacks/delayed_known_normal_with_cb_iter_01.json +95 -0
  696. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/artifacts/callbacks/delayed_unknown_normal_with_cb_iter_01.json +95 -0
  697. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/artifacts/callbacks/from_pandas_known_large_partitions_with_cb_iter_01.json +95 -0
  698. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/artifacts/callbacks/from_pandas_known_normal_with_cb_iter_01.json +95 -0
  699. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/artifacts/callbacks/from_pandas_known_small_partitions_with_cb_iter_01.json +95 -0
  700. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/config_effective.json +29 -0
  701. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/logs/runner.log +27 -0
  702. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/raw_measurements.csv +11 -0
  703. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/results.csv +11 -0
  704. dvt_dask-2026.3.11/services/benchmarking/runs/0008_20260306_150334/run_info.json +9 -0
  705. dvt_dask-2026.3.11/services/benchmarking/sources.py +161 -0
  706. dvt_dask-2026.3.11/services/benchmarking/tests/test_run_registry.py +20 -0
  707. dvt_dask-2026.3.11/services/benchmarking/tests/test_runner.py +114 -0
  708. dvt_dask-2026.3.11/services/project_mcp/README.md +35 -0
  709. dvt_dask-2026.3.11/services/project_mcp/__init__.py +1 -0
  710. dvt_dask-2026.3.11/services/project_mcp/main.py +181 -0
  711. dvt_dask-2026.3.11/services/project_mcp/operations.py +373 -0
  712. dvt_dask-2026.3.11/services/project_mcp/runtime.py +211 -0
  713. dvt_dask-2026.3.11/setup.cfg +4 -0
@@ -0,0 +1,18 @@
1
+ [mcp_servers.project_mcp]
2
+ command = "python"
3
+ args = [
4
+ "-m",
5
+ "scripts.services.run_project_mcp"
6
+ ]
7
+
8
+ [mcp_servers.pycharm]
9
+ command = "npx"
10
+ args = [
11
+ "mcp-remote",
12
+ "http://localhost:64342/sse",
13
+ "--header",
14
+ "IJ_MCP_SERVER_PROJECT_PATH: ${PROJECT_PATH}"
15
+ ]
16
+ startup_timeout_sec = 20
17
+ tool_timeout_sec = 45
18
+ enabled = true
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: experiment-mapping-lab
3
+ description: Run iterative experiments for cross-source event matching accuracy in arb_monitor. Use when the user asks to plan, implement, execute, and document a new mapping experiment between sources (especially polymarket and bcgame), including updates to tmp/experiments/* README files and INSIGHTS.md.
4
+ ---
5
+
6
+ # Experiment Mapping Lab
7
+
8
+ Execute the full experiment cycle end-to-end with precision-first defaults.
9
+
10
+ ## Core workflow
11
+
12
+ 1. Read `tmp/experiments/README.md`, `tmp/experiments/INSIGHTS.md`, and the latest 1-3 experiment package `README.md` files.
13
+ 2. Recheck at least one previous experiment on new data:
14
+ - read sources and `parsed_at` listed in that experiment `README.md`;
15
+ - query current `MAX(parsed_at)` for the same sources in DB;
16
+ - if current `MAX(parsed_at)` is newer, rerun that previous experiment on the new snapshot.
17
+ 3. If rerun shows divergences or precision drop:
18
+ - write root cause notes in `## Дополнительно` of that previous experiment `README.md`;
19
+ - add transferable findings to `tmp/experiments/INSIGHTS.md`.
20
+ 4. Determine the next package name: `tmp/experiments/{experiment_number:04}_{experiment_name}`.
21
+ 5. Create the new package and write initial `README.md` with:
22
+ - hypothesis
23
+ - difference from previous experiment
24
+ - method
25
+ - run command
26
+ - sources with exact `parsed_at`
27
+ - planned metrics
28
+ 6. Implement experiment code inside that package (`experiment.py` by default).
29
+ 7. Run the experiment on current data.
30
+ 8. Save artifacts in the package (`results.json`, `matched_pairs.csv`, and optional diagnostics CSV).
31
+ 9. Update the package `README.md` with actual numbers, findings, limitations, exact sources+`parsed_at`, and next-step proposal.
32
+ 10. Add transferable learnings to `tmp/experiments/INSIGHTS.md`.
33
+
34
+ ## Precision-first defaults
35
+
36
+ - Use latest snapshot per source from `market_items` (`MAX(parsed_at)` grouped by `source`).
37
+ - Restrict candidate pool by canonical sport and start-time window.
38
+ - Prefer one-to-one mapping (`mutual best`) before lowering thresholds.
39
+ - Report both coverage and risk indicators:
40
+ - accepted matches count and share per source
41
+ - threshold/margin values used
42
+ - ambiguity indicators (top1-top2 gap)
43
+ - manual sanity sample (at least 10-20 pairs when no ground truth)
44
+
45
+ ## Repository-specific rules
46
+
47
+ - Keep each experiment isolated; do not edit old experiment code unless explicitly requested.
48
+ - Keep numbering monotonic (`0001`, `0002`, ...).
49
+ - Keep all experiment files under `tmp/experiments`.
50
+ - If `tmp/experiments/README.md` or `INSIGHTS.md` is missing, initialize both before starting a new experiment.
51
+
52
+ ## Helper script
53
+
54
+ Use `scripts/create_experiment.py` in this skill to scaffold the next experiment package quickly.
55
+
56
+ Example:
57
+ ```powershell
58
+ python .codex/skills/experiment-mapping-lab/scripts/create_experiment.py --repo-root C:\dev\projects\arb_monitor --experiment-name sport-time-title-v2
59
+ ```
60
+
61
+ The script creates:
62
+ - package directory with next numeric prefix
63
+ - `__init__.py`
64
+ - starter `README.md`
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Experiment Mapping Lab"
3
+ short_description: "Iterative event-matching experiment runner"
4
+ default_prompt: "Use $experiment-mapping-lab to run the next event-mapping experiment and document results in tmp/experiments."
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env python3
2
+ from __future__ import annotations
3
+
4
+ import argparse
5
+ import re
6
+ from pathlib import Path
7
+
8
+ EXPERIMENT_DIR_PATTERN = re.compile(r"^(\d{4})_(.+)$")
9
+
10
+ README_TEMPLATE = """# {title}
11
+
12
+ ## Hypothesis
13
+ Describe what should improve and why.
14
+
15
+ ## Difference From Previous Experiment
16
+ - Describe concrete changes vs previous experiment.
17
+
18
+ ## Method
19
+ - Data scope:
20
+ - Candidate generation:
21
+ - Scoring or rules:
22
+ - Acceptance criteria:
23
+
24
+ ## Sources And Parsed At
25
+ - source: `parsed_at`
26
+
27
+ ## Run Command
28
+ ```powershell
29
+ python tmp/experiments/{package}/experiment.py
30
+ ```
31
+
32
+ ## Artifacts
33
+ - `results.json`
34
+ - `matched_pairs.csv`
35
+ - `top2_candidates.csv` (optional)
36
+
37
+ ## Results
38
+ Fill after execution.
39
+
40
+ ## Additional
41
+ - Previous experiment recheck on newer data:
42
+ - Divergences/precision drop analysis (if any):
43
+ """
44
+
45
+
46
+ def find_next_number(experiments_dir: Path) -> int:
47
+ max_num = 0
48
+ for child in experiments_dir.iterdir():
49
+ if not child.is_dir():
50
+ continue
51
+ match = EXPERIMENT_DIR_PATTERN.match(child.name)
52
+ if not match:
53
+ continue
54
+ max_num = max(max_num, int(match.group(1)))
55
+ return max_num + 1
56
+
57
+
58
+ def normalize_name(name: str) -> str:
59
+ cleaned = re.sub(r"[^a-zA-Z0-9\s_]", "", name).strip().lower()
60
+ cleaned = re.sub(r"[\s\-]+", "_", cleaned)
61
+ cleaned = re.sub(r"_+", "_", cleaned)
62
+ if not cleaned:
63
+ raise ValueError("Experiment name is empty after normalization")
64
+ return cleaned
65
+
66
+
67
+ def create_package(repo_root: Path, experiment_name: str, dry_run: bool) -> Path:
68
+ experiments_dir = repo_root / "tmp" / "experiments"
69
+ experiments_dir.mkdir(parents=True, exist_ok=True)
70
+
71
+ number = find_next_number(experiments_dir)
72
+ slug = normalize_name(experiment_name)
73
+ package_name = f"{number:04}_{slug}"
74
+ package_dir = experiments_dir / package_name
75
+
76
+ if dry_run:
77
+ return package_dir
78
+
79
+ package_dir.mkdir(parents=False, exist_ok=False)
80
+
81
+ init_text = f'"""Experiment package: {package_name}."""\n'
82
+ (package_dir / "__init__.py").write_text(init_text, encoding="utf-8")
83
+
84
+ readme_title = f"{number:04} {slug.replace('_', ' ').title()}"
85
+ readme_text = README_TEMPLATE.format(title=readme_title, package=package_name)
86
+ (package_dir / "README.md").write_text(readme_text, encoding="utf-8")
87
+
88
+ return package_dir
89
+
90
+
91
+ def parse_args() -> argparse.Namespace:
92
+ parser = argparse.ArgumentParser(description="Create the next experiment package in tmp/experiments")
93
+ parser.add_argument("--repo-root", required=True, help="Repository root path")
94
+ parser.add_argument("--experiment-name", required=True, help="Experiment name slug or phrase")
95
+ parser.add_argument("--dry-run", action="store_true", help="Only print target directory")
96
+ return parser.parse_args()
97
+
98
+
99
+ def main() -> None:
100
+ args = parse_args()
101
+ repo_root = Path(args.repo_root).resolve()
102
+ package_dir = create_package(
103
+ repo_root=repo_root,
104
+ experiment_name=args.experiment_name,
105
+ dry_run=args.dry_run,
106
+ )
107
+ print(str(package_dir))
108
+
109
+
110
+ if __name__ == "__main__":
111
+ main()
@@ -0,0 +1,24 @@
1
+ # .git-blame-ignore-revs
2
+ # absolufy-imports - No relative - PEP8 (#8796)
3
+ cccb9d8d8e33a891396b1275c2448c352ef40c27
4
+
5
+ # Update `pre-commit` version (#8691)
6
+ 510bbc380531cbf56a409f1ae68e6fd84a9599e6
7
+
8
+ # Run pyupgrade in CI (#8246)
9
+ 80a82008d5b02a08f6ff59d802defcc43247eb1a
10
+
11
+ # Bump pre-commit hook versions (#7676)
12
+ d6bbbb08c92652eae2820e93edc2f3fe502391d3
13
+
14
+ # Start adding isort (#7370)
15
+ a31c0fc72e1cc59b8b0254965824abb0718c5f56
16
+
17
+ # Rerun with latest black release (#6568)
18
+ 64e2a9b3b9992503221a074a547827501927d1fa
19
+
20
+ # LINT: Fixup black string normalization (#5227)
21
+ d92f4015a1da3da10c04c682ed2acae8469e9576
22
+
23
+ # Apply Black formatting (#4983)
24
+ 7e4beffb339c69278091d4e305c2ae18ddf8c74f
@@ -0,0 +1,2 @@
1
+ See [developer documentation](https://docs.dask.org/en/latest/develop.html)
2
+ for tips on how to get started.
@@ -0,0 +1,3 @@
1
+ - [ ] Closes #xxxx
2
+ - [ ] Tests added / passed
3
+ - [ ] Passes `pre-commit run --all-files`
@@ -0,0 +1,9 @@
1
+ # Set update schedule for GitHub Actions
2
+
3
+ version: 2
4
+ updates:
5
+ - package-ecosystem: "github-actions"
6
+ directory: "/"
7
+ schedule:
8
+ # Check for updates to GitHub Actions every weekday
9
+ interval: "weekly"
@@ -0,0 +1,13 @@
1
+ # These will be overridden by the publish workflow and set to the new tag
2
+ name-template: 'Next Release'
3
+ tag-template: 'next'
4
+
5
+ change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
6
+ change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
7
+
8
+ template: |
9
+ ## Changes
10
+
11
+ $CHANGES
12
+
13
+ See the [Changelog](https://docs.dask.org/en/stable/changelog.html) for more information.
@@ -0,0 +1,26 @@
1
+ # .github/release.yml
2
+
3
+ changelog:
4
+ categories:
5
+ - title: New Features
6
+ labels:
7
+ - feature
8
+ - title: Enhancements
9
+ labels:
10
+ - enhancement
11
+ - title: Bug Fixes
12
+ labels:
13
+ - bug
14
+ - title: Deprecations
15
+ labels:
16
+ - deprecation
17
+ - title: Documentation
18
+ labels:
19
+ - documentation
20
+ - title: Maintenance
21
+ labels:
22
+ - tests
23
+ - hygiene
24
+ - title: Misc
25
+ labels:
26
+ - "*"
@@ -0,0 +1,32 @@
1
+ name: Additional
2
+
3
+ on: [push, pull_request]
4
+
5
+ # Required shell entrypoint to have properly activated conda environments
6
+ defaults:
7
+ run:
8
+ shell: bash -l {0}
9
+
10
+ jobs:
11
+ doctest:
12
+ runs-on: "ubuntu-latest"
13
+ timeout-minutes: 90
14
+ steps:
15
+ - name: Checkout source
16
+ uses: actions/checkout@v6
17
+
18
+ - name: Setup Conda Environment
19
+ uses: conda-incubator/setup-miniconda@v3.3.0
20
+ with:
21
+ miniforge-version: latest
22
+ use-mamba: true
23
+ channel-priority: strict
24
+ environment-file: continuous_integration/environment-3.12.yaml
25
+ activate-environment: test-environment
26
+ auto-activate-base: false
27
+
28
+ - name: Install
29
+ run: source continuous_integration/scripts/install.sh
30
+
31
+ - name: Run tests
32
+ run: pytest -v --doctest-modules --ignore-glob='*/test_*.py' --ignore='dask/array/_array_expr/' dask
@@ -0,0 +1,64 @@
1
+ name: Conda build
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ tags:
7
+ - "*"
8
+ pull_request:
9
+ paths:
10
+ - setup.py
11
+ - continuous_integration/recipe/**
12
+ - .github/workflows/conda.yml
13
+ - pyproject.toml
14
+
15
+ # When this workflow is queued, automatically cancel any previous running
16
+ # or pending jobs from the same branch
17
+ concurrency:
18
+ group: conda-${{ github.ref }}
19
+ cancel-in-progress: true
20
+
21
+ # Required shell entrypoint to have properly activated conda environments
22
+ defaults:
23
+ run:
24
+ shell: bash -l {0}
25
+
26
+ jobs:
27
+ conda:
28
+ name: Build (and upload)
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@v6
32
+ with:
33
+ fetch-depth: 0
34
+ - name: Set up Python
35
+ uses: conda-incubator/setup-miniconda@v3.3.0
36
+ with:
37
+ miniforge-version: latest
38
+ use-mamba: true
39
+ python-version: 3.9
40
+ channel-priority: strict
41
+ - name: Install dependencies
42
+ run: |
43
+ mamba install -c conda-forge boa conda-verify
44
+
45
+ which python
46
+ pip list
47
+ mamba list
48
+ - name: Build conda package
49
+ run: |
50
+ # suffix for nightly package versions
51
+ export VERSION_SUFFIX=a`date +%y%m%d`
52
+
53
+ conda mambabuild continuous_integration/recipe \
54
+ --no-anaconda-upload \
55
+ --output-folder .
56
+ - name: Upload conda package
57
+ if: github.event_name == 'push' && github.repository == 'dask/dask'
58
+ env:
59
+ ANACONDA_API_TOKEN: ${{ secrets.DASK_CONDA_TOKEN }}
60
+ run: |
61
+ # install anaconda for upload
62
+ mamba install -c conda-forge anaconda-client
63
+
64
+ anaconda upload --label dev noarch/*.tar.bz2
@@ -0,0 +1,14 @@
1
+ name: "Issue and PR Labeler"
2
+ on:
3
+ pull_request:
4
+ types: [opened]
5
+ issues:
6
+ types: [opened, reopened]
7
+ jobs:
8
+ label-all-on-open:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: andymckay/labeler@1.0.4
12
+ with:
13
+ add-labels: "needs triage"
14
+ ignore-if-labeled: false
@@ -0,0 +1,18 @@
1
+ name: Linting
2
+
3
+ on:
4
+ push:
5
+ branches: main
6
+ pull_request:
7
+ branches: main
8
+
9
+ jobs:
10
+ checks:
11
+ name: pre-commit hooks
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+ - uses: actions/setup-python@v6
16
+ with:
17
+ python-version: '3.11'
18
+ - uses: pre-commit/action@v3.0.1
@@ -0,0 +1,50 @@
1
+ # Copied from https://github.com/EnricoMi/publish-unit-test-result-action/blob/v1.23/README.md#support-fork-repositories-and-dependabot-branches
2
+ # Warning: changes to this workflow will NOT be picked up until they land in the main branch!
3
+ # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_run
4
+
5
+ name: Publish test results
6
+
7
+ on:
8
+ workflow_run:
9
+ workflows: [Tests]
10
+ types: [completed]
11
+
12
+ jobs:
13
+ publish-test-results:
14
+ name: Publish test results
15
+ runs-on: ubuntu-latest
16
+ if: github.event.workflow_run.conclusion != 'skipped'
17
+
18
+ # Needed to post comments on the PR
19
+ permissions:
20
+ checks: write
21
+ pull-requests: write
22
+
23
+ steps:
24
+ - name: Download and extract artifacts
25
+ env:
26
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
27
+ run: |
28
+ mkdir artifacts && cd artifacts
29
+
30
+ artifacts_url=${{ github.event.workflow_run.artifacts_url }}
31
+
32
+ gh api --paginate "$artifacts_url" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact
33
+ do
34
+ IFS=$'\t' read name url <<< "$artifact"
35
+ gh api $url > "$name.zip"
36
+ unzip -d "$name" "$name.zip"
37
+ done
38
+
39
+ - name: Publish Unit Test Results
40
+ uses: EnricoMi/publish-unit-test-result-action@v2
41
+ with:
42
+ check_name: Unit Test Results
43
+ comment_title: |
44
+ Unit Test Results
45
+ _See [test report](https://dask.github.io/dask/test_report.html) for an extended history of previous test failures. This is useful for diagnosing flaky tests._
46
+ commit: ${{ github.event.workflow_run.head_sha }}
47
+ event_file: artifacts/Event File/event.json
48
+ event_name: ${{ github.event.workflow_run.event }}
49
+ junit_files: artifacts/**/*.xml
50
+ fail_on: "errors"
@@ -0,0 +1,32 @@
1
+ name: Release Drafter
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ update_release_draft:
13
+ if: github.repository == 'dask/dask'
14
+ permissions:
15
+ # Write permission is required to create a GitHub release
16
+ contents: write
17
+ pull-requests: read
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v6
21
+ with:
22
+ fetch-depth: 0 # Required to get tag history
23
+ - name: Check if release commit
24
+ id: check_release_commit
25
+ run: git describe --exact-match --tags $(git rev-parse HEAD)
26
+ continue-on-error: true
27
+ - uses: release-drafter/release-drafter@v6
28
+ if: steps.check_release_commit.outcome != 'success'
29
+ with:
30
+ disable-autolabeler: true
31
+ env:
32
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,33 @@
1
+ name: Release Publisher
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "*.*.*"
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ publish_release:
13
+ if: github.repository == 'dask/dask'
14
+ permissions:
15
+ # Write permission is required to publish a GitHub release
16
+ contents: write
17
+ pull-requests: read
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - name: Set version env
21
+ # Use a little bit of bash to extract the tag name from the GitHub ref
22
+ run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
23
+ - uses: release-drafter/release-drafter@v6
24
+ with:
25
+ disable-autolabeler: true
26
+ # Override the Release name/tag/version with the actual tag name
27
+ name: ${{ env.RELEASE_VERSION }}
28
+ tag: ${{ env.RELEASE_VERSION }}
29
+ version: ${{ env.RELEASE_VERSION }}
30
+ # Publish the Release
31
+ publish: true
32
+ env:
33
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,20 @@
1
+ name: 'Label stale issues and PRs'
2
+ on:
3
+ schedule:
4
+ - cron: '30 1 * * 1' # runs once a week
5
+
6
+ jobs:
7
+ stale:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/stale@v10
11
+ with:
12
+ stale-issue-message: '' # no comment left if string is empty
13
+ stale-pr-message: '' # no comment left if string is empty
14
+ days-before-stale: 30
15
+ days-before-close: -1
16
+ stale-issue-label: 'needs attention'
17
+ stale-pr-label: 'needs attention'
18
+ exempt-issue-labels: 'good intro to dask,good first issue,Good First Issue,good second issue,feature request'
19
+ exempt-draft-pr: true
20
+ start-date: '2020-04-18T00:00:00Z' # ignore before this date, ISO 8601 or RFC 2822
@@ -0,0 +1,66 @@
1
+ name: Test Report
2
+
3
+ on:
4
+ schedule:
5
+ # Run 2h after the daily tests.yaml
6
+ - cron: "0 8,20 * * *"
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ test-report:
14
+ name: Test Report
15
+ # Do not run the report job on forks
16
+ if: github.repository == 'dask/dask' || github.event_name == 'workflow_dispatch'
17
+ runs-on: ubuntu-latest
18
+ env:
19
+ GITHUB_TOKEN: ${{ github.token }}
20
+ defaults:
21
+ run:
22
+ shell: bash -l {0}
23
+ steps:
24
+ - uses: actions/checkout@v6
25
+ with:
26
+ repository: dask/distributed
27
+
28
+ - name: Setup Conda Environment
29
+ uses: conda-incubator/setup-miniconda@v3.3.0
30
+ with:
31
+ miniforge-version: latest
32
+ condarc-file: continuous_integration/condarc
33
+ use-mamba: true
34
+ # Note: this file is in the dask/distributed repo
35
+ environment-file: continuous_integration/scripts/test-report-environment.yml
36
+ activate-environment: dask
37
+
38
+ - name: Show conda options
39
+ run: conda config --show
40
+
41
+ - name: mamba list
42
+ run: mamba list
43
+
44
+ - uses: actions/cache@v5
45
+ id: cache
46
+ with:
47
+ # Suffix is depending on the backend / OS. Let's be agnostic here
48
+ # See https://docs.python.org/3/library/shelve.html#shelve.open
49
+ path: |
50
+ test_report*
51
+ !test_report.html
52
+ # Note: these files are in the dask/distributed repository
53
+ key: ${{ hashFiles('continuous_integration/scripts/test_report*') }}
54
+
55
+ - name: Generate report
56
+ run: |
57
+ python continuous_integration/scripts/test_report.py --repo dask/dask --max-days 90 --max-runs 30 --nfails 1 -o test_report.html
58
+ python continuous_integration/scripts/test_report.py --repo dask/dask --max-days 7 --max-runs 30 --nfails 2 -o test_short_report.html --title "Test Short Report"
59
+ mkdir deploy
60
+ mv test_report.html test_short_report.html deploy/
61
+
62
+ - name: Deploy 🚀
63
+ uses: JamesIves/github-pages-deploy-action@v4.8.0
64
+ with:
65
+ branch: gh-pages
66
+ folder: deploy