durabletask 1.4.0.dev33__tar.gz → 1.4.0.dev34__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.
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/PKG-INFO +1 -1
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/task.py +46 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask.egg-info/PKG-INFO +1 -1
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/pyproject.toml +1 -1
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/LICENSE +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/README.md +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/__init__.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/client.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/entities/__init__.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/entities/durable_entity.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/entities/entity_context.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/entities/entity_instance_id.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/entities/entity_lock.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/entities/entity_metadata.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/entities/entity_operation_failed_exception.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/extensions/__init__.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/extensions/azure_blob_payloads/__init__.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/extensions/azure_blob_payloads/blob_payload_store.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/extensions/azure_blob_payloads/options.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/grpc_options.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/history.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/client_helpers.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/entity_state_shim.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/exceptions.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/grpc_interceptor.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/helpers.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/history_helpers.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/json_encode_output_exception.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/orchestration_entity_context.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/orchestrator_service_pb2.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/orchestrator_service_pb2.pyi +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/orchestrator_service_pb2_grpc.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/proto_task_hub_sidecar_service_stub.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/shared.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/tracing.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/payload/__init__.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/payload/helpers.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/payload/store.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/py.typed +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/testing/__init__.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/testing/in_memory_backend.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/worker.py +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask.egg-info/SOURCES.txt +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask.egg-info/dependency_links.txt +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask.egg-info/requires.txt +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask.egg-info/top_level.txt +0 -0
- {durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/setup.cfg +0 -0
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
# See https://peps.python.org/pep-0563/
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
+
import logging
|
|
7
8
|
import math
|
|
8
9
|
from abc import ABC, abstractmethod
|
|
9
10
|
from datetime import datetime, timedelta, timezone
|
|
@@ -279,6 +280,51 @@ class OrchestrationContext(ABC):
|
|
|
279
280
|
def _exit_critical_section(self) -> None:
|
|
280
281
|
pass
|
|
281
282
|
|
|
283
|
+
def create_replay_safe_logger(self, logger: logging.Logger) -> ReplaySafeLogger:
|
|
284
|
+
"""Create a replay-safe logger that suppresses log messages during orchestration replay.
|
|
285
|
+
|
|
286
|
+
The returned logger wraps the provided logger and only emits log messages when
|
|
287
|
+
the orchestrator is not replaying. This prevents duplicate log messages from
|
|
288
|
+
appearing as a side effect of orchestration replay.
|
|
289
|
+
|
|
290
|
+
Parameters
|
|
291
|
+
----------
|
|
292
|
+
logger : logging.Logger
|
|
293
|
+
The underlying logger to wrap.
|
|
294
|
+
|
|
295
|
+
Returns
|
|
296
|
+
-------
|
|
297
|
+
ReplaySafeLogger
|
|
298
|
+
A logger that only emits log messages when the orchestrator is not replaying.
|
|
299
|
+
"""
|
|
300
|
+
return ReplaySafeLogger(logger, lambda: self.is_replaying)
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
class ReplaySafeLogger(logging.LoggerAdapter):
|
|
304
|
+
"""A logger adapter that suppresses log messages during orchestration replay.
|
|
305
|
+
|
|
306
|
+
This class extends :class:`logging.LoggerAdapter` and only emits log
|
|
307
|
+
messages when the orchestrator is *not* replaying. Use this to avoid
|
|
308
|
+
duplicate log entries that would otherwise appear every time the
|
|
309
|
+
orchestrator replays its history.
|
|
310
|
+
|
|
311
|
+
Obtain an instance by calling :meth:`OrchestrationContext.create_replay_safe_logger`.
|
|
312
|
+
"""
|
|
313
|
+
|
|
314
|
+
def __init__(self, logger: logging.Logger, is_replaying: Callable[[], bool]) -> None:
|
|
315
|
+
super().__init__(logger, {})
|
|
316
|
+
self._is_replaying = is_replaying
|
|
317
|
+
|
|
318
|
+
def isEnabledFor(self, level: int) -> bool:
|
|
319
|
+
"""Return whether logging is enabled for the given level.
|
|
320
|
+
|
|
321
|
+
Returns ``False`` while the orchestrator is replaying so that callers
|
|
322
|
+
can skip expensive message formatting during replay.
|
|
323
|
+
"""
|
|
324
|
+
if self._is_replaying():
|
|
325
|
+
return False
|
|
326
|
+
return self.logger.isEnabledFor(level)
|
|
327
|
+
|
|
282
328
|
|
|
283
329
|
class FailureDetails:
|
|
284
330
|
def __init__(self, message: str, error_type: str, stack_trace: Optional[str]):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/entities/entity_instance_id.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/entity_state_shim.py
RENAMED
|
File without changes
|
|
File without changes
|
{durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/grpc_interceptor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/internal/orchestrator_service_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask/testing/in_memory_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-1.4.0.dev33 → durabletask-1.4.0.dev34}/durabletask.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|