ComfyUI/tests-unit/comfy_api_test
Jedrzej Kosinski d91c1d8d48 DynamicSlot: typed option dispatch driven by TypeResolver
Replaces the old connected/unconnected fixed-child DynamicSlot with a
type-keyed option list. Each Option declares a 'when' condition (None,
io.AnyType, a single ComfyType, a list, or a MultiType.Input) and the
child inputs revealed when that condition matches the slot's resolved
upstream type.

Selection happens at schema-finalization time using live_input_types
computed by TypeResolver, so API-only workflows (no frontend) get the
same expansion the UI would.

- _io.py: redesign DynamicSlot.Input / Option; auto-derive slotType as
  the union of all non-None when sets; expose it via as_dict so the
  frontend knows what types are accepted; the class io_type stays
  COMFY_DYNAMICSLOT_V3 as the parse-time dispatch tag.
- type_resolver.py: return the auto-derived _slot_io_type for
  DynamicSlot.Input; document the AnyType (*) limitation.
- execution.py: validate links into a DynamicSlot against slotType,
  not the dispatch tag COMFY_DYNAMICSLOT_V3.
- tests: new test_dynamic_slot.py + regression coverage in
  test_type_resolver.py.

Amp-Thread-ID: https://ampcode.com/threads/T-019e8568-f382-743d-a97f-0de3ff29d501
Co-authored-by: Amp <amp@ampcode.com>
2026-06-01 17:56:32 -07:00
..
input_impl_test.py Support saving Comfy VIDEO type to buffer (#7939) 2025-05-04 23:26:57 -04:00
multicombo_serialization_test.py fix(api-io): serialize MultiCombo multi_select as object config (#13484) 2026-05-05 13:58:32 -07:00
test_dynamic_slot.py DynamicSlot: typed option dispatch driven by TypeResolver 2026-06-01 17:56:32 -07:00
video_types_test.py Add get_duration method to Comfy VIDEO type (#8122) 2025-05-15 00:11:41 -04:00