Skip to content

Commit 7f5ae6f

Browse files
committed
fix serialize
1 parent f883474 commit 7f5ae6f

2 files changed

Lines changed: 54 additions & 5 deletions

File tree

runware/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2058,6 +2058,7 @@ def _build3dRequest(self, request3d: I3dInference) -> Dict[str, Any]:
20582058
request_object["webhookURL"] = request3d.webhookURL
20592059
self._addOptionalField(request_object, request3d.inputs)
20602060
self._addOptionalField(request_object, request3d.settings)
2061+
20612062
return request_object
20622063

20632064
async def _request3d(self, request3d: I3dInference) -> Union[List[I3d], IAsyncTaskResponse]:

runware/types.py

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -655,32 +655,44 @@ def request_key(self) -> str:
655655

656656

657657
@dataclass
658-
class ISparseStructure:
658+
class ISparseStructure(SerializableMixin):
659659
guidanceStrength: Optional[float] = None
660660
guidanceRescale: Optional[float] = None
661661
steps: Optional[int] = None
662662
rescaleT: Optional[float] = None
663663

664+
@property
665+
def request_key(self) -> str:
666+
return "sparseStructure"
667+
664668

665669
@dataclass
666-
class IShapeSlat:
670+
class IShapeSlat(SerializableMixin):
667671
guidanceStrength: Optional[float] = None
668672
guidanceRescale: Optional[float] = None
669673
steps: Optional[int] = None
670674
rescaleT: Optional[float] = None
671675

676+
@property
677+
def request_key(self) -> str:
678+
return "shapeSlat"
679+
672680

673681
@dataclass
674-
class ITexSlat:
682+
class ITexSlat(SerializableMixin):
675683
guidanceStrength: Optional[float] = None
676684
guidanceRescale: Optional[float] = None
677685
steps: Optional[int] = None
678686
rescaleT: Optional[float] = None
679687

688+
@property
689+
def request_key(self) -> str:
690+
return "texSlat"
691+
680692

681693
@dataclass
682694
class ISettings(SerializableMixin):
683-
# Image
695+
# Image
684696
temperature: Optional[float] = None
685697
systemPrompt: Optional[str] = None
686698
topP: Optional[float] = None
@@ -698,7 +710,43 @@ class ISettings(SerializableMixin):
698710

699711
@property
700712
def request_key(self) -> str:
701-
return "settings"
713+
return "settings"
714+
715+
def serialize(self) -> Dict[str, Any]:
716+
result: Dict[str, Any] = {}
717+
if self.temperature is not None:
718+
result["temperature"] = self.temperature
719+
if self.systemPrompt is not None:
720+
result["systemPrompt"] = self.systemPrompt
721+
if self.topP is not None:
722+
result["topP"] = self.topP
723+
if self.layers is not None:
724+
result["layers"] = self.layers
725+
if self.trueCFGScale is not None:
726+
result["trueCFGScale"] = self.trueCFGScale
727+
if self.quality is not None:
728+
result["quality"] = self.quality
729+
if self.textureSize is not None:
730+
result["textureSize"] = self.textureSize
731+
if self.decimationTarget is not None:
732+
result["decimationTarget"] = self.decimationTarget
733+
if self.remesh is not None:
734+
result["remesh"] = self.remesh
735+
if self.resolution is not None:
736+
result["resolution"] = self.resolution
737+
if self.sparseStructure:
738+
sparse_data = self.sparseStructure.serialize()
739+
if sparse_data:
740+
result["sparseStructure"] = sparse_data
741+
if self.shapeSlat:
742+
shape_data = self.shapeSlat.serialize()
743+
if shape_data:
744+
result["shapeSlat"] = shape_data
745+
if self.texSlat:
746+
tex_data = self.texSlat.serialize()
747+
if tex_data:
748+
result["texSlat"] = tex_data
749+
return result
702750

703751

704752
@dataclass

0 commit comments

Comments
 (0)