feat: move workflow/metadata models to baseinvocation.py

needed to prevent circular imports
This commit is contained in:
psychedelicious
2023-10-17 19:42:02 +11:00
parent 5a163f02a6
commit 3c4f43314c
11 changed files with 31 additions and 42 deletions

View File

@ -15,7 +15,6 @@ from pydantic.fields import _Unset
from pydantic_core import PydanticUndefined
from invokeai.app.services.config.config_default import InvokeAIAppConfig
from invokeai.app.services.workflow_records.workflow_records_common import WorkflowField
from invokeai.app.util.misc import uuid_string
if TYPE_CHECKING:
@ -813,22 +812,29 @@ def invocation_output(
return wrapper
class WorkflowField(RootModel):
"""
Pydantic model for workflows with custom root of type dict[str, Any].
Workflows are stored without a strict schema.
"""
root: dict[str, Any] = Field(description="The workflow")
type_adapter_WorkflowField = TypeAdapter(WorkflowField)
class WithWorkflow(BaseModel):
workflow: Optional[WorkflowField] = InputField(default=None, description=FieldDescriptions.workflow)
class MetadataItemField(BaseModel):
label: str = Field(description=FieldDescriptions.metadata_item_label)
value: Any = Field(description=FieldDescriptions.metadata_item_value)
class MetadataField(RootModel):
"""
Pydantic model for metadata with custom root of type dict[str, Any].
Metadata is stored without a strict schema.
"""
root: dict[str, Any] = Field(description="A dictionary of metadata, shape of which is arbitrary")
root: dict[str, Any] = Field(description="The metadata")
type_adapter_MetadataField = TypeAdapter(MetadataField)