dex-python-sdk 0.11.0__tar.gz → 0.12.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/PKG-INFO +7 -10
  2. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/README.md +6 -9
  3. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/async_client.py +16 -17
  4. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/client.py +16 -17
  5. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/dexpb/dex_pb2_grpc.py +6 -6
  6. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/flow_options.py +1 -1
  7. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/runtime_errors.py +2 -2
  8. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/wait_options.py +14 -16
  9. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/pyproject.toml +1 -1
  10. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/LEGACY_NOTICES.md +0 -0
  11. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/LICENSE +0 -0
  12. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/__init__.py +0 -0
  13. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_async_value_hydrator.py +0 -0
  14. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_async_worker_dispatcher.py +0 -0
  15. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_async_worker_service.py +0 -0
  16. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_grpc_errors.py +0 -0
  17. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_invocation_context.py +0 -0
  18. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_native.pyi +0 -0
  19. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_server_protocol.py +0 -0
  20. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_utils.py +0 -0
  21. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_value_hydrator.py +0 -0
  22. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_value_mapper.py +0 -0
  23. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_worker_dispatcher.py +0 -0
  24. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/_worker_service.py +0 -0
  25. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/async_worker.py +0 -0
  26. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/attribute.py +0 -0
  27. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/attribute_match.py +0 -0
  28. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/blob_cache.py +0 -0
  29. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/channel.py +0 -0
  30. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/client_options.py +0 -0
  31. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/codec.py +0 -0
  32. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/condition.py +0 -0
  33. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/context.py +0 -0
  34. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/dexpb/__init__.py +0 -0
  35. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/dexpb/dex_pb2.py +0 -0
  36. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/dexpb/dex_pb2.pyi +0 -0
  37. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/flow.py +0 -0
  38. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/flow_config.py +0 -0
  39. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/flow_info.py +0 -0
  40. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/flow_result.py +0 -0
  41. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/py.typed +0 -0
  42. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/step.py +0 -0
  43. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/step_execution.py +0 -0
  44. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/stream.py +0 -0
  45. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/subflow.py +0 -0
  46. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/timer.py +0 -0
  47. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/wait.py +0 -0
  48. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/worker.py +0 -0
  49. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/dex/worker_options.py +0 -0
  50. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/Cargo.lock +0 -0
  51. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/Cargo.toml +0 -0
  52. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/Cargo.toml +0 -0
  53. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/LICENSE +0 -0
  54. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/src/config.rs +0 -0
  55. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/src/entry.rs +0 -0
  56. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/src/error.rs +0 -0
  57. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/src/format.rs +0 -0
  58. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/src/lib.rs +0 -0
  59. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/src/policy.rs +0 -0
  60. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/src/store.rs +0 -0
  61. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache/tests/blob_cache_integration.rs +0 -0
  62. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache-python/Cargo.toml +0 -0
  63. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache-python/LICENSE +0 -0
  64. {dex_python_sdk-0.11.0 → dex_python_sdk-0.12.0}/sdk-rust/crates/dex-blob-cache-python/src/lib.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dex-python-sdk
3
- Version: 0.11.0
3
+ Version: 0.12.0
4
4
  Requires-Dist: grpcio>=1.83.0
5
5
  Requires-Dist: grpcio-status>=1.83.0
6
6
  Requires-Dist: protobuf>=7.35.1
@@ -362,15 +362,12 @@ include buffered publishes, and omit empty instances. Keys are decoded and
362
362
  sorted. Use `force_complete_if_channels_empty(...)` for conditional completion.
363
363
 
364
364
  Request IDs are optional for both durable waits. When omitted, the server
365
- derives a namespaced stable ID from the Step execution or Attribute condition,
366
- such as `wait-for-attribute:myInt>10`. Reuse an override only for the same
367
- logical wait. The Client automatically reattaches transport long polls. If an
368
- earlier Update with that ID exhausted its handler budget, the server appends an
369
- increasing `-N` suffix and starts a new Update. `maximum_wait_time` is optional
370
- and is the total handler budget across reattachments; zero waits indefinitely.
371
- A positive budget expiry raises `WaitHandlerTimeoutError`. An abandoned infinite
372
- wait remains accepted and counts against Temporal's in-flight Update limit until
373
- it completes or the Flow closes.
365
+ derives a stable ID from the Step execution or Attribute condition. Reuse an
366
+ override only for the same wait. `maximum_wait_time` is optional. Leave it at
367
+ zero for normal use and bound one response with the caller deadline. Positive
368
+ values are an exceptional safety valve: short budgets can add many Temporal
369
+ Update events to Workflow history. If a positive value is truly needed, prefer
370
+ at least one minute. A positive expiry raises `WaitHandlerTimeoutError`.
374
371
 
375
372
  `Client.wait_for_flow` and `AsyncClient.wait_for_flow` return a
376
373
  `FlowResult` after hydrating every output-bearing completion. Use
@@ -346,15 +346,12 @@ include buffered publishes, and omit empty instances. Keys are decoded and
346
346
  sorted. Use `force_complete_if_channels_empty(...)` for conditional completion.
347
347
 
348
348
  Request IDs are optional for both durable waits. When omitted, the server
349
- derives a namespaced stable ID from the Step execution or Attribute condition,
350
- such as `wait-for-attribute:myInt>10`. Reuse an override only for the same
351
- logical wait. The Client automatically reattaches transport long polls. If an
352
- earlier Update with that ID exhausted its handler budget, the server appends an
353
- increasing `-N` suffix and starts a new Update. `maximum_wait_time` is optional
354
- and is the total handler budget across reattachments; zero waits indefinitely.
355
- A positive budget expiry raises `WaitHandlerTimeoutError`. An abandoned infinite
356
- wait remains accepted and counts against Temporal's in-flight Update limit until
357
- it completes or the Flow closes.
349
+ derives a stable ID from the Step execution or Attribute condition. Reuse an
350
+ override only for the same wait. `maximum_wait_time` is optional. Leave it at
351
+ zero for normal use and bound one response with the caller deadline. Positive
352
+ values are an exceptional safety valve: short budgets can add many Temporal
353
+ Update events to Workflow history. If a positive value is truly needed, prefer
354
+ at least one minute. A positive expiry raises `WaitHandlerTimeoutError`.
358
355
 
359
356
  `Client.wait_for_flow` and `AsyncClient.wait_for_flow` return a
360
357
  `FlowResult` after hydrating every output-bearing completion. Use
@@ -738,23 +738,22 @@ class AsyncClient:
738
738
  step_execution_id: StepExecutionId,
739
739
  options: WaitForStepCompletionOptions,
740
740
  ) -> None:
741
- """Await one Step execution's completion or its handler budget expiry.
741
+ """Await one Step execution's completion or its wait budget expiry.
742
742
 
743
743
  The server derives a stable Request ID from the Step execution when none
744
- is supplied. Transport long polls automatically reattach to the same wait.
745
- Leave the maximum wait time at zero for ordinary infinite waits. A positive
746
- value releases per-Flow in-flight Update capacity for abandoned waits.
747
- The budget spans Continue-as-New and is distinct from the caller's lifetime.
748
- Retrying after expiry creates a new Update generation.
744
+ is supplied. Leave the maximum wait time at zero for normal use. Positive
745
+ values are exceptional because short budgets can add many Temporal Update
746
+ events to Workflow history; prefer at least one minute when nonzero. A
747
+ positive value bounds the caller-visible wait.
749
748
 
750
749
  Args:
751
750
  flow_id: The non-empty active Flow ID.
752
751
  step_execution_id: The Step type and positive execution number.
753
- options: The optional Request ID override and total handler wait budget.
752
+ options: The optional Request ID override and total wait budget.
754
753
 
755
754
  Raises:
756
- ValueError: If the Request ID or handler wait budget is invalid.
757
- WaitHandlerTimeoutError: If a positive handler budget expires first.
755
+ ValueError: If the Request ID or wait budget is invalid.
756
+ WaitHandlerTimeoutError: If a positive wait budget expires first.
758
757
  FlowNotActiveError: If the Flow closes first.
759
758
  DexServiceError: If FlowService cannot perform the wait.
760
759
  """
@@ -792,24 +791,24 @@ class AsyncClient:
792
791
 
793
792
  The Client returns the value observed by the successful wait. The server
794
793
  derives a stable Request ID from the condition when none is supplied.
795
- Leave the maximum wait time at zero for ordinary infinite waits. A positive
796
- value releases per-Flow in-flight Update capacity for rarely matching waits.
797
- The budget spans transport reattachments and Continue-as-New, and is distinct
798
- from the caller's lifetime. Retrying after expiry creates a new Update generation.
794
+ Leave the maximum wait time at zero for normal use. Positive values are
795
+ exceptional because short budgets can add many Temporal Update events to
796
+ Workflow history; prefer at least one minute when nonzero. A positive value
797
+ bounds the caller-visible wait.
799
798
  JSON, bytes, and null operands raise ``ValueError`` before transport.
800
799
 
801
800
  Args:
802
801
  flow_id: The non-empty active Flow ID.
803
802
  attribute: The registered singleton Attribute to observe.
804
803
  match: The scalar predicate to await.
805
- options: The optional Request ID override and total handler wait budget.
804
+ options: The optional Request ID override and total wait budget.
806
805
 
807
806
  Returns:
808
807
  The current Attribute value that satisfied ``match``.
809
808
 
810
809
  Raises:
811
810
  ValueError: If an identifier, option, or match operand is invalid.
812
- WaitHandlerTimeoutError: If a positive handler budget expires first.
811
+ WaitHandlerTimeoutError: If a positive wait budget expires first.
813
812
  FlowNotActiveError: If the Flow closes first.
814
813
  DexServiceError: If FlowService cannot perform the wait.
815
814
  """
@@ -841,7 +840,7 @@ class AsyncClient:
841
840
 
842
841
  Raises:
843
842
  ValueError: If an identifier, option, or match operand is invalid.
844
- WaitHandlerTimeoutError: If a positive handler budget expires first.
843
+ WaitHandlerTimeoutError: If a positive wait budget expires first.
845
844
  FlowNotActiveError: If the Flow closes first.
846
845
  DexServiceError: If FlowService cannot perform the wait.
847
846
  """
@@ -871,7 +870,7 @@ class AsyncClient:
871
870
  Raises:
872
871
  TypeError: If arguments do not match the Attribute definition.
873
872
  ValueError: If an identifier, option, or expected value is invalid.
874
- WaitHandlerTimeoutError: If a positive handler budget expires first.
873
+ WaitHandlerTimeoutError: If a positive wait budget expires first.
875
874
  FlowNotActiveError: If the Flow closes first.
876
875
  DexServiceError: If FlowService cannot perform the wait.
877
876
  """
@@ -734,23 +734,22 @@ class Client:
734
734
  step_execution_id: StepExecutionId,
735
735
  options: WaitForStepCompletionOptions,
736
736
  ) -> None:
737
- """Block until one Step execution completes or its handler budget expires.
737
+ """Block until one Step execution completes or its wait budget expires.
738
738
 
739
739
  The server derives a stable Request ID from the Step execution when none
740
- is supplied. Transport long polls automatically reattach to the same wait.
741
- Leave the maximum wait time at zero for ordinary infinite waits. A positive
742
- value releases per-Flow in-flight Update capacity for abandoned waits.
743
- The budget spans Continue-as-New and is distinct from the caller's lifetime.
744
- Retrying after expiry creates a new Update generation.
740
+ is supplied. Leave the maximum wait time at zero for normal use. Positive
741
+ values are exceptional because short budgets can add many Temporal Update
742
+ events to Workflow history; prefer at least one minute when nonzero. A
743
+ positive value bounds the caller-visible wait.
745
744
 
746
745
  Args:
747
746
  flow_id: The non-empty active Flow ID.
748
747
  step_execution_id: The Step type and positive execution number.
749
- options: The optional Request ID override and total handler wait budget.
748
+ options: The optional Request ID override and total wait budget.
750
749
 
751
750
  Raises:
752
- ValueError: If the Request ID or handler wait budget is invalid.
753
- WaitHandlerTimeoutError: If a positive handler budget expires first.
751
+ ValueError: If the Request ID or wait budget is invalid.
752
+ WaitHandlerTimeoutError: If a positive wait budget expires first.
754
753
  FlowNotActiveError: If the Flow closes first.
755
754
  DexServiceError: If FlowService cannot perform the wait.
756
755
  """
@@ -788,24 +787,24 @@ class Client:
788
787
 
789
788
  The Client returns the value observed by the successful wait. The server
790
789
  derives a stable Request ID from the condition when none is supplied.
791
- Leave the maximum wait time at zero for ordinary infinite waits. A positive
792
- value releases per-Flow in-flight Update capacity for rarely matching waits.
793
- The budget spans transport reattachments and Continue-as-New, and is distinct
794
- from the caller's lifetime. Retrying after expiry creates a new Update generation.
790
+ Leave the maximum wait time at zero for normal use. Positive values are
791
+ exceptional because short budgets can add many Temporal Update events to
792
+ Workflow history; prefer at least one minute when nonzero. A positive value
793
+ bounds the caller-visible wait.
795
794
  JSON, bytes, and null operands raise ``ValueError`` before transport.
796
795
 
797
796
  Args:
798
797
  flow_id: The non-empty active Flow ID.
799
798
  attribute: The registered singleton Attribute to observe.
800
799
  match: The scalar predicate to await.
801
- options: The optional Request ID override and total handler wait budget.
800
+ options: The optional Request ID override and total wait budget.
802
801
 
803
802
  Returns:
804
803
  The current Attribute value that satisfied ``match``.
805
804
 
806
805
  Raises:
807
806
  ValueError: If an identifier, option, or match operand is invalid.
808
- WaitHandlerTimeoutError: If a positive handler budget expires first.
807
+ WaitHandlerTimeoutError: If a positive wait budget expires first.
809
808
  FlowNotActiveError: If the Flow closes first.
810
809
  DexServiceError: If FlowService cannot perform the wait.
811
810
  """
@@ -838,7 +837,7 @@ class Client:
838
837
 
839
838
  Raises:
840
839
  ValueError: If an identifier, option, or match operand is invalid.
841
- WaitHandlerTimeoutError: If a positive handler budget expires first.
840
+ WaitHandlerTimeoutError: If a positive wait budget expires first.
842
841
  FlowNotActiveError: If the Flow closes first.
843
842
  DexServiceError: If FlowService cannot perform the wait.
844
843
  """
@@ -868,7 +867,7 @@ class Client:
868
867
  Raises:
869
868
  TypeError: If arguments do not match the Attribute definition.
870
869
  ValueError: If an identifier, option, or expected value is invalid.
871
- WaitHandlerTimeoutError: If a positive handler budget expires first.
870
+ WaitHandlerTimeoutError: If a positive wait budget expires first.
872
871
  FlowNotActiveError: If the Flow closes first.
873
872
  DexServiceError: If FlowService cannot perform the wait.
874
873
  """
@@ -51,7 +51,7 @@ class FlowServiceStub:
51
51
  Aborted — locking RPC attribute lock contention
52
52
  sub_status WORKER_API_ERROR
53
53
  ResourceExhausted — worker connection pool / message size limits
54
- DeadlineExceeded — transport long poll or durable wait handler deadline
54
+ DeadlineExceeded — transport long poll or caller-visible wait deadline
55
55
  sub_status LONG_POLL_TIME_OUT or WAIT_HANDLER_TIME_OUT
56
56
  Canceled — caller canceled the RPC context
57
57
  Unavailable — Temporal/Cadence backend or Stream Store backend unavailable;
@@ -69,7 +69,7 @@ class FlowServiceStub:
69
69
  WORKER_API_ERROR + OriginalWorker* when present.
70
70
  WaitForStepCompletion / WaitForAttribute — Temporal-only sync updates; API
71
71
  retries CONTINUE_AS_NEW_PREEMPTED (not exposed as Internal). Transport
72
- timeout → DeadlineExceeded + LONG_POLL_TIME_OUT. Handler timeout →
72
+ timeout → DeadlineExceeded + LONG_POLL_TIME_OUT. Wait-budget timeout →
73
73
  DeadlineExceeded + WAIT_HANDLER_TIME_OUT. WaitForAttribute rejects waiting
74
74
  on blob-backed stored attributes with FailedPrecondition.
75
75
  WaitForFlow — long-poll timeout while still running → DeadlineExceeded +
@@ -250,7 +250,7 @@ class FlowServiceServicer:
250
250
  Aborted — locking RPC attribute lock contention
251
251
  sub_status WORKER_API_ERROR
252
252
  ResourceExhausted — worker connection pool / message size limits
253
- DeadlineExceeded — transport long poll or durable wait handler deadline
253
+ DeadlineExceeded — transport long poll or caller-visible wait deadline
254
254
  sub_status LONG_POLL_TIME_OUT or WAIT_HANDLER_TIME_OUT
255
255
  Canceled — caller canceled the RPC context
256
256
  Unavailable — Temporal/Cadence backend or Stream Store backend unavailable;
@@ -268,7 +268,7 @@ class FlowServiceServicer:
268
268
  WORKER_API_ERROR + OriginalWorker* when present.
269
269
  WaitForStepCompletion / WaitForAttribute — Temporal-only sync updates; API
270
270
  retries CONTINUE_AS_NEW_PREEMPTED (not exposed as Internal). Transport
271
- timeout → DeadlineExceeded + LONG_POLL_TIME_OUT. Handler timeout →
271
+ timeout → DeadlineExceeded + LONG_POLL_TIME_OUT. Wait-budget timeout →
272
272
  DeadlineExceeded + WAIT_HANDLER_TIME_OUT. WaitForAttribute rejects waiting
273
273
  on blob-backed stored attributes with FailedPrecondition.
274
274
  WaitForFlow — long-poll timeout while still running → DeadlineExceeded +
@@ -615,7 +615,7 @@ class FlowService:
615
615
  Aborted — locking RPC attribute lock contention
616
616
  sub_status WORKER_API_ERROR
617
617
  ResourceExhausted — worker connection pool / message size limits
618
- DeadlineExceeded — transport long poll or durable wait handler deadline
618
+ DeadlineExceeded — transport long poll or caller-visible wait deadline
619
619
  sub_status LONG_POLL_TIME_OUT or WAIT_HANDLER_TIME_OUT
620
620
  Canceled — caller canceled the RPC context
621
621
  Unavailable — Temporal/Cadence backend or Stream Store backend unavailable;
@@ -633,7 +633,7 @@ class FlowService:
633
633
  WORKER_API_ERROR + OriginalWorker* when present.
634
634
  WaitForStepCompletion / WaitForAttribute — Temporal-only sync updates; API
635
635
  retries CONTINUE_AS_NEW_PREEMPTED (not exposed as Internal). Transport
636
- timeout → DeadlineExceeded + LONG_POLL_TIME_OUT. Handler timeout →
636
+ timeout → DeadlineExceeded + LONG_POLL_TIME_OUT. Wait-budget timeout →
637
637
  DeadlineExceeded + WAIT_HANDLER_TIME_OUT. WaitForAttribute rejects waiting
638
638
  on blob-backed stored attributes with FailedPrecondition.
639
639
  WaitForFlow — long-poll timeout while still running → DeadlineExceeded +
@@ -28,7 +28,7 @@ class IdReusePolicy(Enum):
28
28
  """Control whether ``start_flow`` may reuse an existing Flow ID.
29
29
 
30
30
  Attributes:
31
- DEFAULT: Use the Dex server's default reuse policy.
31
+ DEFAULT: Use the Dex server default, which rejects every previously used Flow ID.
32
32
  ALLOW_IF_PREVIOUS_FAILED: Reuse only after an unsuccessful closed run.
33
33
  ALLOW_IF_NOT_RUNNING: Reuse after any closed run.
34
34
  ALLOW_TERMINATE_IF_RUNNING: Terminate an active run and start the new run.
@@ -24,7 +24,7 @@ class ErrorSubStatus(Enum):
24
24
  WORKER_API_ERROR: An application Worker rejected or failed an invocation.
25
25
  LONG_POLL_TIMEOUT: A wait ended without observing its condition.
26
26
  CHANNEL_MESSAGE_NOT_FOUND: A pending Channel message ID no longer exists.
27
- WAIT_HANDLER_TIMEOUT: A durable wait reached its total handler budget.
27
+ WAIT_HANDLER_TIMEOUT: A caller-visible wait budget expired.
28
28
  """
29
29
 
30
30
  UNCATEGORIZED = "uncategorized"
@@ -166,7 +166,7 @@ class LongPollTimeoutError(DexServiceError):
166
166
 
167
167
 
168
168
  class WaitHandlerTimeoutError(DexServiceError):
169
- """Indicate that a durable wait reached its caller-defined total budget."""
169
+ """Indicate that a caller-defined wait budget expired."""
170
170
 
171
171
  pass
172
172
 
@@ -24,17 +24,16 @@ class WaitForStepCompletionOptions:
24
24
 
25
25
  The server derives a stable Request ID from the Step execution when
26
26
  ``request_id`` is empty. Reuse an override only for the same logical wait.
27
- Leave ``maximum_wait_time`` at zero for ordinary infinite waits. A positive
28
- value releases per-Flow in-flight Update capacity for abandoned or rarely
29
- completing waits. It spans transport reattachments and Continue-as-New,
30
- unlike a caller or transport deadline. Retrying after expiry creates a new
31
- Update generation.
27
+ Leave ``maximum_wait_time`` at zero for normal use. Positive values are an
28
+ exceptional safety valve. Short budgets can add many Temporal Update events
29
+ to Workflow history; prefer at least one minute when nonzero. A positive
30
+ value bounds the caller-visible wait.
32
31
 
33
32
  Attributes:
34
33
  request_id: An optional override for the server-derived stable ID.
35
- maximum_wait_time: The accepted handler lifetime. Zero waits indefinitely
36
- and is recommended for ordinary waits. A positive value releases
37
- per-Flow in-flight capacity.
34
+ maximum_wait_time: The caller-visible wait budget. Zero waits indefinitely.
35
+ Positive values are rare; prefer at least one minute to limit Temporal
36
+ Update history growth.
38
37
  """
39
38
 
40
39
  request_id: str = ""
@@ -47,17 +46,16 @@ class WaitForAttributeOptions:
47
46
 
48
47
  The server derives a stable Request ID from the Attribute condition when
49
48
  ``request_id`` is empty. Reuse an override only for the same logical predicate.
50
- Leave ``maximum_wait_time`` at zero for ordinary infinite waits. A positive
51
- value releases per-Flow in-flight Update capacity for abandoned or rarely
52
- matching waits. It spans transport reattachments and Continue-as-New,
53
- unlike a caller or transport deadline. Retrying after expiry creates a new
54
- Update generation.
49
+ Leave ``maximum_wait_time`` at zero for normal use. Positive values are an
50
+ exceptional safety valve. Short budgets can add many Temporal Update events
51
+ to Workflow history; prefer at least one minute when nonzero. A positive
52
+ value bounds the caller-visible wait.
55
53
 
56
54
  Attributes:
57
55
  request_id: An optional override for the server-derived stable ID.
58
- maximum_wait_time: The accepted handler lifetime. Zero waits indefinitely
59
- and is recommended for ordinary waits. A positive value releases
60
- per-Flow in-flight capacity.
56
+ maximum_wait_time: The caller-visible wait budget. Zero waits indefinitely.
57
+ Positive values are rare; prefer at least one minute to limit Temporal
58
+ Update history growth.
61
59
  """
62
60
 
63
61
  request_id: str = ""
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "dex-python-sdk"
3
3
  # Publish uses tag sdk-python/v*; CI stamps this for release builds.
4
- version = "0.11.0"
4
+ version = "0.12.0"
5
5
  description = "Python SDK for the Dex workflow engine"
6
6
  authors = [{name = "Super Durable"}]
7
7
  readme = "README.md"
File without changes