durabletask 0.0.0.dev27__tar.gz → 0.0.0.dev28__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 (31) hide show
  1. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/PKG-INFO +1 -1
  2. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/client.py +1 -4
  3. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/task.py +11 -3
  4. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/worker.py +15 -17
  5. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask.egg-info/PKG-INFO +1 -1
  6. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/pyproject.toml +1 -1
  7. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/LICENSE +0 -0
  8. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/README.md +0 -0
  9. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/__init__.py +0 -0
  10. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/entities/__init__.py +0 -0
  11. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/entities/durable_entity.py +0 -0
  12. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/entities/entity_context.py +0 -0
  13. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/entities/entity_instance_id.py +0 -0
  14. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/entities/entity_lock.py +0 -0
  15. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/entities/entity_metadata.py +0 -0
  16. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/entity_state_shim.py +0 -0
  17. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/exceptions.py +0 -0
  18. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/grpc_interceptor.py +0 -0
  19. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/helpers.py +0 -0
  20. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/orchestration_entity_context.py +0 -0
  21. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/orchestrator_service_pb2.py +0 -0
  22. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/orchestrator_service_pb2.pyi +0 -0
  23. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/orchestrator_service_pb2_grpc.py +0 -0
  24. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/proto_task_hub_sidecar_service_stub.py +0 -0
  25. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/internal/shared.py +0 -0
  26. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask/py.typed +0 -0
  27. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask.egg-info/SOURCES.txt +0 -0
  28. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask.egg-info/dependency_links.txt +0 -0
  29. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask.egg-info/requires.txt +0 -0
  30. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/durabletask.egg-info/top_level.txt +0 -0
  31. {durabletask-0.0.0.dev27 → durabletask-0.0.0.dev28}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: durabletask
3
- Version: 0.0.0.dev27
3
+ Version: 0.0.0.dev28
4
4
  Summary: A Durable Task Client SDK for Python
5
5
  License: MIT License
6
6
 
@@ -230,10 +230,7 @@ class TaskHubGrpcClient:
230
230
  self._logger.info(f"Purging instance '{instance_id}'.")
231
231
  self._stub.PurgeInstances(req)
232
232
 
233
- def signal_entity(self,
234
- entity_instance_id: EntityInstanceId,
235
- operation_name: str,
236
- input: Optional[Any] = None) -> None:
233
+ def signal_entity(self, entity_instance_id: EntityInstanceId, operation_name: str, input: Optional[Any] = None):
237
234
  req = pb.SignalEntityRequest(
238
235
  instanceId=str(entity_instance_id),
239
236
  name=operation_name,
@@ -142,7 +142,7 @@ class OrchestrationContext(ABC):
142
142
  def call_entity(self,
143
143
  entity: EntityInstanceId,
144
144
  operation: str,
145
- input: Optional[TInput] = None) -> CompletableTask[Any]:
145
+ input: Optional[TInput] = None) -> CompletableTask:
146
146
  """Schedule entity function for execution.
147
147
 
148
148
  Parameters
@@ -538,8 +538,8 @@ class ActivityContext:
538
538
  return self._task_id
539
539
 
540
540
 
541
- # Orchestrators are generators that yield tasks, receive any type, and return TOutput
542
- Orchestrator = Callable[[OrchestrationContext, TInput], Union[Generator[Task[Any], Any, TOutput], TOutput]]
541
+ # Orchestrators are generators that yield tasks and receive/return any type
542
+ Orchestrator = Callable[[OrchestrationContext, TInput], Union[Generator[Task, Any, Any], TOutput]]
543
543
 
544
544
  # Activities are simple functions that can be scheduled by orchestrators
545
545
  Activity = Callable[[ActivityContext, TInput], TOutput]
@@ -615,6 +615,14 @@ class RetryPolicy:
615
615
  return self._retry_timeout
616
616
 
617
617
 
618
+ def get_entity_name(fn: Entity) -> str:
619
+ if hasattr(fn, "__durable_entity_name__"):
620
+ return getattr(fn, "__durable_entity_name__")
621
+ if isinstance(fn, type) and issubclass(fn, DurableEntity):
622
+ return fn.__name__
623
+ return get_name(fn)
624
+
625
+
618
626
  def get_name(fn: Callable) -> str:
619
627
  """Returns the name of the provided function"""
620
628
  name = fn.__name__
@@ -150,7 +150,7 @@ class _Registry:
150
150
  self.entities = {}
151
151
  self.entity_instances = {}
152
152
 
153
- def add_orchestrator(self, fn: task.Orchestrator[TInput, TOutput]) -> str:
153
+ def add_orchestrator(self, fn: task.Orchestrator) -> str:
154
154
  if fn is None:
155
155
  raise ValueError("An orchestrator function argument is required.")
156
156
 
@@ -158,7 +158,7 @@ class _Registry:
158
158
  self.add_named_orchestrator(name, fn)
159
159
  return name
160
160
 
161
- def add_named_orchestrator(self, name: str, fn: task.Orchestrator[TInput, TOutput]) -> None:
161
+ def add_named_orchestrator(self, name: str, fn: task.Orchestrator) -> None:
162
162
  if not name:
163
163
  raise ValueError("A non-empty orchestrator name is required.")
164
164
  if name in self.orchestrators:
@@ -166,10 +166,10 @@ class _Registry:
166
166
 
167
167
  self.orchestrators[name] = fn
168
168
 
169
- def get_orchestrator(self, name: str) -> Optional[task.Orchestrator[Any, Any]]:
169
+ def get_orchestrator(self, name: str) -> Optional[task.Orchestrator]:
170
170
  return self.orchestrators.get(name)
171
171
 
172
- def add_activity(self, fn: task.Activity[TInput, TOutput]) -> str:
172
+ def add_activity(self, fn: task.Activity) -> str:
173
173
  if fn is None:
174
174
  raise ValueError("An activity function argument is required.")
175
175
 
@@ -177,7 +177,7 @@ class _Registry:
177
177
  self.add_named_activity(name, fn)
178
178
  return name
179
179
 
180
- def add_named_activity(self, name: str, fn: task.Activity[TInput, TOutput]) -> None:
180
+ def add_named_activity(self, name: str, fn: task.Activity) -> None:
181
181
  if not name:
182
182
  raise ValueError("A non-empty activity name is required.")
183
183
  if name in self.activities:
@@ -185,19 +185,17 @@ class _Registry:
185
185
 
186
186
  self.activities[name] = fn
187
187
 
188
- def get_activity(self, name: str) -> Optional[task.Activity[Any, Any]]:
188
+ def get_activity(self, name: str) -> Optional[task.Activity]:
189
189
  return self.activities.get(name)
190
190
 
191
- def add_entity(self, fn: task.Entity) -> str:
191
+ def add_entity(self, fn: task.Entity, name: Optional[str] = None) -> str:
192
192
  if fn is None:
193
193
  raise ValueError("An entity function argument is required.")
194
194
 
195
- if isinstance(fn, type) and issubclass(fn, DurableEntity):
196
- name = fn.__name__
197
- self.add_named_entity(name, fn)
198
- else:
199
- name = task.get_name(fn)
200
- self.add_named_entity(name, fn)
195
+ if name is None:
196
+ name = task.get_entity_name(fn)
197
+
198
+ self.add_named_entity(name, fn)
201
199
  return name
202
200
 
203
201
  def add_named_entity(self, name: str, fn: task.Entity) -> None:
@@ -362,7 +360,7 @@ class TaskHubGrpcWorker:
362
360
  def __exit__(self, type, value, traceback):
363
361
  self.stop()
364
362
 
365
- def add_orchestrator(self, fn: task.Orchestrator[TInput, TOutput]) -> str:
363
+ def add_orchestrator(self, fn: task.Orchestrator) -> str:
366
364
  """Registers an orchestrator function with the worker."""
367
365
  if self._is_running:
368
366
  raise RuntimeError(
@@ -378,13 +376,13 @@ class TaskHubGrpcWorker:
378
376
  )
379
377
  return self._registry.add_activity(fn)
380
378
 
381
- def add_entity(self, fn: task.Entity) -> str:
379
+ def add_entity(self, fn: task.Entity, name: Optional[str] = None) -> str:
382
380
  """Registers an entity function with the worker."""
383
381
  if self._is_running:
384
382
  raise RuntimeError(
385
383
  "Entities cannot be added while the worker is running."
386
384
  )
387
- return self._registry.add_entity(fn)
385
+ return self._registry.add_entity(fn, name)
388
386
 
389
387
  def use_versioning(self, version: VersioningOptions) -> None:
390
388
  """Initializes versioning options for sub-orchestrators and activities."""
@@ -1047,7 +1045,7 @@ class _RuntimeOrchestrationContext(task.OrchestrationContext):
1047
1045
  entity: EntityInstanceId,
1048
1046
  operation: str,
1049
1047
  input: Optional[TInput] = None,
1050
- ) -> task.CompletableTask[Any]:
1048
+ ) -> task.CompletableTask:
1051
1049
  id = self.next_sequence_number()
1052
1050
 
1053
1051
  self.call_entity_function_helper(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: durabletask
3
- Version: 0.0.0.dev27
3
+ Version: 0.0.0.dev28
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 = "0.0.0.dev27"
12
+ version = "0.0.0.dev28"
13
13
  description = "A Durable Task Client SDK for Python"
14
14
  keywords = [
15
15
  "durable",