Skip to content

Normalize flow outputs and retain dynamic subflow jobs - #888

Closed
Andrew-S-Rosen wants to merge 1 commit into
materialsproject:mainfrom
Andrew-S-Rosen:agent/retain-dynamic-subflow-jobs
Closed

Normalize flow outputs and retain dynamic subflow jobs#888
Andrew-S-Rosen wants to merge 1 commit into
materialsproject:mainfrom
Andrew-S-Rosen:agent/retain-dynamic-subflow-jobs

Conversation

@Andrew-S-Rosen

Copy link
Copy Markdown
Member

Summary

  • Normalize nested Job and Flow values returned by @flow into output references.
  • Collect all jobs created while a job function executes when its return value defines a dynamic subflow.
  • Preserve the full dynamic subflow as the replacement flow instead of retaining only the returned terminal job.
  • Add regression tests for nested decorated-flow outputs and multi-job dynamic subflows.

Why

Downstream workflow adapters currently need to wrap decorated flow outputs recursively and compose @job with @flow to prevent intermediate jobs in dynamic subflows from being lost. This behavior is general Jobflow composition logic and belongs upstream.

Together with #885, this allows Quantum-Accelerators/quacc#3405 to remove its Jobflow-specific normalization and subflow patches from src/quacc/wflow_tools/decorators.py.

Additional dependencies introduced

None.

Validation

  • PYTHONPATH=src python -m pytest tests/core/test_flow_decorator.py tests/core/test_job.py -q — 39 passed, 1 xfailed
  • python -m ruff check --ignore PLR0917 src/jobflow/core/flow.py src/jobflow/core/job.py tests/core/test_flow_decorator.py tests/core/test_job.py — passed
  • git diff --check — passed

Checklist

  • Tests have been added for the new behavior.
  • Focused linting and tests pass.

@Andrew-S-Rosen

Copy link
Copy Markdown
Member Author

Superseded by #885. The relevant changes and regression tests have been consolidated there using a single shared normalization helper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant