Background
PR #57 landed ImageSequenceArtifact support as an output from NukeScriptNode —
when a Nuke script renders a frame sequence, we collect the files and return them as a
ListArtifact[ImageUrlArtifact]. Kate's review comment surfaced the gap: feeding a
frame sequence into a Nuke script is equally common (e.g. upstream render → Nuke comp
→ downstream deliverable) and is currently unsupported.
Current State
ImageSequenceArtifact appears in _OUTPUT_ARTIFACT_TYPES (Annotator panel) and is
handled in _path_to_artifact() in nuke_script_node.py.
- It is absent from
_INPUT_ARTIFACT_TYPES in the Annotator panel.
input_types on dynamically created input parameters does not include
ImageSequenceArtifact (or ListArtifact).
_artifact_to_path() in nuke_script_node.py has no branch for list/sequence inputs.
- The gizmo builder (
nuke_gizmo_builder.py) does not treat image-sequence inputs as
media inputs, so no Input node would be wired up in the generated gizmo graph.
Acceptance Criteria
Notes
The tricky part is the path-pattern convention: Nuke's Read node expects a printf-style
frame pattern (%04d). When receiving a ListArtifact we need to either:
- download all frames to a temp directory with a consistent naming scheme, or
- require that frame URLs already follow a naming convention we can infer.
The first approach (temp dir with normalised names) is safer and matches how
_artifact_to_path() already handles BlobArtifact → temp PNG.
Background
PR #57 landed
ImageSequenceArtifactsupport as an output fromNukeScriptNode—when a Nuke script renders a frame sequence, we collect the files and return them as a
ListArtifact[ImageUrlArtifact]. Kate's review comment surfaced the gap: feeding aframe sequence into a Nuke script is equally common (e.g. upstream render → Nuke comp
→ downstream deliverable) and is currently unsupported.
Current State
ImageSequenceArtifactappears in_OUTPUT_ARTIFACT_TYPES(Annotator panel) and ishandled in
_path_to_artifact()innuke_script_node.py._INPUT_ARTIFACT_TYPESin the Annotator panel.input_typeson dynamically created input parameters does not includeImageSequenceArtifact(orListArtifact)._artifact_to_path()innuke_script_node.pyhas no branch for list/sequence inputs.nuke_gizmo_builder.py) does not treat image-sequence inputs asmedia inputs, so no
Inputnode would be wired up in the generated gizmo graph.Acceptance Criteria
_INPUT_ARTIFACT_TYPESincludesImageSequenceArtifact.NukeScriptNodeaddsImageSequenceArtifact/ListArtifactto theinput_typesof annotated input parameters.
_artifact_to_path()handles aListArtifact[ImageUrlArtifact]input: downloads /resolves each frame to a local path and returns the printf-style pattern Nuke
expects (e.g.
/tmp/frames/frame.%04d.exr).Inputnode into the internal graph, similar to
VideoUrlArtifact)._artifact_to_path()for the sequence case.NUKE_EXECUTABLE) verifies a sequence can be passed inand read by a Read node inside the script.
Notes
The tricky part is the path-pattern convention: Nuke's
Readnode expects a printf-styleframe pattern (
%04d). When receiving aListArtifactwe need to either:The first approach (temp dir with normalised names) is safer and matches how
_artifact_to_path()already handlesBlobArtifact→ temp PNG.