pipefunc 0.91.0__tar.gz → 0.92.0__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 (237) hide show
  1. {pipefunc-0.91.0 → pipefunc-0.92.0}/.devcontainer/Dockerfile +1 -1
  2. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/codspeed.yml +1 -1
  3. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/doc-string-check.yml +2 -2
  4. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/pr-title-checker.yml +2 -2
  5. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/pytest-micromamba.yml +2 -2
  6. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/pytest-uv.yml +1 -1
  7. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/pythonpublish.yml +1 -1
  8. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/release-drafter.yaml +1 -1
  9. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/update-environment.yaml +1 -1
  10. {pipefunc-0.91.0 → pipefunc-0.92.0}/CHANGELOG.md +296 -0
  11. {pipefunc-0.91.0 → pipefunc-0.92.0}/PKG-INFO +17 -17
  12. {pipefunc-0.91.0 → pipefunc-0.92.0}/README.md +16 -16
  13. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/caching.md +1 -0
  14. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/execution-and-parallelism.md +4 -2
  15. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/run-status.md +0 -3
  16. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/type-checking.md +45 -0
  17. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/faq.md +4 -0
  18. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipefunc.py +45 -11
  19. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_base.py +58 -20
  20. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_utils.py +18 -0
  21. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_version.py +1 -1
  22. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/cache.py +62 -4
  23. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/__init__.py +5 -1
  24. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_load.py +6 -6
  25. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_prepare.py +7 -3
  26. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_run.py +25 -5
  27. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_run_eager.py +6 -3
  28. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_run_eager_async.py +6 -3
  29. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/_zarr.py +1 -1
  30. pipefunc-0.92.0/tests/map/test_cache_result_dict.py +40 -0
  31. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_map.py +115 -1
  32. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_cache.py +50 -0
  33. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_nested_pipefunc.py +2 -2
  34. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipefunc.py +62 -16
  35. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline.py +53 -2
  36. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_resources.py +1 -1
  37. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_run_status_cli.py +27 -16
  38. {pipefunc-0.91.0 → pipefunc-0.92.0}/.devcontainer/devcontainer.json +0 -0
  39. {pipefunc-0.91.0 → pipefunc-0.92.0}/.gitattributes +0 -0
  40. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/doc-string-check.py +0 -0
  41. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/generate-release-notes.py +0 -0
  42. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/pr-title-checker-config.json +0 -0
  43. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/release-drafter.yml +0 -0
  44. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/renovate.json +0 -0
  45. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/update-environment.py +0 -0
  46. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/codeql.yml +0 -0
  47. {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/toc.yaml +0 -0
  48. {pipefunc-0.91.0 → pipefunc-0.92.0}/.gitignore +0 -0
  49. {pipefunc-0.91.0 → pipefunc-0.92.0}/.pre-commit-config.yaml +0 -0
  50. {pipefunc-0.91.0 → pipefunc-0.92.0}/.readthedocs.yml +0 -0
  51. {pipefunc-0.91.0 → pipefunc-0.92.0}/.vscode/launch.json +0 -0
  52. {pipefunc-0.91.0 → pipefunc-0.92.0}/.vscode/settings.json +0 -0
  53. {pipefunc-0.91.0 → pipefunc-0.92.0}/AUTHORS.md +0 -0
  54. {pipefunc-0.91.0 → pipefunc-0.92.0}/LICENSE +0 -0
  55. {pipefunc-0.91.0 → pipefunc-0.92.0}/MANIFEST.in +0 -0
  56. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/.gitignore +0 -0
  57. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/Makefile +0 -0
  58. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/environment-sphinx.yml +0 -0
  59. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/_static/custom.css +0 -0
  60. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/changelog.md +0 -0
  61. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/adaptive-integration.md +0 -0
  62. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/chaining.md +0 -0
  63. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/cli.md +0 -0
  64. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/error-handling.md +0 -0
  65. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/function-io.md +0 -0
  66. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/index.md +0 -0
  67. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/map_async_in_script.py +0 -0
  68. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/mapspec.md +0 -0
  69. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/mcp.md +0 -0
  70. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/mcp_agent.py +0 -0
  71. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/mcp_server.py +0 -0
  72. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/overhead-and-efficiency.md +0 -0
  73. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/parameter-scopes.md +0 -0
  74. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/parameter-sweeps.md +0 -0
  75. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/resource-management.md +0 -0
  76. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/simplifying-pipelines.md +0 -0
  77. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/slurm.md +0 -0
  78. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/testing.md +0 -0
  79. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/variants.md +0 -0
  80. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/conf.py +0 -0
  81. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/basic-usage.md +0 -0
  82. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/image-processing.md +0 -0
  83. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/index.md +0 -0
  84. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/nlp-text-summarization.md +0 -0
  85. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/physics-simulation.md +0 -0
  86. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/sensor-data-processing.md +0 -0
  87. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/weather-simulation.md +0 -0
  88. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/index.md +0 -0
  89. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/index.md +0 -0
  90. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.cache.md +0 -0
  91. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.helpers.md +0 -0
  92. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.lazy.md +0 -0
  93. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.map.adaptive.md +0 -0
  94. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.map.adaptive_scheduler.md +0 -0
  95. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.map.md +0 -0
  96. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.map.xarray.md +0 -0
  97. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.mcp.md +0 -0
  98. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.md +0 -0
  99. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.resources.md +0 -0
  100. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.sweep.md +0 -0
  101. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.testing.md +0 -0
  102. {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.typing.md +0 -0
  103. {pipefunc-0.91.0 → pipefunc-0.92.0}/environment.yml +0 -0
  104. {pipefunc-0.91.0 → pipefunc-0.92.0}/example.ipynb +0 -0
  105. {pipefunc-0.91.0 → pipefunc-0.92.0}/get-notebooks.py +0 -0
  106. {pipefunc-0.91.0 → pipefunc-0.92.0}/noxfile.py +0 -0
  107. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/__init__.py +0 -0
  108. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_adaptive.py +0 -0
  109. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_error_handling.py +0 -0
  110. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipefunc_utils.py +0 -0
  111. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/__init__.py +0 -0
  112. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_autodoc.py +0 -0
  113. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_cache.py +0 -0
  114. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_cli.py +0 -0
  115. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_mapspec.py +0 -0
  116. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_pydantic.py +0 -0
  117. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_simplify.py +0 -0
  118. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_types.py +0 -0
  119. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_validation.py +0 -0
  120. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_plotting.py +0 -0
  121. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_plotting_utils.py +0 -0
  122. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_profile.py +0 -0
  123. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_run_status.py +0 -0
  124. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_run_status_cli.py +0 -0
  125. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_run_status_heartbeat.py +0 -0
  126. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_variant_pipeline.py +0 -0
  127. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/__init__.py +0 -0
  128. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/async_status_widget.py +0 -0
  129. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/helpers.py +0 -0
  130. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/output_tabs.py +0 -0
  131. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/progress_base.py +0 -0
  132. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/progress_headless.py +0 -0
  133. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/progress_ipywidgets.py +0 -0
  134. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/progress_rich.py +0 -0
  135. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/exceptions.py +0 -0
  136. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/helpers.py +0 -0
  137. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/lazy.py +0 -0
  138. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/LICENSE +0 -0
  139. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_adaptive_scheduler_slurm_executor.py +0 -0
  140. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_mapspec.py +0 -0
  141. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_progress.py +0 -0
  142. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_result.py +0 -0
  143. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_run_info.py +0 -0
  144. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_shapes.py +0 -0
  145. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/__init__.py +0 -0
  146. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/_base.py +0 -0
  147. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/_dict.py +0 -0
  148. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/_file.py +0 -0
  149. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_types.py +0 -0
  150. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/adaptive.py +0 -0
  151. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/adaptive_scheduler.py +0 -0
  152. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/xarray.py +0 -0
  153. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/mcp.py +0 -0
  154. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/py.typed +0 -0
  155. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/resources.py +0 -0
  156. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/sweep.py +0 -0
  157. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/testing.py +0 -0
  158. {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/typing.py +0 -0
  159. {pipefunc-0.91.0 → pipefunc-0.92.0}/pyproject.toml +0 -0
  160. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/__init__.py +0 -0
  161. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/conftest.py +0 -0
  162. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/helpers.py +0 -0
  163. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/__init__.py +0 -0
  164. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/__init__.py +0 -0
  165. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_error_handling.py +0 -0
  166. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_error_handling_basic.py +0 -0
  167. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_error_handling_parallel_regressions.py +0 -0
  168. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_error_handling_potential_issues.py +0 -0
  169. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_propagation_reason_selection.py +0 -0
  170. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_regressions_propagated_root_causes.py +0 -0
  171. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_run_info_backward_compat.py +0 -0
  172. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/storage/__init__.py +0 -0
  173. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/storage/test_error_handling_storage.py +0 -0
  174. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/test_error_handling_scan_inputs.py +0 -0
  175. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/__init__.py +0 -0
  176. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/storage/__init__.py +0 -0
  177. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/storage/test_all_storage.py +0 -0
  178. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/storage/test_file.py +0 -0
  179. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/storage/test_zarr.py +0 -0
  180. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_adaptive.py +0 -0
  181. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_adaptive_scheduler.py +0 -0
  182. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_adaptive_slurm_executor.py +0 -0
  183. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_async_map_block.py +0 -0
  184. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_eager_scheduler.py +0 -0
  185. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_fixed_indices.py +0 -0
  186. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_map_chunking.py +0 -0
  187. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_mapspec.py +0 -0
  188. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_regular_regressions.py +0 -0
  189. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_result.py +0 -0
  190. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_resume_validation.py +0 -0
  191. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_run_dynamic_internal_shape.py +0 -0
  192. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_sweeps.py +0 -0
  193. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_xarray.py +0 -0
  194. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/regressions/__init__.py +0 -0
  195. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/regressions/test_cache_reraise_single.py +0 -0
  196. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/regressions/test_regressions_cache_error_handling.py +0 -0
  197. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_adaptive_run.py +0 -0
  198. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_async_status_widget.py +0 -0
  199. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_autodoc.py +0 -0
  200. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_benchmark.py +0 -0
  201. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_cache_memoize.py +0 -0
  202. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_cache_to_hashable.py +0 -0
  203. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_cli.py +0 -0
  204. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_helpers.py +0 -0
  205. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_helpers_chain.py +0 -0
  206. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_lazy.py +0 -0
  207. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_mcp.py +0 -0
  208. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_namedtuple_output.py +0 -0
  209. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_output_tabs_widget.py +0 -0
  210. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_perf.py +0 -0
  211. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipefunc_annotations.py +0 -0
  212. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipefunc_signature.py +0 -0
  213. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_annotations.py +0 -0
  214. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_cache.py +0 -0
  215. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_lazy.py +0 -0
  216. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_mapspec.py +0 -0
  217. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_post_execution_hook.py +0 -0
  218. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_update.py +0 -0
  219. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_plotting.py +0 -0
  220. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_plotting_utils.py +0 -0
  221. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pydantic.py +0 -0
  222. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_resources.py +0 -0
  223. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_simplify.py +0 -0
  224. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_sweep.py +0 -0
  225. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_testing.py +0 -0
  226. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_typing.py +0 -0
  227. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_typing_future_annotations.py +0 -0
  228. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_utils.py +0 -0
  229. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_variant_pipeline.py +0 -0
  230. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_variant_pipeline_widgets.py +0 -0
  231. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_widget_progress_tracker_ipywidgets.py +0 -0
  232. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_widget_progress_tracker_rich.py +0 -0
  233. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/__init__.py +0 -0
  234. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/error_handling/__init__.py +0 -0
  235. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/error_handling/test_error_info_and_snapshots.py +0 -0
  236. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/error_handling/test_output_picker_error_snapshot.py +0 -0
  237. {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/error_handling/test_propagated_snapshot_serialization.py +0 -0
@@ -1,4 +1,4 @@
1
- ARG UV_VERSION=0.10.8
1
+ ARG UV_VERSION=0.11.19
2
2
  ARG DEBIAN_VERSION=bookworm
3
3
 
4
4
  FROM ghcr.io/astral-sh/uv:$UV_VERSION AS uv
@@ -27,7 +27,7 @@ jobs:
27
27
  cat environment.yml
28
28
 
29
29
  - name: Install Conda environment with micromamba
30
- uses: mamba-org/setup-micromamba@v2
30
+ uses: mamba-org/setup-micromamba@v3
31
31
  with:
32
32
  environment-file: environment.yml
33
33
  cache-environment: true
@@ -17,12 +17,12 @@ jobs:
17
17
  uses: actions/checkout@v6
18
18
 
19
19
  - name: Install uv
20
- uses: astral-sh/setup-uv@v7
20
+ uses: astral-sh/setup-uv@v8.2.0
21
21
 
22
22
  - name: Set up Python
23
23
  uses: actions/setup-python@v6
24
24
  with:
25
- python-version: "3.14.3"
25
+ python-version: "3.14.5"
26
26
 
27
27
  - name: Install pipefunc
28
28
  shell: bash -l {0}
@@ -22,7 +22,7 @@ jobs:
22
22
  configuration_path: .github/pr-title-checker-config.json
23
23
 
24
24
  - name: Add comment to fix PR title
25
- uses: marocchino/sticky-pull-request-comment@v2
25
+ uses: marocchino/sticky-pull-request-comment@v3.0.4
26
26
  if: ${{ steps.check.outputs.success == 'false'}}
27
27
  with:
28
28
  header: 'PR Title Check'
@@ -44,7 +44,7 @@ jobs:
44
44
 
45
45
  - name: Add comment that PR title is fixed
46
46
  if: ${{ steps.check.outputs.success == 'true'}}
47
- uses: marocchino/sticky-pull-request-comment@v2
47
+ uses: marocchino/sticky-pull-request-comment@v3.0.4
48
48
  with:
49
49
  header: 'PR Title Check'
50
50
  recreate: true
@@ -25,7 +25,7 @@ jobs:
25
25
  cat environment.yml
26
26
 
27
27
  - name: Install Conda environment with micromamba
28
- uses: mamba-org/setup-micromamba@v2
28
+ uses: mamba-org/setup-micromamba@v3
29
29
  with:
30
30
  environment-file: environment.yml
31
31
  cache-environment: true
@@ -43,6 +43,6 @@ jobs:
43
43
 
44
44
  - name: Upload coverage to Codecov
45
45
  if: matrix.python-version == '3.14'
46
- uses: codecov/codecov-action@v5
46
+ uses: codecov/codecov-action@v7
47
47
  env:
48
48
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
@@ -18,7 +18,7 @@ jobs:
18
18
  with:
19
19
  fetch-depth: 0
20
20
  - name: Install uv
21
- uses: astral-sh/setup-uv@v7
21
+ uses: astral-sh/setup-uv@v8.2.0
22
22
  - name: Run pytest (minimal)
23
23
  run: uvx nox -e pytest_min_deps-${{ matrix.python-version }} -v
24
24
  - name: Run pytest (all dependencies)
@@ -17,7 +17,7 @@ jobs:
17
17
  with:
18
18
  fetch-depth: 0
19
19
  - name: Install uv
20
- uses: astral-sh/setup-uv@v7
20
+ uses: astral-sh/setup-uv@v8.2.0
21
21
  - name: Build
22
22
  run: uv build
23
23
  - name: Publish package distributions to PyPI
@@ -11,6 +11,6 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  steps:
13
13
  - name: 🚀 Run Release Drafter
14
- uses: release-drafter/release-drafter@v6.3.0
14
+ uses: release-drafter/release-drafter@v7.3.1
15
15
  env:
16
16
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -19,7 +19,7 @@ jobs:
19
19
  - name: Set up Python
20
20
  uses: actions/setup-python@v6
21
21
  with:
22
- python-version: '3.14.3'
22
+ python-version: '3.14.5'
23
23
 
24
24
  - name: Run update-environment
25
25
  run: python .github/update-environment.py
@@ -5,6 +5,285 @@ If it is out of date, please run
5
5
 
6
6
  GITHUB_TOKEN=$(gh auth token) uv run .github/generate-release-notes.py
7
7
 
8
+ ## v0.91.1 (2026-03-06)
9
+
10
+ ### 🧹 Maintenance
11
+
12
+ - suppress google-crc32c pure-python fallback warning ([#942](https://github.com/pipefunc/pipefunc/pull/942))
13
+
14
+ ### 📊 Stats
15
+
16
+ - `.md`: +0 lines, -3 lines
17
+ - `.py`: +9 lines, -12 lines
18
+
19
+ ## v0.91.0 (2026-03-06)
20
+
21
+ ### ✨ Enhancements
22
+
23
+ - harden persisted run status error handling ([#940](https://github.com/pipefunc/pipefunc/pull/940))
24
+ - Add persisted run status CLI ([#938](https://github.com/pipefunc/pipefunc/pull/938))
25
+
26
+ ### 📦 Dependencies
27
+
28
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.10.8 ([#937](https://github.com/pipefunc/pipefunc/pull/937))
29
+ - ⬆️ Update release-drafter/release-drafter action to v6.3.0 ([#939](https://github.com/pipefunc/pipefunc/pull/939))
30
+
31
+ ### 🧪 Testing
32
+
33
+ - Add tests to reach 100% code coverage ([#936](https://github.com/pipefunc/pipefunc/pull/936))
34
+
35
+ ### 📊 Stats
36
+
37
+ - `.yaml`: +1 lines, -1 lines
38
+ - `.md`: +130 lines, -0 lines
39
+ - `.py`: +1900 lines, -119 lines
40
+ - `.toml`: +3 lines, -0 lines
41
+ - `other`: +1 lines, -1 lines
42
+
43
+ ## v0.90.3 (2026-02-06)
44
+
45
+ ### 🐛 Bug Fixes
46
+
47
+ - Fix Slurm executor validation in launch_maps ([#912](https://github.com/pipefunc/pipefunc/pull/912))
48
+
49
+ ### 📦 Dependencies
50
+
51
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.10.0 ([#931](https://github.com/pipefunc/pipefunc/pull/931))
52
+ - ⬆️ Update release-drafter/release-drafter action to v6.2.0 ([#933](https://github.com/pipefunc/pipefunc/pull/933))
53
+ - ⬆️ Update python to v3.14.3 ([#934](https://github.com/pipefunc/pipefunc/pull/934))
54
+ - ⬆️ Update release-drafter/release-drafter action to v6.1.1 ([#932](https://github.com/pipefunc/pipefunc/pull/932))
55
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.9.24 ([#930](https://github.com/pipefunc/pipefunc/pull/930))
56
+
57
+ ### 🧪 Testing
58
+
59
+ - Add regression test for SlurmExecutor reuse across pipeline generations ([#935](https://github.com/pipefunc/pipefunc/pull/935))
60
+
61
+ ### 📊 Stats
62
+
63
+ - `.yml`: +1 lines, -1 lines
64
+ - `.yaml`: +2 lines, -2 lines
65
+ - `.py`: +106 lines, -12 lines
66
+ - `other`: +1 lines, -1 lines
67
+
68
+ ## v0.90.2 (2026-01-05)
69
+
70
+ ### 📝 Other
71
+
72
+ - Fix CI failure on Python 3.13/3.14 with numpy 2.4.0+ ([#929](https://github.com/pipefunc/pipefunc/pull/929))
73
+
74
+ ### 📦 Dependencies
75
+
76
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.9.21 ([#928](https://github.com/pipefunc/pipefunc/pull/928))
77
+
78
+ ### 📊 Stats
79
+
80
+ - `.py`: +1 lines, -1 lines
81
+ - `other`: +1 lines, -1 lines
82
+
83
+ ## v0.90.1 (2025-12-12)
84
+
85
+ ### 📝 Other
86
+
87
+ - Add concise __repr__ methods to ErrorSnapshot and PropagatedErrorSnapshot ([#927](https://github.com/pipefunc/pipefunc/pull/927))
88
+
89
+ ### 📊 Stats
90
+
91
+ - `.py`: +13 lines, -2 lines
92
+
93
+ ## v0.90.0 (2025-12-12)
94
+
95
+ ### ✨ Enhancements
96
+
97
+ - `error_handling` options (`raise` and `continue`) ([#854](https://github.com/pipefunc/pipefunc/pull/854))
98
+
99
+ ### 📦 Dependencies
100
+
101
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.9.17 ([#922](https://github.com/pipefunc/pipefunc/pull/922))
102
+ - ⬆️ Update python to v3.14.2 ([#926](https://github.com/pipefunc/pipefunc/pull/926))
103
+
104
+ ### 📊 Stats
105
+
106
+ - `.yml`: +1 lines, -1 lines
107
+ - `.yaml`: +1 lines, -1 lines
108
+ - `.md`: +135 lines, -45 lines
109
+ - `.py`: +4852 lines, -158 lines
110
+ - `other`: +6 lines, -2 lines
111
+
112
+ ## v0.89.0 (2025-12-03)
113
+
114
+ ### Closed Issues
115
+
116
+ - Results.to_dataframe() fails for scalar outputs with __getitem__ ([#924](https://github.com/pipefunc/pipefunc/issues/924))
117
+
118
+ ### 📦 Dependencies
119
+
120
+ - ⬆️ Update actions/checkout action to v6 ([#923](https://github.com/pipefunc/pipefunc/pull/923))
121
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.9.7 ([#908](https://github.com/pipefunc/pipefunc/pull/908))
122
+
123
+ ### 🐛 Bug Fixes
124
+
125
+ - Fix Results.to_dataframe() for scalar outputs with __getitem__ ([#925](https://github.com/pipefunc/pipefunc/pull/925))
126
+
127
+ ### 🧹 Maintenance
128
+
129
+ - Deprecate `cleanup` parameter in favor of `resume` parameter ([#921](https://github.com/pipefunc/pipefunc/pull/921))
130
+
131
+ ### ✨ Enhancements
132
+
133
+ - Add `reuse_validation` parameter to `pipeline.map()` ([#920](https://github.com/pipefunc/pipefunc/pull/920))
134
+
135
+ ### 📚 Documentation
136
+
137
+ - Fix 'Function Chaining Helper' docs typo ([#919](https://github.com/pipefunc/pipefunc/pull/919))
138
+
139
+ ### 📊 Stats
140
+
141
+ - `.yml`: +6 lines, -6 lines
142
+ - `.yaml`: +1 lines, -1 lines
143
+ - `.md`: +5 lines, -5 lines
144
+ - `.py`: +783 lines, -51 lines
145
+ - `other`: +1 lines, -1 lines
146
+
147
+ ## v0.88.0 (2025-11-04)
148
+
149
+ ### 📚 Documentation
150
+
151
+ - Add missing 'Function Chaining Helper' in index ([#918](https://github.com/pipefunc/pipefunc/pull/918))
152
+
153
+ ### ✨ Enhancements
154
+
155
+ - Add `pipefunc.helpers.chain` for auto-renaming linear pipelines ([#909](https://github.com/pipefunc/pipefunc/pull/909))
156
+ - Support and require Zarr v3 ([#523](https://github.com/pipefunc/pipefunc/pull/523))
157
+ - Extend `AsyncMap.result()` for use in scripts ([#911](https://github.com/pipefunc/pipefunc/pull/911))
158
+
159
+ ### 🤖 CI
160
+
161
+ - Add Python 3.14 variants to pytest uv workflow ([#913](https://github.com/pipefunc/pipefunc/pull/913))
162
+ - Fix free-threaded dependencies ([#917](https://github.com/pipefunc/pipefunc/pull/917))
163
+
164
+ ### 🧪 Testing
165
+
166
+ - Allow async map call order variance ([#916](https://github.com/pipefunc/pipefunc/pull/916))
167
+
168
+ ### 🧹 Maintenance
169
+
170
+ - Drop Python 3.10 support ([#914](https://github.com/pipefunc/pipefunc/pull/914))
171
+
172
+ ### 📦 Dependencies
173
+
174
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.9.4 ([#904](https://github.com/pipefunc/pipefunc/pull/904))
175
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.9.1 ([#900](https://github.com/pipefunc/pipefunc/pull/900))
176
+
177
+ ### 📝 Other
178
+
179
+ - Add ProcessPool error snapshot regression test ([#907](https://github.com/pipefunc/pipefunc/pull/907))
180
+ - Skip SLURM tests when /bin/bash is missing ([#906](https://github.com/pipefunc/pipefunc/pull/906))
181
+
182
+ ### 📊 Stats
183
+
184
+ - `.yml`: +9 lines, -9 lines
185
+ - `.md`: +91 lines, -0 lines
186
+ - `.py`: +1053 lines, -92 lines
187
+ - `.toml`: +6 lines, -5 lines
188
+ - `other`: +1 lines, -1 lines
189
+
190
+ ## v0.87.1 (2025-10-10)
191
+
192
+ ### 📚 Documentation
193
+
194
+ - Add comparison section with Hamilton ([#502](https://github.com/pipefunc/pipefunc/pull/502))
195
+
196
+ ### 🐛 Bug Fixes
197
+
198
+ - Fix 1D array single outputs stored as coordinates instead of data variables ([#899](https://github.com/pipefunc/pipefunc/pull/899))
199
+
200
+ ### 📊 Stats
201
+
202
+ - `.md`: +27 lines, -0 lines
203
+ - `.py`: +287 lines, -15 lines
204
+
205
+ ## v0.87.0 (2025-10-09)
206
+
207
+ ### 🐛 Bug Fixes
208
+
209
+ - Fix path resolution and add legacy format support for RunInfo.load ([#898](https://github.com/pipefunc/pipefunc/pull/898))
210
+ - Fix path resolution when loading from different working directory ([#893](https://github.com/pipefunc/pipefunc/pull/893))
211
+ - Fix load_dataframe failing on list/tuple outputs not in mapspec ([#892](https://github.com/pipefunc/pipefunc/pull/892))
212
+
213
+ ### ✨ Enhancements
214
+
215
+ - Add first-class Polars DataFrame support ([#882](https://github.com/pipefunc/pipefunc/pull/882))
216
+ - Add rename_axes method to ArraySpec and MapSpec and add PipeFunc.update_mapspec_axes ([#889](https://github.com/pipefunc/pipefunc/pull/889))
217
+
218
+ ### 📝 Other
219
+
220
+ - Revert "BUG: Fix path resolution when loading from different working directory (#893)" ([#897](https://github.com/pipefunc/pipefunc/pull/897))
221
+
222
+ ### 📚 Documentation
223
+
224
+ - Add MCP Server Integration documentation ([#891](https://github.com/pipefunc/pipefunc/pull/891))
225
+
226
+ ### 🧹 Maintenance
227
+
228
+ - Skip coverage on version branch (get to 100%) ([#894](https://github.com/pipefunc/pipefunc/pull/894))
229
+ - Update fastmcp to >=2.12.0 and fix compatibility issues ([#890](https://github.com/pipefunc/pipefunc/pull/890))
230
+ - Factor out `_get_item_sliced` from `DictArray.__getitem__` to simplify diff of #720 ([#884](https://github.com/pipefunc/pipefunc/pull/884))
231
+
232
+ ### 📦 Dependencies
233
+
234
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.9.0 ([#885](https://github.com/pipefunc/pipefunc/pull/885))
235
+ - ⬆️ Update astral-sh/setup-uv action to v7 ([#888](https://github.com/pipefunc/pipefunc/pull/888))
236
+ - ⬆️ Update github/codeql-action action to v4 ([#887](https://github.com/pipefunc/pipefunc/pull/887))
237
+ - ⬆️ Update python to v3.14.0 ([#886](https://github.com/pipefunc/pipefunc/pull/886))
238
+ - ⬆️ Update ghcr.io/astral-sh/uv Docker tag to v0.8.23 ([#753](https://github.com/pipefunc/pipefunc/pull/753))
239
+ - ⬆️ Update actions/checkout action to v5 ([#870](https://github.com/pipefunc/pipefunc/pull/870))
240
+ - ⬆️ Update CodSpeedHQ/action action to v4 ([#872](https://github.com/pipefunc/pipefunc/pull/872))
241
+ - ⬆️ Update actions/setup-python action to v6 ([#873](https://github.com/pipefunc/pipefunc/pull/873))
242
+
243
+ ### 🧪 Testing
244
+
245
+ - add regression coverage for regular arrays ([#883](https://github.com/pipefunc/pipefunc/pull/883))
246
+
247
+ ### 🤖 CI
248
+
249
+ - Set `mode: instrumentation` in codspeed.yml ([#875](https://github.com/pipefunc/pipefunc/pull/875))
250
+
251
+ ### 📊 Stats
252
+
253
+ - `.yml`: +20 lines, -21 lines
254
+ - `.yaml`: +3 lines, -3 lines
255
+ - `.md`: +238 lines, -0 lines
256
+ - `.py`: +1013 lines, -115 lines
257
+ - `.toml`: +5 lines, -3 lines
258
+ - `other`: +3 lines, -1 lines
259
+
260
+ ## v0.86.0 (2025-09-10)
261
+
262
+ ### ✨ Enhancements
263
+
264
+ - Extract type annotations from NamedTuple return types ([#874](https://github.com/pipefunc/pipefunc/pull/874))
265
+
266
+ ### 📦 Dependencies
267
+
268
+ - ⬆️ Update python to v3.13.7 ([#869](https://github.com/pipefunc/pipefunc/pull/869))
269
+
270
+ ### 🔄 Pre-commit
271
+
272
+ - [pre-commit.ci] pre-commit autoupdate ([#861](https://github.com/pipefunc/pipefunc/pull/861))
273
+
274
+ ### 📚 Documentation
275
+
276
+ - Add `llms.txt` and `llms-full.txt` to the documentation ([#866](https://github.com/pipefunc/pipefunc/pull/866))
277
+ - Update `CHANGELOG.md` until v0.85.2 ([#864](https://github.com/pipefunc/pipefunc/pull/864))
278
+
279
+ ### 📊 Stats
280
+
281
+ - `.yml`: +3 lines, -1 lines
282
+ - `.yaml`: +3 lines, -3 lines
283
+ - `.md`: +115 lines, -1 lines
284
+ - `.py`: +146 lines, -0 lines
285
+ - `.toml`: +2 lines, -0 lines
286
+
8
287
  ## v0.85.2 (2025-07-15)
9
288
 
10
289
  ### ✨ Enhancements
@@ -26,6 +305,10 @@ GITHUB_TOKEN=$(gh auth token) uv run .github/generate-release-notes.py
26
305
 
27
306
  ## v0.85.1 (2025-07-10)
28
307
 
308
+ ### Closed Issues
309
+
310
+ - BUG: `Pipeline.update_defaults` with inputs that do not support `__eq__` fails. ([#856](https://github.com/pipefunc/pipefunc/issues/856))
311
+
29
312
  ### 🐛 Bug Fixes
30
313
 
31
314
  - Cast to `bool` to prevent issues with custom equality methods ([#859](https://github.com/pipefunc/pipefunc/pull/859))
@@ -89,6 +372,10 @@ GITHUB_TOKEN=$(gh auth token) uv run .github/generate-release-notes.py
89
372
 
90
373
  ## v0.83.0 (2025-06-20)
91
374
 
375
+ ### Closed Issues
376
+
377
+ - update_defaults does not allow for a scope-keyed nested dictionary ([#810](https://github.com/pipefunc/pipefunc/issues/810))
378
+
92
379
  ### 🧹 Maintenance
93
380
 
94
381
  - Add typed `handle_pipefunc_error` function ([#844](https://github.com/pipefunc/pipefunc/pull/844))
@@ -165,6 +452,10 @@ GITHUB_TOKEN=$(gh auth token) uv run .github/generate-release-notes.py
165
452
 
166
453
  ## v0.82.0 (2025-06-18)
167
454
 
455
+ ### Closed Issues
456
+
457
+ - `Pipeline.subpipeline` handles optional inputs as required when validating new `root_args` ([#825](https://github.com/pipefunc/pipefunc/issues/825))
458
+
168
459
  ### ✨ Enhancements
169
460
 
170
461
  - Add support for suppressing runtime error logs in `PipeFunc` and `Pipeline` classes ([#827](https://github.com/pipefunc/pipefunc/pull/827))
@@ -400,6 +691,11 @@ GITHUB_TOKEN=$(gh auth token) uv run .github/generate-release-notes.py
400
691
 
401
692
  ## v0.74.0 (2025-05-12)
402
693
 
694
+ ### Closed Issues
695
+
696
+ - Have visual indicator if `map_async`'s task fails ([#752](https://github.com/pipefunc/pipefunc/issues/752))
697
+ - Enhancement: Allow `chunksizes={"": None, "outp": 10}` ([#751](https://github.com/pipefunc/pipefunc/issues/751))
698
+
403
699
  ### ✨ Enhancements
404
700
 
405
701
  - Set background colors per scope in `ProgressTracker` widget ([#772](https://github.com/pipefunc/pipefunc/pull/772))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipefunc
3
- Version: 0.91.0
3
+ Version: 0.92.0
4
4
  Summary: A Python library for defining, managing, and executing function pipelines.
5
5
  Project-URL: homepage, https://pipefunc.readthedocs.io/
6
6
  Project-URL: documentation, https://pipefunc.readthedocs.io/
@@ -199,7 +199,7 @@ Requires-Dist: numcodecs; extra == 'zarr'
199
199
  Requires-Dist: zarr>=3; extra == 'zarr'
200
200
  Description-Content-Type: text/markdown
201
201
 
202
- # PipeFunc: Structure, Automate, and Simplify Your Computational Workflows 🕸
202
+ # PipeFunc: Structure, Automate, and Simplify Your Computational Workflows
203
203
 
204
204
  > **_Stop_** micromanaging execution. Focus on the **science**. Capture your workflow's essence with **function pipelines**, represent **computations as DAGs**, and **automate parallel sweeps**.
205
205
 
@@ -219,22 +219,22 @@ Description-Content-Type: text/markdown
219
219
 
220
220
  <!-- toc-start -->
221
221
 
222
- ## :books: Table of Contents
222
+ ## Table of Contents
223
223
 
224
224
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
225
225
  <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
226
226
 
227
- - [:thinking: What is this?](#thinking-what-is-this)
228
- - [:rocket: Key Features](#rocket-key-features)
229
- - [:test_tube: How does it work?](#test_tube-how-does-it-work)
230
- - [:notebook: Jupyter Notebook Example](#notebook-jupyter-notebook-example)
231
- - [:computer: Installation](#computer-installation)
232
- - [:hammer_and_wrench: Development](#hammer_and_wrench-development)
227
+ - [What is this?](#what-is-this)
228
+ - [Key Features](#key-features)
229
+ - [How does it work?](#how-does-it-work)
230
+ - [Jupyter Notebook Example](#jupyter-notebook-example)
231
+ - [Installation](#installation)
232
+ - [Development](#development)
233
233
 
234
234
  <!-- END doctoc generated TOC please keep comment here to allow auto update -->
235
235
  <!-- toc-end -->
236
236
 
237
- ## :thinking: What is this?
237
+ ## What is this?
238
238
 
239
239
  [![asciicast](https://asciinema.org/a/q5S3ffIxrAGmoLMOc0hOb3aod.svg)](https://asciinema.org/a/q5S3ffIxrAGmoLMOc0hOb3aod)
240
240
 
@@ -248,7 +248,7 @@ Visualize the pipeline as a directed graph, execute the pipeline for all (or spe
248
248
 
249
249
  Whether you're working with data processing, scientific computations, machine learning (AI) workflows, or any other scenario involving interdependent functions, `pipefunc` helps you focus on the logic of your code while it handles the intricacies of function dependencies and execution order.
250
250
 
251
- ## :rocket: Key Features
251
+ ## Key Features
252
252
 
253
253
  1. 🚀 **Function Composition and Pipelining**: Create pipelines by using the `@pipefunc` decorator; execution order is automatically handled.
254
254
  1. 📊 **Pipeline Visualization**: Generate visual graphs of your pipelines to better understand the flow of data.
@@ -256,14 +256,14 @@ Whether you're working with data processing, scientific computations, machine le
256
256
  1. 🔁 **Map-Reduce Support**: Perform "map" operations to apply functions over data and "reduce" operations to aggregate results, allowing n-dimensional mappings.
257
257
  1. 👮 **Type Annotations Validation**: Validates the type annotations between functions to ensure type consistency.
258
258
  1. 🎛️ **Resource Usage Profiling**: Get reports on CPU usage, memory consumption, and execution time to identify bottlenecks and optimize your code.
259
- 1. 🔄 **Automatic parallelization**: Automatically runs pipelines in parallel (local or remote) with shared memory and disk caching options.
260
- 1. ⚡ **Ultra-Fast Performance**: Minimal overhead of [about 15 µs](https://pipefunc.readthedocs.io/en/latest/faq/#what-is-the-overhead-efficiency-performance-of-pipefunc) per function in the graph, ensuring blazingly fast execution.
259
+ 1. 🔄 **Automatic Parallelization**: Automatically runs pipelines in parallel (local or remote) with shared memory and disk caching options.
260
+ 1. ⚡ **Fast Performance**: Minimal overhead of [about 15 µs](https://pipefunc.readthedocs.io/en/latest/faq/#what-is-the-overhead-efficiency-performance-of-pipefunc) per function in the graph.
261
261
  1. 🔍 **Parameter Sweep Utilities**: Generate parameter combinations for parameter sweeps and optimize the sweeps with result caching.
262
262
  1. 💡 **Flexible Function Arguments**: Call functions with different argument combinations, letting `pipefunc` determine which other functions to call based on the provided arguments.
263
263
  1. 🏗️ **Leverages giants**: Builds on top of [NetworkX](https://networkx.org/) for graph algorithms, [NumPy](https://numpy.org/) for multi-dimensional arrays, and optionally [Xarray](https://docs.xarray.dev/) for labeled multi-dimensional arrays, [Zarr](https://zarr.readthedocs.io/) to store results in memory/disk/cloud or any key-value store, and [Adaptive](https://adaptive.readthedocs.io/) for parallel sweeps.
264
264
  1. 🤓 **Nerd stats**: >1000 tests with 100% test coverage, fully typed, only 3 required dependencies, _all_ Ruff Rules, _all_ public API documented.
265
265
 
266
- ## :test_tube: How does it work?
266
+ ## How does it work?
267
267
 
268
268
  pipefunc provides a Pipeline class that you use to define your function pipeline.
269
269
  You add functions to the pipeline using the `pipefunc` decorator, which also lets you specify the function's output name.
@@ -329,7 +329,7 @@ print(result) # prints 7.0
329
329
 
330
330
  Here the `mapspec` argument is used to specify the mapping between the inputs and outputs of the `f` function, it creates the product of the `a` and `b` input lists and computes the sum of each pair. The `g` function then computes the mean of the resulting 2D array. The `map` method executes the pipeline for the `inputs`, and the `load_outputs` function is used to load the results of the `g` function from the specified run folder.
331
331
 
332
- ## :notebook: Jupyter Notebook Example
332
+ ## Jupyter Notebook Example
333
333
 
334
334
  See the detailed usage example and more in our [example.ipynb](https://github.com/pipefunc/pipefunc/blob/main/example.ipynb).
335
335
 
@@ -337,7 +337,7 @@ See the detailed usage example and more in our [example.ipynb](https://github.co
337
337
  > Have [`uv` installed](https://docs.astral.sh/uv/)?
338
338
  > Run `uvx --with "pipefunc[docs]" -p 3.13 opennb pipefunc/pipefunc/example.ipynb` to open the example notebook in your browser without the need to setup anything!
339
339
 
340
- ## :computer: Installation
340
+ ## Installation
341
341
 
342
342
  Install the **latest stable** version from conda (recommended):
343
343
 
@@ -365,7 +365,7 @@ cd pipefunc
365
365
  pip install -e ".[dev]"
366
366
  ```
367
367
 
368
- ## :hammer_and_wrench: Development
368
+ ## Development
369
369
 
370
370
  We use [`pre-commit`](https://pre-commit.com/) to manage pre-commit hooks, which helps us ensure that our code is always clean and compliant with our coding standards.
371
371
  To set it up, install pre-commit with pip and then run the install command:
@@ -1,4 +1,4 @@
1
- # PipeFunc: Structure, Automate, and Simplify Your Computational Workflows 🕸
1
+ # PipeFunc: Structure, Automate, and Simplify Your Computational Workflows
2
2
 
3
3
  > **_Stop_** micromanaging execution. Focus on the **science**. Capture your workflow's essence with **function pipelines**, represent **computations as DAGs**, and **automate parallel sweeps**.
4
4
 
@@ -18,22 +18,22 @@
18
18
 
19
19
  <!-- toc-start -->
20
20
 
21
- ## :books: Table of Contents
21
+ ## Table of Contents
22
22
 
23
23
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
24
24
  <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
25
25
 
26
- - [:thinking: What is this?](#thinking-what-is-this)
27
- - [:rocket: Key Features](#rocket-key-features)
28
- - [:test_tube: How does it work?](#test_tube-how-does-it-work)
29
- - [:notebook: Jupyter Notebook Example](#notebook-jupyter-notebook-example)
30
- - [:computer: Installation](#computer-installation)
31
- - [:hammer_and_wrench: Development](#hammer_and_wrench-development)
26
+ - [What is this?](#what-is-this)
27
+ - [Key Features](#key-features)
28
+ - [How does it work?](#how-does-it-work)
29
+ - [Jupyter Notebook Example](#jupyter-notebook-example)
30
+ - [Installation](#installation)
31
+ - [Development](#development)
32
32
 
33
33
  <!-- END doctoc generated TOC please keep comment here to allow auto update -->
34
34
  <!-- toc-end -->
35
35
 
36
- ## :thinking: What is this?
36
+ ## What is this?
37
37
 
38
38
  [![asciicast](https://asciinema.org/a/q5S3ffIxrAGmoLMOc0hOb3aod.svg)](https://asciinema.org/a/q5S3ffIxrAGmoLMOc0hOb3aod)
39
39
 
@@ -47,7 +47,7 @@ Visualize the pipeline as a directed graph, execute the pipeline for all (or spe
47
47
 
48
48
  Whether you're working with data processing, scientific computations, machine learning (AI) workflows, or any other scenario involving interdependent functions, `pipefunc` helps you focus on the logic of your code while it handles the intricacies of function dependencies and execution order.
49
49
 
50
- ## :rocket: Key Features
50
+ ## Key Features
51
51
 
52
52
  1. 🚀 **Function Composition and Pipelining**: Create pipelines by using the `@pipefunc` decorator; execution order is automatically handled.
53
53
  1. 📊 **Pipeline Visualization**: Generate visual graphs of your pipelines to better understand the flow of data.
@@ -55,14 +55,14 @@ Whether you're working with data processing, scientific computations, machine le
55
55
  1. 🔁 **Map-Reduce Support**: Perform "map" operations to apply functions over data and "reduce" operations to aggregate results, allowing n-dimensional mappings.
56
56
  1. 👮 **Type Annotations Validation**: Validates the type annotations between functions to ensure type consistency.
57
57
  1. 🎛️ **Resource Usage Profiling**: Get reports on CPU usage, memory consumption, and execution time to identify bottlenecks and optimize your code.
58
- 1. 🔄 **Automatic parallelization**: Automatically runs pipelines in parallel (local or remote) with shared memory and disk caching options.
59
- 1. ⚡ **Ultra-Fast Performance**: Minimal overhead of [about 15 µs](https://pipefunc.readthedocs.io/en/latest/faq/#what-is-the-overhead-efficiency-performance-of-pipefunc) per function in the graph, ensuring blazingly fast execution.
58
+ 1. 🔄 **Automatic Parallelization**: Automatically runs pipelines in parallel (local or remote) with shared memory and disk caching options.
59
+ 1. ⚡ **Fast Performance**: Minimal overhead of [about 15 µs](https://pipefunc.readthedocs.io/en/latest/faq/#what-is-the-overhead-efficiency-performance-of-pipefunc) per function in the graph.
60
60
  1. 🔍 **Parameter Sweep Utilities**: Generate parameter combinations for parameter sweeps and optimize the sweeps with result caching.
61
61
  1. 💡 **Flexible Function Arguments**: Call functions with different argument combinations, letting `pipefunc` determine which other functions to call based on the provided arguments.
62
62
  1. 🏗️ **Leverages giants**: Builds on top of [NetworkX](https://networkx.org/) for graph algorithms, [NumPy](https://numpy.org/) for multi-dimensional arrays, and optionally [Xarray](https://docs.xarray.dev/) for labeled multi-dimensional arrays, [Zarr](https://zarr.readthedocs.io/) to store results in memory/disk/cloud or any key-value store, and [Adaptive](https://adaptive.readthedocs.io/) for parallel sweeps.
63
63
  1. 🤓 **Nerd stats**: >1000 tests with 100% test coverage, fully typed, only 3 required dependencies, _all_ Ruff Rules, _all_ public API documented.
64
64
 
65
- ## :test_tube: How does it work?
65
+ ## How does it work?
66
66
 
67
67
  pipefunc provides a Pipeline class that you use to define your function pipeline.
68
68
  You add functions to the pipeline using the `pipefunc` decorator, which also lets you specify the function's output name.
@@ -128,7 +128,7 @@ print(result) # prints 7.0
128
128
 
129
129
  Here the `mapspec` argument is used to specify the mapping between the inputs and outputs of the `f` function, it creates the product of the `a` and `b` input lists and computes the sum of each pair. The `g` function then computes the mean of the resulting 2D array. The `map` method executes the pipeline for the `inputs`, and the `load_outputs` function is used to load the results of the `g` function from the specified run folder.
130
130
 
131
- ## :notebook: Jupyter Notebook Example
131
+ ## Jupyter Notebook Example
132
132
 
133
133
  See the detailed usage example and more in our [example.ipynb](https://github.com/pipefunc/pipefunc/blob/main/example.ipynb).
134
134
 
@@ -136,7 +136,7 @@ See the detailed usage example and more in our [example.ipynb](https://github.co
136
136
  > Have [`uv` installed](https://docs.astral.sh/uv/)?
137
137
  > Run `uvx --with "pipefunc[docs]" -p 3.13 opennb pipefunc/pipefunc/example.ipynb` to open the example notebook in your browser without the need to setup anything!
138
138
 
139
- ## :computer: Installation
139
+ ## Installation
140
140
 
141
141
  Install the **latest stable** version from conda (recommended):
142
142
 
@@ -164,7 +164,7 @@ cd pipefunc
164
164
  pip install -e ".[dev]"
165
165
  ```
166
166
 
167
- ## :hammer_and_wrench: Development
167
+ ## Development
168
168
 
169
169
  We use [`pre-commit`](https://pre-commit.com/) to manage pre-commit hooks, which helps us ensure that our code is always clean and compliant with our coding standards.
170
170
  To set it up, install pre-commit with pip and then run the install command:
@@ -181,6 +181,7 @@ pipeline.cache.clear()
181
181
  - When using `pipeline.map` with `parallel=True`, the cache itself will be serialized, so one must use a cache that supports shared memory, such as {class}`~pipefunc.cache.LRUCache` with `shared=True` or a disk cache like {class}`~pipefunc.cache.DiskCache`.
182
182
  - The {func}`pipefunc.cache.to_hashable` function is used to attempt to ensure that input values are hashable, which is a requirement for storing results in a cache.
183
183
  - This function works for many common types but is not guaranteed to work for all types.
184
+ - Cached values are isolated from mutations: the in-memory caches store and return deep copies (shared caches achieve the same via (de)serialization), so mutating a returned result does not corrupt the cache entry. If your results are large and you never mutate them, you can opt out of the copy overhead with e.g. ``LRUCache(shared=False, copy=False)`` or ``SimpleCache(copy=False)``.
184
185
 
185
186
  By understanding and utilizing `pipefunc`'s caching mechanisms effectively, you can significantly improve the performance of your pipelines, especially when dealing with computationally expensive functions or large datasets.
186
187