You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 714366d
Browse filesBrowse the repository at this point in the historyBrowse files
Support InputPath artifact values in @task(unwrap=...) (v0.1.33)
`dict[str, components.InputPath(T)]` unwrap targets now expand into one
`inputPath` component input per call-site key. The generated runtime
wrapper re-assembles the dict with each key's local artifact path, so a
single inline task can consume an arbitrary number of upstream artifacts
(e.g. merging N Parquet tables).
The artifact kind is persisted in `local_from_python.unwrapped_inputs`
(`kind` per key, `value_kind` per parameter) so hydrate regenerates the
identical interface. Value unwraps omit both fields, keeping their
persisted schema and fragment hash byte-identical. `OutputPath` dict
values are now rejected instead of silently becoming String inputs.
Use `unwrap=["items", "metadata"]` to unwrap multiple dict parameters. The caller owns the key names; keys may contain letters, numbers, `_`, and `-`, and become `param__<key>` component inputs. Empty dicts are rejected because they do not define a component interface. If a generated name would collide with a fixed parameter or another generated name, compile fails before writing artifacts. Equivalent key sets are canonicalized for schema hashing, so two call sites with the same keys in different insertion orders dedupe to the same component fragment.
1305
1305
1306
+
Unwrapped values can also be artifacts. Annotate the dict values with `components.InputPath(...)` (use the builtin `dict[...]`; `typing.Dict` rejects non-type arguments) and every key becomes an `inputPath` input of that type. At runtime the function receives a dict mapping each key to the local path of its downloaded artifact:
Artifact unwraps persist `"kind": "input_path"` on each key (and `"value_kind": "input_path"` on the parameter) in `local_from_python.unwrapped_inputs`, so hydrate regenerates the same `inputPath` interface. Value unwraps omit these fields; entries without them are value inputs. `OutputPath` dict values are rejected.
1325
+
1306
1326
#### Pipeline run submission and validation
1307
1327
1308
1328
`submit`hydrates refs by default and builds an API submit payload with `root_task.componentRef.spec`. Use `--no-hydrate` to submit the local YAML structure as-is. Use `--dry-run` to print the payload without creating a run.
0 commit comments