mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-12-22 04:20:49 +08:00
Start to account for id prefixes from frontend, need to fix bug with nested dynamics
This commit is contained in:
parent
009e90a2cd
commit
f8ede95149
@ -888,11 +888,14 @@ def handle_prefix(prefix_list: list | None, id: str | None = None) -> list[str]:
|
|||||||
if prefix_list is None:
|
if prefix_list is None:
|
||||||
prefix_list = []
|
prefix_list = []
|
||||||
if id is not None:
|
if id is not None:
|
||||||
prefix_list.append(id)
|
prefix_list = prefix_list + [id]
|
||||||
return prefix_list
|
return prefix_list
|
||||||
|
|
||||||
def finalize_prefix(prefix_list: list[str], id: str | None = None) -> str:
|
def finalize_prefix(prefix_list: list[str] | None, id: str | None = None) -> str:
|
||||||
if id is not None:
|
assert not (prefix_list is None and id is None)
|
||||||
|
if prefix_list is None:
|
||||||
|
prefix_list = [id]
|
||||||
|
elif id is not None:
|
||||||
prefix_list = prefix_list + [id]
|
prefix_list = prefix_list + [id]
|
||||||
return ".".join(prefix_list)
|
return ".".join(prefix_list)
|
||||||
|
|
||||||
@ -1102,10 +1105,10 @@ class DynamicSlot(ComfyTypeI):
|
|||||||
def add_dynamic_id_mapping(d: dict[str, Any], inputs: list[Input], curr_prefix: list[str], self: DynamicInput=None):
|
def add_dynamic_id_mapping(d: dict[str, Any], inputs: list[Input], curr_prefix: list[str], self: DynamicInput=None):
|
||||||
dynamic = d.setdefault("dynamic_paths", {})
|
dynamic = d.setdefault("dynamic_paths", {})
|
||||||
if self is not None:
|
if self is not None:
|
||||||
dynamic[self.id] = finalize_prefix(curr_prefix, self.id)
|
dynamic[finalize_prefix(curr_prefix[:-1], self.id)] = finalize_prefix(curr_prefix, self.id)
|
||||||
for i in inputs:
|
for i in inputs:
|
||||||
if not isinstance(i, DynamicInput):
|
# if not isinstance(i, DynamicInput):
|
||||||
dynamic[f"{i.id}"] = finalize_prefix(curr_prefix, i.id)
|
dynamic[finalize_prefix(curr_prefix, i.id)] = finalize_prefix(curr_prefix, i.id)
|
||||||
|
|
||||||
class V3Data(TypedDict):
|
class V3Data(TypedDict):
|
||||||
hidden_inputs: dict[str, Any]
|
hidden_inputs: dict[str, Any]
|
||||||
@ -1395,13 +1398,13 @@ def create_input_dict_v1(inputs: list[Input], live_inputs: dict[str, Any]=None)
|
|||||||
def add_to_input_dict_v1(d: dict[str, Any], inputs: list[Input], live_inputs: dict[str, Any]=None, curr_prefix: list[str] | None=None):
|
def add_to_input_dict_v1(d: dict[str, Any], inputs: list[Input], live_inputs: dict[str, Any]=None, curr_prefix: list[str] | None=None):
|
||||||
for i in inputs:
|
for i in inputs:
|
||||||
if isinstance(i, DynamicInput):
|
if isinstance(i, DynamicInput):
|
||||||
add_to_dict_v1(i, d)
|
add_to_dict_v1(i, d, curr_prefix=curr_prefix)
|
||||||
if live_inputs is not None:
|
if live_inputs is not None:
|
||||||
i.expand_schema_for_dynamic(d, live_inputs, curr_prefix)
|
i.expand_schema_for_dynamic(d, live_inputs, curr_prefix)
|
||||||
else:
|
else:
|
||||||
add_to_dict_v1(i, d)
|
add_to_dict_v1(i, d, curr_prefix=curr_prefix)
|
||||||
|
|
||||||
def add_to_dict_v1(i: Input, d: dict, dynamic_dict: dict=None):
|
def add_to_dict_v1(i: Input, d: dict, dynamic_dict: dict=None, curr_prefix: list[str] | None=None):
|
||||||
key = "optional" if i.optional else "required"
|
key = "optional" if i.optional else "required"
|
||||||
as_dict = i.as_dict()
|
as_dict = i.as_dict()
|
||||||
# for v1, we don't want to include the optional key
|
# for v1, we don't want to include the optional key
|
||||||
@ -1410,7 +1413,10 @@ def add_to_dict_v1(i: Input, d: dict, dynamic_dict: dict=None):
|
|||||||
value = (i.get_io_type(), as_dict)
|
value = (i.get_io_type(), as_dict)
|
||||||
else:
|
else:
|
||||||
value = (i.get_io_type(), as_dict, dynamic_dict)
|
value = (i.get_io_type(), as_dict, dynamic_dict)
|
||||||
d.setdefault(key, {})[i.id] = value
|
actual_id = finalize_prefix(curr_prefix, i.id)
|
||||||
|
if actual_id == "combo.combo":
|
||||||
|
zzz = 10
|
||||||
|
d.setdefault(key, {})[actual_id] = value
|
||||||
|
|
||||||
def add_to_dict_v3(io: Input | Output, d: dict):
|
def add_to_dict_v3(io: Input | Output, d: dict):
|
||||||
d[io.id] = (io.get_io_type(), io.as_dict())
|
d[io.id] = (io.get_io_type(), io.as_dict())
|
||||||
@ -1516,6 +1522,8 @@ class _ComfyNodeBaseInternal(_ComfyNodeInternal):
|
|||||||
@final
|
@final
|
||||||
@classmethod
|
@classmethod
|
||||||
def EXECUTE_NORMALIZED(cls, *args, **kwargs) -> NodeOutput:
|
def EXECUTE_NORMALIZED(cls, *args, **kwargs) -> NodeOutput:
|
||||||
|
_args = args
|
||||||
|
_kwargs = kwargs
|
||||||
to_return = cls.execute(*args, **kwargs)
|
to_return = cls.execute(*args, **kwargs)
|
||||||
if to_return is None:
|
if to_return is None:
|
||||||
to_return = NodeOutput()
|
to_return = NodeOutput()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user