Skip to content

Add recursive process graph unrolling#917

Open
Silvren wants to merge 1 commit into
Open-EO:masterfrom
Silvren:agent/unroll-user-defined-processes
Open

Add recursive process graph unrolling#917
Silvren wants to merge 1 commit into
Open-EO:masterfrom
Silvren:agent/unroll-user-defined-processes

Conversation

@Silvren

@Silvren Silvren commented Jul 13, 2026

Copy link
Copy Markdown

Summary

  • add Connection.unroll_process_graph() to turn workflows with UDP references into self-contained flat process graphs
  • resolve registered UDPs from /process_graphs/{id} and HTTP(S)-namespaced remote process definitions
  • recursively inline nested UDPs, including definitions used inside callback process graphs
  • bind invocation arguments and process defaults while preserving callback parameter scopes
  • rewrite node references and generate collision-safe node IDs
  • detect recursive definitions, missing required arguments, invalid definitions, and ambiguous remote listings
  • cache process listings and resolved definitions during an unroll operation
  • keep the input graph unchanged

Testing

  • python -m pytest tests/internal tests/rest/test_udp.py -q (205 passed)
  • python -m pytest tests/internal/test_graph_unrolling.py tests/rest/test_connection.py::test_unroll_process_graph_registered_udp tests/rest/test_connection.py::test_unroll_process_graph_remote_definition -q (7 passed)
  • pre-commit run --files CHANGELOG.md openeo/internal/graph_unrolling.py openeo/rest/connection.py tests/internal/test_graph_unrolling.py tests/rest/test_connection.py

Fixes #749

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.

Functionality to "unroll" UDPs

1 participant