Skip to content

Commit e2d9c24

Browse files
committed
Update core/dependencies and call worker.validate
Fixes #520 Fixes #532
1 parent 365cead commit e2d9c24

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+7991
-1388
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ jobs:
7979
poetry add "protobuf<4"
8080
poe gen-protos
8181
poe format
82-
[[ -z $(git status --porcelain temporalio) ]] || (git diff; echo "Protos changed"; exit 1)
82+
[[ -z $(git status --porcelain temporalio) ]] || (git diff temporalio; echo "Protos changed"; exit 1)
8383
poe test -s -o log_cli_level=DEBUG
8484
8585
# Do docs stuff (only on one host)

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,10 +1477,10 @@ to `1` prior to running tests.
14771477
Do not commit `poetry.lock` or `pyproject.toml` changes. To go back from this downgrade, restore `pyproject.toml` and
14781478
run `poetry update protobuf grpcio-tools`.
14791479

1480-
For a less system-intrusive approach, you can:
1480+
For a less system-intrusive approach, you can (note this approach [may have a bug](https://github.com/temporalio/sdk-python/issues/543)):
14811481
```shell
14821482
docker build -f scripts/_proto/Dockerfile .
1483-
docker run -v "${PWD}/temporalio/api:/api_new" -v "${PWD}/temporalio/bridge/proto:/bridge_new" <just built image sha>
1483+
docker run --rm -v "${PWD}/temporalio/api:/api_new" -v "${PWD}/temporalio/bridge/proto:/bridge_new" <just built image sha>
14841484
poe format
14851485
```
14861486

temporalio/api/command/v1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
RecordMarkerCommandAttributes,
1111
RequestCancelActivityTaskCommandAttributes,
1212
RequestCancelExternalWorkflowExecutionCommandAttributes,
13+
RequestCancelNexusOperationCommandAttributes,
1314
ScheduleActivityTaskCommandAttributes,
15+
ScheduleNexusOperationCommandAttributes,
1416
SignalExternalWorkflowExecutionCommandAttributes,
1517
StartChildWorkflowExecutionCommandAttributes,
1618
StartTimerCommandAttributes,
@@ -29,7 +31,9 @@
2931
"RecordMarkerCommandAttributes",
3032
"RequestCancelActivityTaskCommandAttributes",
3133
"RequestCancelExternalWorkflowExecutionCommandAttributes",
34+
"RequestCancelNexusOperationCommandAttributes",
3235
"ScheduleActivityTaskCommandAttributes",
36+
"ScheduleNexusOperationCommandAttributes",
3337
"SignalExternalWorkflowExecutionCommandAttributes",
3438
"StartChildWorkflowExecutionCommandAttributes",
3539
"StartTimerCommandAttributes",

temporalio/api/command/v1/message_pb2.py

Lines changed: 85 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

temporalio/api/command/v1/message_pb2.pyi

Lines changed: 165 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class ScheduleActivityTaskCommandAttributes(google.protobuf.message.Message):
5757
HEARTBEAT_TIMEOUT_FIELD_NUMBER: builtins.int
5858
RETRY_POLICY_FIELD_NUMBER: builtins.int
5959
REQUEST_EAGER_EXECUTION_FIELD_NUMBER: builtins.int
60-
USE_COMPATIBLE_VERSION_FIELD_NUMBER: builtins.int
60+
USE_WORKFLOW_BUILD_ID_FIELD_NUMBER: builtins.int
6161
activity_id: builtins.str
6262
@property
6363
def activity_type(self) -> temporalio.api.common.v1.message_pb2.ActivityType: ...
@@ -111,10 +111,9 @@ class ScheduleActivityTaskCommandAttributes(google.protobuf.message.Message):
111111
"""Request to start the activity directly bypassing matching service and worker polling
112112
The slot for executing the activity should be reserved when setting this field to true.
113113
"""
114-
use_compatible_version: builtins.bool
115-
"""If this is set, the workflow executing this command wishes to start the activity using
116-
a version compatible with the version that this workflow most recently ran on, if such
117-
behavior is possible.
114+
use_workflow_build_id: builtins.bool
115+
"""If this is set, the activity would be assigned to the Build ID of the workflow. Otherwise,
116+
Assignment rules of the activity's Task Queue will be used to determine the Build ID.
118117
"""
119118
def __init__(
120119
self,
@@ -130,7 +129,7 @@ class ScheduleActivityTaskCommandAttributes(google.protobuf.message.Message):
130129
heartbeat_timeout: google.protobuf.duration_pb2.Duration | None = ...,
131130
retry_policy: temporalio.api.common.v1.message_pb2.RetryPolicy | None = ...,
132131
request_eager_execution: builtins.bool = ...,
133-
use_compatible_version: builtins.bool = ...,
132+
use_workflow_build_id: builtins.bool = ...,
134133
) -> None: ...
135134
def HasField(
136135
self,
@@ -180,8 +179,8 @@ class ScheduleActivityTaskCommandAttributes(google.protobuf.message.Message):
180179
b"start_to_close_timeout",
181180
"task_queue",
182181
b"task_queue",
183-
"use_compatible_version",
184-
b"use_compatible_version",
182+
"use_workflow_build_id",
183+
b"use_workflow_build_id",
185184
],
186185
) -> None: ...
187186

@@ -600,7 +599,7 @@ class ContinueAsNewWorkflowExecutionCommandAttributes(google.protobuf.message.Me
600599
HEADER_FIELD_NUMBER: builtins.int
601600
MEMO_FIELD_NUMBER: builtins.int
602601
SEARCH_ATTRIBUTES_FIELD_NUMBER: builtins.int
603-
USE_COMPATIBLE_VERSION_FIELD_NUMBER: builtins.int
602+
INHERIT_BUILD_ID_FIELD_NUMBER: builtins.int
604603
@property
605604
def workflow_type(self) -> temporalio.api.common.v1.message_pb2.WorkflowType: ...
606605
@property
@@ -636,9 +635,9 @@ class ContinueAsNewWorkflowExecutionCommandAttributes(google.protobuf.message.Me
636635
def search_attributes(
637636
self,
638637
) -> temporalio.api.common.v1.message_pb2.SearchAttributes: ...
639-
use_compatible_version: builtins.bool
640-
"""If this is set, the workflow executing this command wishes to continue as new using a version
641-
compatible with the version that this workflow most recently ran on.
638+
inherit_build_id: builtins.bool
639+
"""If this is set, the new execution inherits the Build ID of the current execution. Otherwise,
640+
the assignment rules will be used to independently assign a Build ID to the new execution.
642641
"""
643642
def __init__(
644643
self,
@@ -659,7 +658,7 @@ class ContinueAsNewWorkflowExecutionCommandAttributes(google.protobuf.message.Me
659658
memo: temporalio.api.common.v1.message_pb2.Memo | None = ...,
660659
search_attributes: temporalio.api.common.v1.message_pb2.SearchAttributes
661660
| None = ...,
662-
use_compatible_version: builtins.bool = ...,
661+
inherit_build_id: builtins.bool = ...,
663662
) -> None: ...
664663
def HasField(
665664
self,
@@ -701,6 +700,8 @@ class ContinueAsNewWorkflowExecutionCommandAttributes(google.protobuf.message.Me
701700
b"failure",
702701
"header",
703702
b"header",
703+
"inherit_build_id",
704+
b"inherit_build_id",
704705
"initiator",
705706
b"initiator",
706707
"input",
@@ -715,8 +716,6 @@ class ContinueAsNewWorkflowExecutionCommandAttributes(google.protobuf.message.Me
715716
b"search_attributes",
716717
"task_queue",
717718
b"task_queue",
718-
"use_compatible_version",
719-
b"use_compatible_version",
720719
"workflow_run_timeout",
721720
b"workflow_run_timeout",
722721
"workflow_task_timeout",
@@ -749,7 +748,7 @@ class StartChildWorkflowExecutionCommandAttributes(google.protobuf.message.Messa
749748
HEADER_FIELD_NUMBER: builtins.int
750749
MEMO_FIELD_NUMBER: builtins.int
751750
SEARCH_ATTRIBUTES_FIELD_NUMBER: builtins.int
752-
USE_COMPATIBLE_VERSION_FIELD_NUMBER: builtins.int
751+
INHERIT_BUILD_ID_FIELD_NUMBER: builtins.int
753752
namespace: builtins.str
754753
workflow_id: builtins.str
755754
@property
@@ -784,10 +783,9 @@ class StartChildWorkflowExecutionCommandAttributes(google.protobuf.message.Messa
784783
def search_attributes(
785784
self,
786785
) -> temporalio.api.common.v1.message_pb2.SearchAttributes: ...
787-
use_compatible_version: builtins.bool
788-
"""If this is set, the workflow executing this command wishes to start the child workflow using
789-
a version compatible with the version that this workflow most recently ran on, if such
790-
behavior is possible.
786+
inherit_build_id: builtins.bool
787+
"""If this is set, the child workflow inherits the Build ID of the parent. Otherwise, the assignment
788+
rules of the child's Task Queue will be used to independently assign a Build ID to it.
791789
"""
792790
def __init__(
793791
self,
@@ -809,7 +807,7 @@ class StartChildWorkflowExecutionCommandAttributes(google.protobuf.message.Messa
809807
memo: temporalio.api.common.v1.message_pb2.Memo | None = ...,
810808
search_attributes: temporalio.api.common.v1.message_pb2.SearchAttributes
811809
| None = ...,
812-
use_compatible_version: builtins.bool = ...,
810+
inherit_build_id: builtins.bool = ...,
813811
) -> None: ...
814812
def HasField(
815813
self,
@@ -845,6 +843,8 @@ class StartChildWorkflowExecutionCommandAttributes(google.protobuf.message.Messa
845843
b"cron_schedule",
846844
"header",
847845
b"header",
846+
"inherit_build_id",
847+
b"inherit_build_id",
848848
"input",
849849
b"input",
850850
"memo",
@@ -859,8 +859,6 @@ class StartChildWorkflowExecutionCommandAttributes(google.protobuf.message.Messa
859859
b"search_attributes",
860860
"task_queue",
861861
b"task_queue",
862-
"use_compatible_version",
863-
b"use_compatible_version",
864862
"workflow_execution_timeout",
865863
b"workflow_execution_timeout",
866864
"workflow_id",
@@ -897,6 +895,126 @@ class ProtocolMessageCommandAttributes(google.protobuf.message.Message):
897895

898896
global___ProtocolMessageCommandAttributes = ProtocolMessageCommandAttributes
899897

898+
class ScheduleNexusOperationCommandAttributes(google.protobuf.message.Message):
899+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
900+
901+
class NexusHeaderEntry(google.protobuf.message.Message):
902+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
903+
904+
KEY_FIELD_NUMBER: builtins.int
905+
VALUE_FIELD_NUMBER: builtins.int
906+
key: builtins.str
907+
value: builtins.str
908+
def __init__(
909+
self,
910+
*,
911+
key: builtins.str = ...,
912+
value: builtins.str = ...,
913+
) -> None: ...
914+
def ClearField(
915+
self,
916+
field_name: typing_extensions.Literal["key", b"key", "value", b"value"],
917+
) -> None: ...
918+
919+
ENDPOINT_FIELD_NUMBER: builtins.int
920+
SERVICE_FIELD_NUMBER: builtins.int
921+
OPERATION_FIELD_NUMBER: builtins.int
922+
INPUT_FIELD_NUMBER: builtins.int
923+
SCHEDULE_TO_CLOSE_TIMEOUT_FIELD_NUMBER: builtins.int
924+
NEXUS_HEADER_FIELD_NUMBER: builtins.int
925+
endpoint: builtins.str
926+
"""Endpoint name, must exist in the endpoint registry or this command will fail."""
927+
service: builtins.str
928+
"""Service name."""
929+
operation: builtins.str
930+
"""Operation name."""
931+
@property
932+
def input(self) -> temporalio.api.common.v1.message_pb2.Payload:
933+
"""Input for the operation. The server converts this into Nexus request content and the appropriate content headers
934+
internally when sending the StartOperation request. On the handler side, if it is also backed by Temporal, the
935+
content is transformed back to the original Payload sent in this command.
936+
"""
937+
@property
938+
def schedule_to_close_timeout(self) -> google.protobuf.duration_pb2.Duration:
939+
"""Schedule-to-close timeout for this operation.
940+
Indicates how long the caller is willing to wait for operation completion.
941+
Calls are retried internally by the server.
942+
(-- api-linter: core::0140::prepositions=disabled
943+
aip.dev/not-precedent: "to" is used to indicate interval. --)
944+
"""
945+
@property
946+
def nexus_header(
947+
self,
948+
) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
949+
"""Header to attach to the Nexus request.
950+
Users are responsible for encrypting sensitive data in this header as it is stored in workflow history and
951+
transmitted to external services as-is.
952+
This is useful for propagating tracing information.
953+
Note these headers are not the same as Temporal headers on internal activities and child workflows, these are
954+
transmitted to Nexus operations that may be external and are not traditional payloads.
955+
"""
956+
def __init__(
957+
self,
958+
*,
959+
endpoint: builtins.str = ...,
960+
service: builtins.str = ...,
961+
operation: builtins.str = ...,
962+
input: temporalio.api.common.v1.message_pb2.Payload | None = ...,
963+
schedule_to_close_timeout: google.protobuf.duration_pb2.Duration | None = ...,
964+
nexus_header: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
965+
) -> None: ...
966+
def HasField(
967+
self,
968+
field_name: typing_extensions.Literal[
969+
"input", b"input", "schedule_to_close_timeout", b"schedule_to_close_timeout"
970+
],
971+
) -> builtins.bool: ...
972+
def ClearField(
973+
self,
974+
field_name: typing_extensions.Literal[
975+
"endpoint",
976+
b"endpoint",
977+
"input",
978+
b"input",
979+
"nexus_header",
980+
b"nexus_header",
981+
"operation",
982+
b"operation",
983+
"schedule_to_close_timeout",
984+
b"schedule_to_close_timeout",
985+
"service",
986+
b"service",
987+
],
988+
) -> None: ...
989+
990+
global___ScheduleNexusOperationCommandAttributes = (
991+
ScheduleNexusOperationCommandAttributes
992+
)
993+
994+
class RequestCancelNexusOperationCommandAttributes(google.protobuf.message.Message):
995+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
996+
997+
SCHEDULED_EVENT_ID_FIELD_NUMBER: builtins.int
998+
scheduled_event_id: builtins.int
999+
"""The `NEXUS_OPERATION_SCHEDULED` event ID (a unique identifier) for the operation to be canceled.
1000+
The operation may ignore cancellation and end up with any completion state.
1001+
"""
1002+
def __init__(
1003+
self,
1004+
*,
1005+
scheduled_event_id: builtins.int = ...,
1006+
) -> None: ...
1007+
def ClearField(
1008+
self,
1009+
field_name: typing_extensions.Literal[
1010+
"scheduled_event_id", b"scheduled_event_id"
1011+
],
1012+
) -> None: ...
1013+
1014+
global___RequestCancelNexusOperationCommandAttributes = (
1015+
RequestCancelNexusOperationCommandAttributes
1016+
)
1017+
9001018
class Command(google.protobuf.message.Message):
9011019
DESCRIPTOR: google.protobuf.descriptor.Descriptor
9021020

@@ -916,6 +1034,8 @@ class Command(google.protobuf.message.Message):
9161034
UPSERT_WORKFLOW_SEARCH_ATTRIBUTES_COMMAND_ATTRIBUTES_FIELD_NUMBER: builtins.int
9171035
PROTOCOL_MESSAGE_COMMAND_ATTRIBUTES_FIELD_NUMBER: builtins.int
9181036
MODIFY_WORKFLOW_PROPERTIES_COMMAND_ATTRIBUTES_FIELD_NUMBER: builtins.int
1037+
SCHEDULE_NEXUS_OPERATION_COMMAND_ATTRIBUTES_FIELD_NUMBER: builtins.int
1038+
REQUEST_CANCEL_NEXUS_OPERATION_COMMAND_ATTRIBUTES_FIELD_NUMBER: builtins.int
9191039
command_type: temporalio.api.enums.v1.command_type_pb2.CommandType.ValueType
9201040
@property
9211041
def schedule_activity_task_command_attributes(
@@ -978,6 +1098,14 @@ class Command(google.protobuf.message.Message):
9781098
self,
9791099
) -> global___ModifyWorkflowPropertiesCommandAttributes:
9801100
"""16 is available for use - it was used as part of a prototype that never made it into a release"""
1101+
@property
1102+
def schedule_nexus_operation_command_attributes(
1103+
self,
1104+
) -> global___ScheduleNexusOperationCommandAttributes: ...
1105+
@property
1106+
def request_cancel_nexus_operation_command_attributes(
1107+
self,
1108+
) -> global___RequestCancelNexusOperationCommandAttributes: ...
9811109
def __init__(
9821110
self,
9831111
*,
@@ -1012,6 +1140,10 @@ class Command(google.protobuf.message.Message):
10121140
| None = ...,
10131141
modify_workflow_properties_command_attributes: global___ModifyWorkflowPropertiesCommandAttributes
10141142
| None = ...,
1143+
schedule_nexus_operation_command_attributes: global___ScheduleNexusOperationCommandAttributes
1144+
| None = ...,
1145+
request_cancel_nexus_operation_command_attributes: global___RequestCancelNexusOperationCommandAttributes
1146+
| None = ...,
10151147
) -> None: ...
10161148
def HasField(
10171149
self,
@@ -1038,8 +1170,12 @@ class Command(google.protobuf.message.Message):
10381170
b"request_cancel_activity_task_command_attributes",
10391171
"request_cancel_external_workflow_execution_command_attributes",
10401172
b"request_cancel_external_workflow_execution_command_attributes",
1173+
"request_cancel_nexus_operation_command_attributes",
1174+
b"request_cancel_nexus_operation_command_attributes",
10411175
"schedule_activity_task_command_attributes",
10421176
b"schedule_activity_task_command_attributes",
1177+
"schedule_nexus_operation_command_attributes",
1178+
b"schedule_nexus_operation_command_attributes",
10431179
"signal_external_workflow_execution_command_attributes",
10441180
b"signal_external_workflow_execution_command_attributes",
10451181
"start_child_workflow_execution_command_attributes",
@@ -1077,8 +1213,12 @@ class Command(google.protobuf.message.Message):
10771213
b"request_cancel_activity_task_command_attributes",
10781214
"request_cancel_external_workflow_execution_command_attributes",
10791215
b"request_cancel_external_workflow_execution_command_attributes",
1216+
"request_cancel_nexus_operation_command_attributes",
1217+
b"request_cancel_nexus_operation_command_attributes",
10801218
"schedule_activity_task_command_attributes",
10811219
b"schedule_activity_task_command_attributes",
1220+
"schedule_nexus_operation_command_attributes",
1221+
b"schedule_nexus_operation_command_attributes",
10821222
"signal_external_workflow_execution_command_attributes",
10831223
b"signal_external_workflow_execution_command_attributes",
10841224
"start_child_workflow_execution_command_attributes",
@@ -1108,6 +1248,8 @@ class Command(google.protobuf.message.Message):
11081248
"upsert_workflow_search_attributes_command_attributes",
11091249
"protocol_message_command_attributes",
11101250
"modify_workflow_properties_command_attributes",
1251+
"schedule_nexus_operation_command_attributes",
1252+
"request_cancel_nexus_operation_command_attributes",
11111253
]
11121254
| None
11131255
): ...

temporalio/api/common/v1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from .grpc_status_pb2 import GrpcStatus
22
from .message_pb2 import (
33
ActivityType,
4+
Callback,
45
DataBlob,
56
Header,
67
Memo,
@@ -18,6 +19,7 @@
1819

1920
__all__ = [
2021
"ActivityType",
22+
"Callback",
2123
"DataBlob",
2224
"GrpcStatus",
2325
"Header",

0 commit comments

Comments
 (0)