Skip to content

Commit 29db8cd

Browse files
committed
feat: make interrupt models serializable
1 parent a964100 commit 29db8cd

1 file changed

Lines changed: 32 additions & 5 deletions

File tree

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,55 @@
1+
from abc import ABC, abstractmethod
12
from typing import Any, Dict, Optional
2-
33
from pydantic import BaseModel
44

55
from .actions import Action
66
from .job import Job
77

8+
class Serializable(ABC):
9+
@abstractmethod
10+
def serialize(self) -> str:
11+
pass
812

9-
class InvokeProcess(BaseModel):
13+
class InvokeProcess(BaseModel, Serializable):
1014
name: str
1115
input_arguments: Optional[Dict[str, Any]]
1216

17+
def serialize(self) -> str:
18+
try:
19+
return self.json()
20+
except ValueError:
21+
return str(self)
22+
1323

14-
class WaitJob(BaseModel):
24+
class WaitJob(BaseModel, Serializable):
1525
job: Job
1626

27+
def serialize(self) -> str:
28+
try:
29+
return self.json()
30+
except ValueError:
31+
return str(self)
1732

18-
class CreateAction(BaseModel):
33+
34+
class CreateAction(BaseModel, Serializable):
1935
name: Optional[str] = None
2036
key: Optional[str] = None
2137
title: str
2238
data: Optional[Dict[str, Any]] = None
2339
app_version: Optional[int] = 1
2440
assignee: Optional[str] = ""
2541

42+
def serialize(self) -> str:
43+
try:
44+
return self.json()
45+
except ValueError:
46+
return str(self)
2647

27-
class WaitAction(BaseModel):
48+
class WaitAction(BaseModel, Serializable):
2849
action: Action
50+
51+
def serialize(self) -> str:
52+
try:
53+
return self.json()
54+
except ValueError:
55+
return str(self)

0 commit comments

Comments
 (0)