Skip to content

Commit eafaa76

Browse files
committed
Nexus typing fixes
1 parent 46232b0 commit eafaa76

File tree

3 files changed

+32
-25
lines changed

3 files changed

+32
-25
lines changed

temporalio/workflow.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5145,7 +5145,7 @@ async def start_operation(
51455145
operation: nexusrpc.Operation[InputT, OutputT],
51465146
input: InputT,
51475147
*,
5148-
output_type: Optional[Type[OutputT]] = None,
5148+
output_type: Optional[type[OutputT]] = None,
51495149
schedule_to_close_timeout: Optional[timedelta] = None,
51505150
headers: Optional[Mapping[str, str]] = None,
51515151
) -> NexusOperationHandle[OutputT]: ...
@@ -5158,7 +5158,7 @@ async def start_operation(
51585158
operation: str,
51595159
input: Any,
51605160
*,
5161-
output_type: Optional[Type[OutputT]] = None,
5161+
output_type: Optional[type[OutputT]] = None,
51625162
schedule_to_close_timeout: Optional[timedelta] = None,
51635163
headers: Optional[Mapping[str, str]] = None,
51645164
) -> NexusOperationHandle[OutputT]: ...
@@ -5174,7 +5174,7 @@ async def start_operation(
51745174
],
51755175
input: InputT,
51765176
*,
5177-
output_type: Optional[Type[OutputT]] = None,
5177+
output_type: Optional[type[OutputT]] = None,
51785178
schedule_to_close_timeout: Optional[timedelta] = None,
51795179
headers: Optional[Mapping[str, str]] = None,
51805180
) -> NexusOperationHandle[OutputT]: ...
@@ -5190,7 +5190,7 @@ async def start_operation(
51905190
],
51915191
input: InputT,
51925192
*,
5193-
output_type: Optional[Type[OutputT]] = None,
5193+
output_type: Optional[type[OutputT]] = None,
51945194
schedule_to_close_timeout: Optional[timedelta] = None,
51955195
headers: Optional[Mapping[str, str]] = None,
51965196
) -> NexusOperationHandle[OutputT]: ...
@@ -5206,7 +5206,7 @@ async def start_operation(
52065206
],
52075207
input: InputT,
52085208
*,
5209-
output_type: Optional[Type[OutputT]] = None,
5209+
output_type: Optional[type[OutputT]] = None,
52105210
schedule_to_close_timeout: Optional[timedelta] = None,
52115211
headers: Optional[Mapping[str, str]] = None,
52125212
) -> NexusOperationHandle[OutputT]: ...
@@ -5217,7 +5217,7 @@ async def start_operation(
52175217
operation: Any,
52185218
input: Any,
52195219
*,
5220-
output_type: Optional[Type[OutputT]] = None,
5220+
output_type: Optional[type[OutputT]] = None,
52215221
schedule_to_close_timeout: Optional[timedelta] = None,
52225222
headers: Optional[Mapping[str, str]] = None,
52235223
) -> Any:
@@ -5246,7 +5246,7 @@ async def execute_operation(
52465246
operation: nexusrpc.Operation[InputT, OutputT],
52475247
input: InputT,
52485248
*,
5249-
output_type: Optional[Type[OutputT]] = None,
5249+
output_type: Optional[type[OutputT]] = None,
52505250
schedule_to_close_timeout: Optional[timedelta] = None,
52515251
headers: Optional[Mapping[str, str]] = None,
52525252
) -> OutputT: ...
@@ -5259,7 +5259,7 @@ async def execute_operation(
52595259
operation: str,
52605260
input: Any,
52615261
*,
5262-
output_type: Optional[Type[OutputT]] = None,
5262+
output_type: Optional[type[OutputT]] = None,
52635263
schedule_to_close_timeout: Optional[timedelta] = None,
52645264
headers: Optional[Mapping[str, str]] = None,
52655265
) -> OutputT: ...
@@ -5275,7 +5275,7 @@ async def execute_operation(
52755275
],
52765276
input: InputT,
52775277
*,
5278-
output_type: Optional[Type[OutputT]] = None,
5278+
output_type: Optional[type[OutputT]] = None,
52795279
schedule_to_close_timeout: Optional[timedelta] = None,
52805280
headers: Optional[Mapping[str, str]] = None,
52815281
) -> OutputT: ...
@@ -5291,7 +5291,7 @@ async def execute_operation(
52915291
],
52925292
input: InputT,
52935293
*,
5294-
output_type: Optional[Type[OutputT]] = None,
5294+
output_type: Optional[type[OutputT]] = None,
52955295
schedule_to_close_timeout: Optional[timedelta] = None,
52965296
headers: Optional[Mapping[str, str]] = None,
52975297
) -> OutputT: ...
@@ -5307,7 +5307,7 @@ async def execute_operation(
53075307
],
53085308
input: InputT,
53095309
*,
5310-
output_type: Optional[Type[OutputT]] = None,
5310+
output_type: Optional[type[OutputT]] = None,
53115311
schedule_to_close_timeout: Optional[timedelta] = None,
53125312
headers: Optional[Mapping[str, str]] = None,
53135313
) -> OutputT: ...
@@ -5318,7 +5318,7 @@ async def execute_operation(
53185318
operation: Any,
53195319
input: Any,
53205320
*,
5321-
output_type: Optional[Type[OutputT]] = None,
5321+
output_type: Optional[type[OutputT]] = None,
53225322
schedule_to_close_timeout: Optional[timedelta] = None,
53235323
headers: Optional[Mapping[str, str]] = None,
53245324
) -> Any:
@@ -5342,7 +5342,7 @@ def __init__(
53425342
self,
53435343
*,
53445344
endpoint: str,
5345-
service: Union[Type[ServiceT], str],
5345+
service: Union[type[ServiceT], str],
53465346
) -> None:
53475347
"""Create a Nexus client.
53485348
@@ -5369,7 +5369,7 @@ async def start_operation(
53695369
operation: Any,
53705370
input: Any,
53715371
*,
5372-
output_type: Optional[Type] = None,
5372+
output_type: Optional[type] = None,
53735373
schedule_to_close_timeout: Optional[timedelta] = None,
53745374
headers: Optional[Mapping[str, str]] = None,
53755375
) -> Any:
@@ -5390,7 +5390,7 @@ async def execute_operation(
53905390
operation: Any,
53915391
input: Any,
53925392
*,
5393-
output_type: Optional[Type] = None,
5393+
output_type: Optional[type] = None,
53945394
schedule_to_close_timeout: Optional[timedelta] = None,
53955395
headers: Optional[Mapping[str, str]] = None,
53965396
) -> Any:
@@ -5407,7 +5407,7 @@ async def execute_operation(
54075407
@overload
54085408
def create_nexus_client(
54095409
*,
5410-
service: Type[ServiceT],
5410+
service: type[ServiceT],
54115411
endpoint: str,
54125412
) -> NexusClient[ServiceT]: ...
54135413

@@ -5422,9 +5422,9 @@ def create_nexus_client(
54225422

54235423
def create_nexus_client(
54245424
*,
5425-
service: Union[Type[ServiceT], str],
5425+
service: Union[type[ServiceT], str],
54265426
endpoint: str,
5427-
) -> NexusClient[ServiceT]:
5427+
) -> NexusClient[Any]:
54285428
"""Create a Nexus client.
54295429
54305430
.. warning::

tests/nexus/test_handler.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
sync_operation,
4646
)
4747
from nexusrpc.handler._decorators import operation_handler
48+
from typing_extensions import dataclass_transform
4849

4950
from temporalio import nexus, workflow
5051
from temporalio.client import Client
@@ -328,12 +329,17 @@ class UnsuccessfulResponse:
328329
headers: Mapping[str, str] = UNSUCCESSFUL_RESPONSE_HEADERS
329330

330331

331-
class _TestCase:
332+
@dataclass_transform()
333+
class _BaseTestCase:
334+
pass
335+
336+
337+
class _TestCase(_BaseTestCase):
332338
operation: str
339+
expected: SuccessfulResponse
333340
service_defn: str = "MyService"
334341
input: Input = Input("")
335342
headers: dict[str, str] = {}
336-
expected: SuccessfulResponse
337343
expected_without_service_definition: Optional[SuccessfulResponse] = None
338344
skip = ""
339345

tests/nexus/test_workflow_caller.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,12 @@ def __init__(
253253
request_cancel: bool,
254254
task_queue: str,
255255
) -> None:
256+
service: type[Any] = {
257+
CallerReference.IMPL_WITH_INTERFACE: ServiceImpl,
258+
CallerReference.INTERFACE: ServiceInterface,
259+
}[input.op_input.caller_reference]
256260
self.nexus_client = workflow.create_nexus_client(
257-
service={
258-
CallerReference.IMPL_WITH_INTERFACE: ServiceImpl,
259-
CallerReference.INTERFACE: ServiceInterface,
260-
}[input.op_input.caller_reference],
261+
service=service,
261262
endpoint=make_nexus_endpoint_name(task_queue),
262263
)
263264
self._nexus_operation_started = False
@@ -883,7 +884,7 @@ async def run(
883884
task_queue: str,
884885
) -> ServiceClassNameOutput:
885886
C, N = CallerReference, NameOverride
886-
service_cls: type
887+
service_cls: type[Any]
887888
if (caller_reference, name_override) == (C.INTERFACE, N.YES):
888889
service_cls = ServiceInterfaceWithNameOverride
889890
elif (caller_reference, name_override) == (C.INTERFACE, N.NO):

0 commit comments

Comments
 (0)