durabletask 1.3.0.dev24__tar.gz → 1.3.0.dev25__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 (37) hide show
  1. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/PKG-INFO +1 -1
  2. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/testing/in_memory_backend.py +16 -1
  3. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask.egg-info/PKG-INFO +1 -1
  4. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/pyproject.toml +1 -1
  5. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/LICENSE +0 -0
  6. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/README.md +0 -0
  7. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/__init__.py +0 -0
  8. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/client.py +0 -0
  9. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/entities/__init__.py +0 -0
  10. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/entities/durable_entity.py +0 -0
  11. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/entities/entity_context.py +0 -0
  12. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/entities/entity_instance_id.py +0 -0
  13. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/entities/entity_lock.py +0 -0
  14. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/entities/entity_metadata.py +0 -0
  15. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/entities/entity_operation_failed_exception.py +0 -0
  16. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/client_helpers.py +0 -0
  17. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/entity_state_shim.py +0 -0
  18. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/exceptions.py +0 -0
  19. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/grpc_interceptor.py +0 -0
  20. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/helpers.py +0 -0
  21. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/json_encode_output_exception.py +0 -0
  22. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/orchestration_entity_context.py +0 -0
  23. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/orchestrator_service_pb2.py +0 -0
  24. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/orchestrator_service_pb2.pyi +0 -0
  25. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/orchestrator_service_pb2_grpc.py +0 -0
  26. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/proto_task_hub_sidecar_service_stub.py +0 -0
  27. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/shared.py +0 -0
  28. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/internal/tracing.py +0 -0
  29. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/py.typed +0 -0
  30. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/task.py +0 -0
  31. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/testing/__init__.py +0 -0
  32. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask/worker.py +0 -0
  33. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask.egg-info/SOURCES.txt +0 -0
  34. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask.egg-info/dependency_links.txt +0 -0
  35. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask.egg-info/requires.txt +0 -0
  36. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/durabletask.egg-info/top_level.txt +0 -0
  37. {durabletask-1.3.0.dev24 → durabletask-1.3.0.dev25}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: durabletask
3
- Version: 1.3.0.dev24
3
+ Version: 1.3.0.dev25
4
4
  Summary: A Durable Task Client SDK for Python
5
5
  License: MIT License
6
6
 
@@ -277,6 +277,10 @@ class InMemoryOrchestrationBackend(stubs.TaskHubSidecarServiceServicer):
277
277
  instance = self._wait_for_state(request.instanceId, predicate, timeout=context.time_remaining())
278
278
 
279
279
  if not instance:
280
+ with self._lock:
281
+ if request.instanceId in self._instances:
282
+ context.abort(grpc.StatusCode.DEADLINE_EXCEEDED,
283
+ f"Timed out waiting for instance '{request.instanceId}' to start")
280
284
  return pb.GetInstanceResponse(exists=False)
281
285
 
282
286
  return self._build_instance_response(instance, request.getInputsAndOutputs)
@@ -290,6 +294,10 @@ class InMemoryOrchestrationBackend(stubs.TaskHubSidecarServiceServicer):
290
294
  )
291
295
 
292
296
  if not instance:
297
+ with self._lock:
298
+ if request.instanceId in self._instances:
299
+ context.abort(grpc.StatusCode.DEADLINE_EXCEEDED,
300
+ f"Timed out waiting for instance '{request.instanceId}' to complete")
293
301
  return pb.GetInstanceResponse(exists=False)
294
302
 
295
303
  return self._build_instance_response(instance, request.getInputsAndOutputs)
@@ -309,7 +317,14 @@ class InMemoryOrchestrationBackend(stubs.TaskHubSidecarServiceServicer):
309
317
  )
310
318
  instance.pending_events.append(event)
311
319
  instance.last_updated_at = datetime.now(timezone.utc)
312
- self._enqueue_orchestration(instance.instance_id)
320
+
321
+ # Don't dispatch work for suspended or terminal orchestrations;
322
+ # suspended events will be delivered when the orchestration is
323
+ # resumed, and terminal orchestrations can't process new events.
324
+ not_terminal = not self._is_terminal_status(instance.status)
325
+ not_suspended = instance.status != pb.ORCHESTRATION_STATUS_SUSPENDED
326
+ if not_terminal and not_suspended:
327
+ self._enqueue_orchestration(instance.instance_id)
313
328
 
314
329
  self._logger.info(f"Raised event '{request.name}' for instance '{request.instanceId}'")
315
330
  return pb.RaiseEventResponse()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: durabletask
3
- Version: 1.3.0.dev24
3
+ Version: 1.3.0.dev25
4
4
  Summary: A Durable Task Client SDK for Python
5
5
  License: MIT License
6
6
 
@@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta"
9
9
 
10
10
  [project]
11
11
  name = "durabletask"
12
- version = "1.3.0.dev24"
12
+ version = "1.3.0.dev25"
13
13
  description = "A Durable Task Client SDK for Python"
14
14
  keywords = [
15
15
  "durable",