Skip to content
Open
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
74 changes: 59 additions & 15 deletions runware/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -913,16 +913,24 @@ class IImageInference:
acePlusPlus: Optional[IAcePlusPlus] = None
puLID: Optional[IPuLID] = None
providerSettings: Optional[ImageProviderSettings] = None
safety: Optional[ISafety] = None
settings: Optional[ISettings] = None
inputs: Optional[IInputs] = None
safety: Optional[Union[ISafety, Dict[str, Any]]] = None
settings: Optional[Union[ISettings, Dict[str, Any]]] = None
inputs: Optional[Union[IInputs, Dict[str, Any]]] = None
ultralytics: Optional[IUltralytics] = None
useCache: Optional[bool] = None
resolution: Optional[str] = None
extraArgs: Optional[Dict[str, Any]] = field(default_factory=dict)
webhookURL: Optional[str] = None
ttl: Optional[int] = None # time-to-live (TTL) in seconds, only applies when outputType is "URL"

def __post_init__(self):
if self.safety is not None and isinstance(self.safety, dict):
self.safety = ISafety(**self.safety)
if self.settings is not None and isinstance(self.settings, dict):
self.settings = ISettings(**self.settings)
if self.inputs is not None and isinstance(self.inputs, dict):
self.inputs = IInputs(**self.inputs)


@dataclass
class IImageCaption:
Expand Down Expand Up @@ -993,9 +1001,15 @@ class IImageBackgroundRemoval(IImageCaption):
outputQuality: Optional[int] = None
model: Optional[Union[int, str]] = None
taskUUID: Optional[str] = None
settings: Optional[IBackgroundRemovalSettings] = None
settings: Optional[Union[IBackgroundRemovalSettings, Dict[str, Any]]] = None
providerSettings: Optional[ImageProviderSettings] = None
safety: Optional[ISafety] = None
safety: Optional[Union[ISafety, Dict[str, Any]]] = None

def __post_init__(self):
if self.settings is not None and isinstance(self.settings, dict):
self.settings = IBackgroundRemovalSettings(**self.settings)
if self.safety is not None and isinstance(self.safety, dict):
self.safety = ISafety(**self.safety)


@dataclass
Expand Down Expand Up @@ -1054,14 +1068,22 @@ class IImageUpscale:
upscaleFactor: float # Changed to float to support decimal values like 1.5
inputImage: Optional[Union[str, File]] = None
model: Optional[str] = None # Model AIR ID (runware:500@1, runware:501@1, runware:502@1, runware:503@1)
settings: Optional[IUpscaleSettings] = None # Advanced upscaling settings
settings: Optional[Union[IUpscaleSettings, Dict[str, Any]]] = None # Advanced upscaling settings
outputType: Optional[IOutputType] = None
outputFormat: Optional[IOutputFormat] = None
includeCost: bool = False
webhookURL: Optional[str] = None
providerSettings: Optional[ImageProviderSettings] = None
safety: Optional[ISafety] = None
inputs: Optional[IInputs] = None
safety: Optional[Union[ISafety, Dict[str, Any]]] = None
inputs: Optional[Union[IInputs, Dict[str, Any]]] = None

def __post_init__(self):
if self.settings is not None and isinstance(self.settings, dict):
self.settings = IUpscaleSettings(**self.settings)
if self.safety is not None and isinstance(self.safety, dict):
self.safety = ISafety(**self.safety)
if self.inputs is not None and isinstance(self.inputs, dict):
self.inputs = IInputs(**self.inputs)


class ReconnectingWebsocketProps:
Expand Down Expand Up @@ -1421,13 +1443,19 @@ class IVideoInference:
speech: Optional[IVideoSpeechSettings] = None
webhookURL: Optional[str] = None
nsfw_check: Optional[Literal["none", "fast", "full"]] = None
safety: Optional[ISafety] = None
safety: Optional[Union[ISafety, Dict[str, Any]]] = None
advancedFeatures: Optional[IVideoAdvancedFeatures] = None
acceleratorOptions: Optional[IAcceleratorOptions] = None
inputs: Optional[IVideoInputs] = None
inputs: Optional[Union[IVideoInputs, Dict[str, Any]]] = None
skipResponse: Optional[bool] = False
resolution: Optional[str] = None

def __post_init__(self):
if self.safety is not None and isinstance(self.safety, dict):
self.safety = ISafety(**self.safety)
if self.inputs is not None and isinstance(self.inputs, dict):
self.inputs = IVideoInputs(**self.inputs)


I3dOutputFormat = Literal["GLB", "PLY"]

Expand All @@ -1445,8 +1473,14 @@ class I3dInference:
includeCost: Optional[bool] = None
deliveryMethod: str = "async"
webhookURL: Optional[str] = None
inputs: Optional[I3dInputs] = None
settings: Optional[ISettings] = None
inputs: Optional[Union[I3dInputs, Dict[str, Any]]] = None
settings: Optional[Union[ISettings, Dict[str, Any]]] = None

def __post_init__(self):
if self.settings is not None and isinstance(self.settings, dict):
self.settings = ISettings(**self.settings)
if self.inputs is not None and isinstance(self.inputs, dict):
self.inputs = I3dInputs(**self.inputs)


@dataclass
Expand Down Expand Up @@ -1494,9 +1528,15 @@ class IAudioInference:
uploadEndpoint: Optional[str] = None
webhookURL: Optional[str] = None
providerSettings: Optional[AudioProviderSettings] = None
inputs: Optional[IAudioInputs] = None
inputs: Optional[Union[IAudioInputs, Dict[str, Any]]] = None
speech: Optional[IAudioSpeech] = None
settings: Optional[ISettings] = None
settings: Optional[Union[ISettings, Dict[str, Any]]] = None

def __post_init__(self):
if self.settings is not None and isinstance(self.settings, dict):
self.settings = ISettings(**self.settings)
if self.inputs is not None and isinstance(self.inputs, dict):
self.inputs = IAudioInputs(**self.inputs)


@dataclass
Expand Down Expand Up @@ -1643,7 +1683,11 @@ class IVideoBackgroundRemoval:
includeCost: Optional[bool] = None
webhookURL: Optional[str] = None
outputFormat: Optional[str] = None # MP4, WEBM
settings: Optional[IVideoBackgroundRemovalSettings] = None
settings: Optional[Union[IVideoBackgroundRemovalSettings, Dict[str, Any]]] = None

def __post_init__(self):
if self.settings is not None and isinstance(self.settings, dict):
self.settings = IVideoBackgroundRemovalSettings(**self.settings)


@dataclass
Expand Down