dex-python-sdk 1.2.1__tar.gz → 1.4.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 (65) hide show
  1. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/PKG-INFO +13 -3
  2. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/README.md +12 -2
  3. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/pyproject.toml +1 -1
  4. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/LEGACY_NOTICES.md +0 -0
  5. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/LICENSE +0 -0
  6. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/__init__.py +0 -0
  7. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_async_value_hydrator.py +0 -0
  8. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_async_worker_dispatcher.py +0 -0
  9. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_async_worker_service.py +0 -0
  10. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_grpc_errors.py +0 -0
  11. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_invocation_context.py +0 -0
  12. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_native.pyi +0 -0
  13. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_server_protocol.py +0 -0
  14. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_utils.py +0 -0
  15. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_value_hydrator.py +0 -0
  16. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_value_mapper.py +0 -0
  17. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_worker_dispatcher.py +0 -0
  18. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/_worker_service.py +0 -0
  19. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/async_client.py +0 -0
  20. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/async_worker.py +0 -0
  21. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/attribute.py +0 -0
  22. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/attribute_match.py +0 -0
  23. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/blob_cache.py +0 -0
  24. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/channel.py +0 -0
  25. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/client.py +0 -0
  26. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/client_options.py +0 -0
  27. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/codec.py +0 -0
  28. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/condition.py +0 -0
  29. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/context.py +0 -0
  30. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/dexpb/__init__.py +0 -0
  31. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/dexpb/dex_pb2.py +0 -0
  32. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/dexpb/dex_pb2.pyi +0 -0
  33. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/dexpb/dex_pb2_grpc.py +0 -0
  34. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/flow.py +0 -0
  35. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/flow_config.py +0 -0
  36. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/flow_info.py +0 -0
  37. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/flow_options.py +0 -0
  38. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/flow_result.py +0 -0
  39. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/py.typed +0 -0
  40. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/rpc_invoke_options.py +0 -0
  41. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/runtime_errors.py +0 -0
  42. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/step.py +0 -0
  43. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/step_execution.py +0 -0
  44. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/stream.py +0 -0
  45. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/subflow.py +0 -0
  46. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/timer.py +0 -0
  47. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/wait.py +0 -0
  48. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/wait_options.py +0 -0
  49. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/worker.py +0 -0
  50. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/dex/worker_options.py +0 -0
  51. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/Cargo.lock +0 -0
  52. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/Cargo.toml +0 -0
  53. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/Cargo.toml +0 -0
  54. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/LICENSE +0 -0
  55. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/src/config.rs +0 -0
  56. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/src/entry.rs +0 -0
  57. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/src/error.rs +0 -0
  58. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/src/format.rs +0 -0
  59. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/src/lib.rs +0 -0
  60. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/src/policy.rs +0 -0
  61. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/src/store.rs +0 -0
  62. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache/tests/blob_cache_integration.rs +0 -0
  63. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache-python/Cargo.toml +0 -0
  64. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.0}/sdk-rust/crates/dex-blob-cache-python/LICENSE +0 -0
  65. {dex_python_sdk-1.2.1 → dex_python_sdk-1.4.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: 1.2.1
3
+ Version: 1.4.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
@@ -444,12 +444,22 @@ Client calls raise concrete `DexServiceError` subclasses. Existing-Flow reads
444
444
  (`describe_flow`, `wait_for_flow`, and `time_travel`) raise
445
445
  `FlowNotFoundError` when the Flow does not exist. Mutations, RPCs, timer/Step
446
446
  waits, config updates, and continue-as-new triggers raise
447
- `FlowNotActiveError` when no running Flow can accept the operation.
447
+ `FlowNotActiveOrNotFoundError` when no running Flow can accept the operation.
448
+
449
+ RPCs also use this error when the target Flow cannot be found, including query-only
450
+ reads. A query-only RPC without locks, transactional execution, durable effects, or
451
+ Server-forced Update routing can read a retained terminal execution. At that confirmed
452
+ read boundary, this error means no readable target was found; return the application's
453
+ missing or unavailable result directly, without a lifecycle probe, a short timeout, a
454
+ retry, or historical Step-output decoding. Preserve other service and Worker failures.
455
+ For mutations and active-only RPCs, the error can mean either missing or closed and does
456
+ not prove that the requested action succeeded. RPC success does not prove that the Flow
457
+ is active.
448
458
 
449
459
  ```python
450
460
  try:
451
461
  client.invoke_rpc(orders.update_order, order_id, update)
452
- except dex.FlowNotActiveError:
462
+ except dex.FlowNotActiveOrNotFoundError:
453
463
  # The Flow is missing or already closed.
454
464
  pass
455
465
  ```
@@ -428,12 +428,22 @@ Client calls raise concrete `DexServiceError` subclasses. Existing-Flow reads
428
428
  (`describe_flow`, `wait_for_flow`, and `time_travel`) raise
429
429
  `FlowNotFoundError` when the Flow does not exist. Mutations, RPCs, timer/Step
430
430
  waits, config updates, and continue-as-new triggers raise
431
- `FlowNotActiveError` when no running Flow can accept the operation.
431
+ `FlowNotActiveOrNotFoundError` when no running Flow can accept the operation.
432
+
433
+ RPCs also use this error when the target Flow cannot be found, including query-only
434
+ reads. A query-only RPC without locks, transactional execution, durable effects, or
435
+ Server-forced Update routing can read a retained terminal execution. At that confirmed
436
+ read boundary, this error means no readable target was found; return the application's
437
+ missing or unavailable result directly, without a lifecycle probe, a short timeout, a
438
+ retry, or historical Step-output decoding. Preserve other service and Worker failures.
439
+ For mutations and active-only RPCs, the error can mean either missing or closed and does
440
+ not prove that the requested action succeeded. RPC success does not prove that the Flow
441
+ is active.
432
442
 
433
443
  ```python
434
444
  try:
435
445
  client.invoke_rpc(orders.update_order, order_id, update)
436
- except dex.FlowNotActiveError:
446
+ except dex.FlowNotActiveOrNotFoundError:
437
447
  # The Flow is missing or already closed.
438
448
  pass
439
449
  ```
@@ -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 = "1.2.1"
4
+ version = "1.4.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