Skip to content

Commit 0794eb4

Browse files
fix(nodes): ensure each invocation overrides _original_model_fields with own field data
1 parent 291e073 commit 0794eb4

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

invokeai/app/invocations/baseinvocation.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,14 +582,16 @@ def wrapper(cls: Type[TBaseInvocation]) -> Type[TBaseInvocation]:
582582

583583
fields: dict[str, tuple[Any, FieldInfo]] = {}
584584

585+
original_model_fields: dict[str, OriginalModelField] = {}
586+
585587
for field_name, field_info in cls.model_fields.items():
586588
annotation = field_info.annotation
587589
assert annotation is not None, f"{field_name} on invocation {invocation_type} has no type annotation."
588590
assert isinstance(field_info.json_schema_extra, dict), (
589591
f"{field_name} on invocation {invocation_type} has a non-dict json_schema_extra, did you forget to use InputField?"
590592
)
591593

592-
cls._original_model_fields[field_name] = OriginalModelField(annotation=annotation, field_info=field_info)
594+
original_model_fields[field_name] = OriginalModelField(annotation=annotation, field_info=field_info)
593595

594596
validate_field_default(cls.__name__, field_name, invocation_type, annotation, field_info)
595597

@@ -676,6 +678,7 @@ def wrapper(cls: Type[TBaseInvocation]) -> Type[TBaseInvocation]:
676678
docstring = cls.__doc__
677679
new_class = create_model(cls.__qualname__, __base__=cls, __module__=cls.__module__, **fields) # type: ignore
678680
new_class.__doc__ = docstring
681+
new_class._original_model_fields = original_model_fields
679682

680683
InvocationRegistry.register_invocation(new_class)
681684

0 commit comments

Comments
 (0)