Skip to content

Instantly share code, notes, and snippets.

@jmchilton
Created February 12, 2026 18:28
Show Gist options
  • Select an option

  • Save jmchilton/bc619178923825a9d60013dd33485d5d to your computer and use it in GitHub Desktop.

Select an option

Save jmchilton/bc619178923825a9d60013dd33485d5d to your computer and use it in GitHub Desktop.
CWL 1.0 rebase conflict resolution notes for cwl-1.0 onto dev

CWL 1.0 Rebase Info

Rebasing cwl-1.0 onto db43f2dbc4 (dev, post release_26.0 merge).

Commit: e84401b665 — "Implement subset of the Common Workflow Language tool and workflow formats."

5 files conflicted. Resolutions below.

1. lib/galaxy/managers/workflows.py

HEAD had no CWL workflow handling. Incoming added an elif workflow_class == "Workflow" block that creates a workflow_proxy from CWL workflow dicts/paths, registers dynamic tools from tool_reference_proxies, and converts to Galaxy dict format.

Resolution: Took incoming — purely additive CWL logic.

2. lib/galaxy/tools/__init__.py (2 conflicts)

Imports: HEAD added Sequence to collections.abc import. Incoming added import uuid and only imported MutableMapping. Resolution: Kept both — import uuid + from collections.abc import (MutableMapping, Sequence,).

TOOL_CLASSES list: HEAD added ConvertSampleSheetTool. Incoming added CwlTool. Resolution: Kept both classes in the list.

3. lib/galaxy/webapps/galaxy/controllers/tool_runner.py

HEAD updated url_for call style to url_for(f"/?tool_id={tool_id}"). Incoming added "cwl" to the tool_type allowlist but used older url_for(controller="root", tool_id=tool_id) style.

Resolution: Merged — "cwl" added to list, HEAD's url_for style kept.

4. lib/galaxy/workflow/run.py (2 conflict regions)

Region 1 — input step output handling (~line 738): HEAD added invocation input tracking (invocation.add_input(content, step.id)). Incoming added CWL file output conversion (raw_to_galaxy for class: File dicts). Resolution: Kept both blocks sequentially — invocation tracking first, then CWL file conversion.

Region 2 — subworkflow_progress method (~line 877): This was a structural divergence. The CWL branch collected matching connections into a connections list and called self.replacement_for_input_connections(step, input_dict, connections). HEAD refactored the same logic to use a connection_found boolean flag, call self.replacement_for_connection(input_connection, is_data=...) on the first match, and added default-value checking before raising errors on missing required inputs.

replacement_for_input_connections does not exist on HEAD — only replacement_for_connection (singular) does.

Resolution: Took HEAD's full implementation — connection_found flag, replacement_for_connection, and default-value error gating. The CWL branch's connection-handling approach was functionally equivalent but used an API that no longer exists on dev.

5. lib/galaxy_test/driver/driver_util.py

HEAD added workflow_completion_monitor_sleep=1.0. Incoming added strict_cwl_validation=False.

Resolution: Kept both config entries.

Commit: 75e83ccb95 — "WIP: Work toward Galaxy-flavored CWL tools."

1 file conflicted.

lib/galaxy/webapps/galaxy/controllers/tool_runner.py

Same conflict pattern as before. Incoming added "galactic_cwl" to the tool_type list.

Resolution: Added "galactic_cwl" to list, kept HEAD's url_for style.

Commit: e8549e8aa3 — "Various fixes for stricter cwltool and cwltest"

1 file conflicted.

lib/galaxy/tools/__init__.py

Stale diff — incoming had from collections.abc import MutableMapping without uuid or Sequence (from pre-rebase state). HEAD already had the merged imports from the earlier resolution.

Resolution: Kept HEAD (already correct from prior resolution).

Remaining 49 commits

Applied cleanly with no conflicts.

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