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.
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.devcontainer/Dockerfile +1 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/codspeed.yml +1 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/doc-string-check.yml +2 -2
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/pr-title-checker.yml +2 -2
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/pytest-micromamba.yml +2 -2
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/pytest-uv.yml +1 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/pythonpublish.yml +1 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/release-drafter.yaml +1 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/update-environment.yaml +1 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/CHANGELOG.md +296 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/PKG-INFO +17 -17
- {pipefunc-0.91.0 → pipefunc-0.92.0}/README.md +16 -16
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/caching.md +1 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/execution-and-parallelism.md +4 -2
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/run-status.md +0 -3
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/type-checking.md +45 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/faq.md +4 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipefunc.py +45 -11
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_base.py +58 -20
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_utils.py +18 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_version.py +1 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/cache.py +62 -4
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/__init__.py +5 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_load.py +6 -6
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_prepare.py +7 -3
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_run.py +25 -5
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_run_eager.py +6 -3
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_run_eager_async.py +6 -3
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/_zarr.py +1 -1
- pipefunc-0.92.0/tests/map/test_cache_result_dict.py +40 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_map.py +115 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_cache.py +50 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_nested_pipefunc.py +2 -2
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipefunc.py +62 -16
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline.py +53 -2
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_resources.py +1 -1
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_run_status_cli.py +27 -16
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.devcontainer/devcontainer.json +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.gitattributes +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/doc-string-check.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/generate-release-notes.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/pr-title-checker-config.json +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/release-drafter.yml +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/renovate.json +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/update-environment.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/codeql.yml +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.github/workflows/toc.yaml +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.gitignore +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.pre-commit-config.yaml +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.readthedocs.yml +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.vscode/launch.json +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/.vscode/settings.json +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/AUTHORS.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/LICENSE +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/MANIFEST.in +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/.gitignore +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/Makefile +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/environment-sphinx.yml +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/_static/custom.css +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/changelog.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/adaptive-integration.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/chaining.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/cli.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/error-handling.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/function-io.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/index.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/map_async_in_script.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/mapspec.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/mcp.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/mcp_agent.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/mcp_server.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/overhead-and-efficiency.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/parameter-scopes.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/parameter-sweeps.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/resource-management.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/simplifying-pipelines.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/slurm.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/testing.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/concepts/variants.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/conf.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/basic-usage.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/image-processing.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/index.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/nlp-text-summarization.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/physics-simulation.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/sensor-data-processing.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/examples/weather-simulation.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/index.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/index.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.cache.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.helpers.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.lazy.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.map.adaptive.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.map.adaptive_scheduler.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.map.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.map.xarray.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.mcp.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.resources.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.sweep.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.testing.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/docs/source/reference/pipefunc.typing.md +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/environment.yml +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/example.ipynb +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/get-notebooks.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/noxfile.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_adaptive.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_error_handling.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipefunc_utils.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_autodoc.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_cache.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_cli.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_mapspec.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_pydantic.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_simplify.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_types.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_pipeline/_validation.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_plotting.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_plotting_utils.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_profile.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_run_status.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_run_status_cli.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_run_status_heartbeat.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_variant_pipeline.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/async_status_widget.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/helpers.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/output_tabs.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/progress_base.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/progress_headless.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/progress_ipywidgets.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/_widgets/progress_rich.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/exceptions.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/helpers.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/lazy.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/LICENSE +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_adaptive_scheduler_slurm_executor.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_mapspec.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_progress.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_result.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_run_info.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_shapes.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/_base.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/_dict.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_storage_array/_file.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/_types.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/adaptive.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/adaptive_scheduler.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/map/xarray.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/mcp.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/py.typed +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/resources.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/sweep.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/testing.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pipefunc/typing.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/pyproject.toml +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/conftest.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/helpers.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_error_handling.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_error_handling_basic.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_error_handling_parallel_regressions.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_error_handling_potential_issues.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_propagation_reason_selection.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_regressions_propagated_root_causes.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/map/test_run_info_backward_compat.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/storage/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/storage/test_error_handling_storage.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/integration/test_error_handling_scan_inputs.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/storage/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/storage/test_all_storage.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/storage/test_file.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/storage/test_zarr.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_adaptive.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_adaptive_scheduler.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_adaptive_slurm_executor.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_async_map_block.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_eager_scheduler.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_fixed_indices.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_map_chunking.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_mapspec.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_regular_regressions.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_result.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_resume_validation.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_run_dynamic_internal_shape.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_sweeps.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/map/test_xarray.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/regressions/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/regressions/test_cache_reraise_single.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/regressions/test_regressions_cache_error_handling.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_adaptive_run.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_async_status_widget.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_autodoc.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_benchmark.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_cache_memoize.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_cache_to_hashable.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_cli.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_helpers.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_helpers_chain.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_lazy.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_mcp.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_namedtuple_output.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_output_tabs_widget.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_perf.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipefunc_annotations.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipefunc_signature.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_annotations.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_cache.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_lazy.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_mapspec.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_post_execution_hook.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pipeline_update.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_plotting.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_plotting_utils.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_pydantic.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_resources.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_simplify.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_sweep.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_testing.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_typing.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_typing_future_annotations.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_utils.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_variant_pipeline.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_variant_pipeline_widgets.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_widget_progress_tracker_ipywidgets.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/test_widget_progress_tracker_rich.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/error_handling/__init__.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/error_handling/test_error_info_and_snapshots.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/error_handling/test_output_picker_error_snapshot.py +0 -0
- {pipefunc-0.91.0 → pipefunc-0.92.0}/tests/unit/error_handling/test_propagated_snapshot_serialization.py +0 -0
|
@@ -17,12 +17,12 @@ jobs:
|
|
|
17
17
|
uses: actions/checkout@v6
|
|
18
18
|
|
|
19
19
|
- name: Install uv
|
|
20
|
-
uses: astral-sh/setup-uv@
|
|
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.
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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)
|
|
@@ -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.
|
|
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
|
-
##
|
|
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
|
-
- [
|
|
228
|
-
- [
|
|
229
|
-
- [
|
|
230
|
-
- [
|
|
231
|
-
- [
|
|
232
|
-
- [
|
|
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
|
-
##
|
|
237
|
+
## What is this?
|
|
238
238
|
|
|
239
239
|
[](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
|
-
##
|
|
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
|
|
260
|
-
1. ⚡ **
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
- [
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
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
|
-
##
|
|
36
|
+
## What is this?
|
|
37
37
|
|
|
38
38
|
[](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
|
-
##
|
|
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
|
|
59
|
-
1. ⚡ **
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
|