22import socket
33import uuid
44from datetime import timedelta
5- from typing import TypedDict , Unpack , Any , cast , Union , Callable
5+ from typing import TypedDict , Unpack , Any , cast , Union
66
77from grpc import ChannelCredentials , Compression
88from google .protobuf .duration_pb2 import Duration
2424from cadence .api .v1 .tasklist_pb2 import TaskList
2525from cadence .data_converter import DataConverter , DefaultDataConverter
2626from cadence .metrics import MetricsEmitter , NoOpMetricsEmitter
27+ from cadence .workflow import WorkflowDefinition
2728
2829
2930class StartWorkflowOptions (TypedDict , total = False ):
@@ -134,7 +135,7 @@ async def __aexit__(self, exc_type, exc_val, exc_tb) -> None:
134135
135136 async def _build_start_workflow_request (
136137 self ,
137- workflow : Union [str , Callable ],
138+ workflow : Union [str , WorkflowDefinition ],
138139 args : tuple [Any , ...],
139140 options : StartWorkflowOptions ,
140141 ) -> StartWorkflowExecutionRequest :
@@ -146,8 +147,8 @@ async def _build_start_workflow_request(
146147 if isinstance (workflow , str ):
147148 workflow_type_name = workflow
148149 else :
149- # For callable , use function name or __name__ attribute
150- workflow_type_name = getattr ( workflow , "__name__" , str ( workflow ))
150+ # For WorkflowDefinition , use the name property
151+ workflow_type_name = workflow . name
151152
152153 # Encode input arguments
153154 input_payload = None
@@ -188,15 +189,15 @@ async def _build_start_workflow_request(
188189
189190 async def start_workflow (
190191 self ,
191- workflow : Union [str , Callable ],
192+ workflow : Union [str , WorkflowDefinition ],
192193 * args ,
193194 ** options_kwargs : Unpack [StartWorkflowOptions ],
194195 ) -> WorkflowExecution :
195196 """
196197 Start a workflow execution asynchronously.
197198
198199 Args:
199- workflow: Workflow function or workflow type name string
200+ workflow: WorkflowDefinition or workflow type name string
200201 *args: Arguments to pass to the workflow
201202 **options_kwargs: StartWorkflowOptions as keyword arguments
202203
@@ -233,7 +234,7 @@ async def start_workflow(
233234
234235 async def signal_with_start_workflow (
235236 self ,
236- workflow : Union [str , Callable ],
237+ workflow : Union [str , WorkflowDefinition ],
237238 signal_name : str ,
238239 signal_input : Any = None ,
239240 * args ,
@@ -243,7 +244,7 @@ async def signal_with_start_workflow(
243244 Signal a workflow execution, starting it if it is not already running.
244245
245246 Args:
246- workflow: Workflow function or workflow type name string
247+ workflow: WorkflowDefinition or workflow type name string
247248 signal_name: Name of the signal
248249 signal_input: Input data for the signal
249250 *args: Arguments to pass to the workflow if it needs to be started
0 commit comments