mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
9c89d3452c
feat(nodes): add ResultsServiceABC & SqliteResultsService **Doesn't actually work bc of circular imports. Can't even test it.** - add a base class for ResultsService and SQLite implementation - use `graph_execution_manager` `on_changed` callback to keep `results` table in sync fix(nodes): fix results service bugs chore(ui): regen api fix(ui): fix type guards feat(nodes): add `result_type` to results table, fix types fix(nodes): do not shadow `list` builtin feat(nodes): add results router It doesn't work due to circular imports still fix(nodes): Result class should use outputs classes, not fields feat(ui): crude results router fix(ui): send to canvas in currentimagebuttons not working feat(nodes): add core metadata builder feat(nodes): add design doc feat(nodes): wip latents db stuff feat(nodes): images_db_service and resources router feat(nodes): wip images db & router feat(nodes): update image related names feat(nodes): update urlservice feat(nodes): add high-level images service
52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
from enum import Enum
|
|
from typing import Optional, Tuple
|
|
from pydantic import BaseModel, Field
|
|
|
|
from invokeai.app.util.enum import MetaEnum
|
|
|
|
|
|
class ImageType(str, Enum, metaclass=MetaEnum):
|
|
"""The type of an image."""
|
|
|
|
RESULT = "results"
|
|
UPLOAD = "uploads"
|
|
INTERMEDIATE = "intermediates"
|
|
|
|
|
|
class ImageCategory(str, Enum, metaclass=MetaEnum):
|
|
"""The category of an image. Use ImageCategory.OTHER for non-default categories."""
|
|
|
|
IMAGE = "image"
|
|
CONTROL_IMAGE = "control_image"
|
|
OTHER = "other"
|
|
|
|
|
|
def is_image_type(obj):
|
|
try:
|
|
ImageType(obj)
|
|
except ValueError:
|
|
return False
|
|
return True
|
|
|
|
|
|
class ImageField(BaseModel):
|
|
"""An image field used for passing image objects between invocations"""
|
|
|
|
image_type: ImageType = Field(
|
|
default=ImageType.RESULT, description="The type of the image"
|
|
)
|
|
image_name: Optional[str] = Field(default=None, description="The name of the image")
|
|
|
|
class Config:
|
|
schema_extra = {"required": ["image_type", "image_name"]}
|
|
|
|
|
|
class ColorField(BaseModel):
|
|
r: int = Field(ge=0, le=255, description="The red component")
|
|
g: int = Field(ge=0, le=255, description="The green component")
|
|
b: int = Field(ge=0, le=255, description="The blue component")
|
|
a: int = Field(ge=0, le=255, description="The alpha component")
|
|
|
|
def tuple(self) -> Tuple[int, int, int, int]:
|
|
return (self.r, self.g, self.b, self.a)
|