mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
|
# Copyright (c) 2023 Kyle Schouviller (https://github.com/kyle0654)
|
||
|
|
||
|
from datetime import datetime, timezone
|
||
|
from typing import Literal, Optional
|
||
|
|
||
|
import numpy
|
||
|
from PIL import Image, ImageFilter, ImageOps
|
||
|
from pydantic import BaseModel, Field
|
||
|
|
||
|
from ..services.image_storage import ImageType
|
||
|
from ..services.invocation_services import InvocationServices
|
||
|
from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationContext
|
||
|
|
||
|
|
||
|
class IntOutput(BaseInvocationOutput):
|
||
|
"""An integer output"""
|
||
|
#fmt: off
|
||
|
type: Literal["int_output"] = "int_output"
|
||
|
a: int = Field(default=None, description="The output integer")
|
||
|
#fmt: on
|
||
|
|
||
|
|
||
|
class AddInvocation(BaseInvocation):
|
||
|
"""Adds two numbers"""
|
||
|
#fmt: off
|
||
|
type: Literal["add"] = "add"
|
||
|
a: int = Field(default=0, description="The first number")
|
||
|
b: int = Field(default=0, description="The second number")
|
||
|
#fmt: on
|
||
|
|
||
|
def invoke(self, context: InvocationContext) -> IntOutput:
|
||
|
return IntOutput(a=self.a + self.b)
|
||
|
|
||
|
|
||
|
class SubtractInvocation(BaseInvocation):
|
||
|
"""Subtracts two numbers"""
|
||
|
#fmt: off
|
||
|
type: Literal["sub"] = "sub"
|
||
|
a: int = Field(default=0, description="The first number")
|
||
|
b: int = Field(default=0, description="The second number")
|
||
|
#fmt: on
|
||
|
|
||
|
def invoke(self, context: InvocationContext) -> IntOutput:
|
||
|
return IntOutput(a=self.a - self.b)
|
||
|
|
||
|
|
||
|
class MultiplyInvocation(BaseInvocation):
|
||
|
"""Multiplies two numbers"""
|
||
|
#fmt: off
|
||
|
type: Literal["mul"] = "mul"
|
||
|
a: int = Field(default=0, description="The first number")
|
||
|
b: int = Field(default=0, description="The second number")
|
||
|
#fmt: on
|
||
|
|
||
|
def invoke(self, context: InvocationContext) -> IntOutput:
|
||
|
return IntOutput(a=self.a * self.b)
|
||
|
|
||
|
|
||
|
class DivideInvocation(BaseInvocation):
|
||
|
"""Divides two numbers"""
|
||
|
#fmt: off
|
||
|
type: Literal["div"] = "div"
|
||
|
a: int = Field(default=0, description="The first number")
|
||
|
b: int = Field(default=0, description="The second number")
|
||
|
#fmt: on
|
||
|
|
||
|
def invoke(self, context: InvocationContext) -> IntOutput:
|
||
|
return IntOutput(a=int(self.a / self.b))
|