Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion invokeai/app/invocations/baseinvocation.py
Original file line number Diff line number Diff line change
Expand Up @@ -582,14 +582,16 @@ def wrapper(cls: Type[TBaseInvocation]) -> Type[TBaseInvocation]:

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

original_model_fields: dict[str, OriginalModelField] = {}

for field_name, field_info in cls.model_fields.items():
annotation = field_info.annotation
assert annotation is not None, f"{field_name} on invocation {invocation_type} has no type annotation."
assert isinstance(field_info.json_schema_extra, dict), (
f"{field_name} on invocation {invocation_type} has a non-dict json_schema_extra, did you forget to use InputField?"
)

cls._original_model_fields[field_name] = OriginalModelField(annotation=annotation, field_info=field_info)
original_model_fields[field_name] = OriginalModelField(annotation=annotation, field_info=field_info)

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

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

InvocationRegistry.register_invocation(new_class)

Expand Down