Skip to content

Commit 4db8083

Browse files
committed
fixes after merge, lint
Signed-off-by: Filinto Duran <[email protected]>
1 parent f635076 commit 4db8083

File tree

5 files changed

+306
-13
lines changed

5 files changed

+306
-13
lines changed

durabletask/aio/driver.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,9 @@ def driver_gen() -> Generator[task.Task[Any], Any, Any]:
160160
except StopIteration as stop:
161161
return stop.value
162162
except Exception as e:
163+
# Re-raise NonRetryableError directly to preserve its type for the runtime
164+
if isinstance(e, task.NonRetryableError):
165+
raise
163166
raise AsyncWorkflowError(
164167
f"Workflow failed during initialization: {e}",
165168
workflow_name=self._workflow_name,
@@ -199,6 +202,15 @@ def _one_shot() -> Generator[task.Task[Any], Any, Any]:
199202
except StopIteration as stop:
200203
return stop.value
201204
except Exception as e:
205+
# Check if this is a TaskFailedError wrapping a NonRetryableError
206+
if isinstance(e, task.TaskFailedError):
207+
details = e.details
208+
if details.error_type == "NonRetryableError":
209+
# Reconstruct NonRetryableError to preserve its type for the runtime
210+
raise task.NonRetryableError(details.message) from e
211+
# Re-raise NonRetryableError directly to preserve its type for the runtime
212+
if isinstance(e, task.NonRetryableError):
213+
raise
202214
raise AsyncWorkflowError(
203215
f"Workflow failed: {e}",
204216
workflow_name=self._workflow_name,
@@ -231,6 +243,15 @@ def _one_shot() -> Generator[task.Task[Any], Any, Any]:
231243
except StopIteration as stop:
232244
return stop.value
233245
except Exception as workflow_exc:
246+
# Check if this is a TaskFailedError wrapping a NonRetryableError
247+
if isinstance(workflow_exc, task.TaskFailedError):
248+
details = workflow_exc.details
249+
if details.error_type == "NonRetryableError":
250+
# Reconstruct NonRetryableError to preserve its type for the runtime
251+
raise task.NonRetryableError(details.message) from workflow_exc
252+
# Re-raise NonRetryableError directly to preserve its type for the runtime
253+
if isinstance(workflow_exc, task.NonRetryableError):
254+
raise
234255
raise AsyncWorkflowError(
235256
f"Workflow failed: {workflow_exc}",
236257
workflow_name=self._workflow_name,
@@ -247,6 +268,15 @@ def _one_shot() -> Generator[task.Task[Any], Any, Any]:
247268
except StopIteration as stop:
248269
return stop.value
249270
except Exception as workflow_exc:
271+
# Check if this is a TaskFailedError wrapping a NonRetryableError
272+
if isinstance(workflow_exc, task.TaskFailedError):
273+
details = workflow_exc.details
274+
if details.error_type == "NonRetryableError":
275+
# Reconstruct NonRetryableError to preserve its type for the runtime
276+
raise task.NonRetryableError(details.message) from workflow_exc
277+
# Re-raise NonRetryableError directly to preserve its type for the runtime
278+
if isinstance(workflow_exc, task.NonRetryableError):
279+
raise
250280
raise AsyncWorkflowError(
251281
f"Workflow failed: {workflow_exc}",
252282
workflow_name=self._workflow_name,
@@ -277,6 +307,15 @@ def _one_shot() -> Generator[task.Task[Any], Any, Any]:
277307
except StopIteration as stop:
278308
return stop.value
279309
except Exception as e:
310+
# Check if this is a TaskFailedError wrapping a NonRetryableError
311+
if isinstance(e, task.TaskFailedError):
312+
details = e.details
313+
if details.error_type == "NonRetryableError":
314+
# Reconstruct NonRetryableError to preserve its type for the runtime
315+
raise task.NonRetryableError(details.message) from e
316+
# Re-raise NonRetryableError directly to preserve its type for the runtime
317+
if isinstance(e, task.NonRetryableError):
318+
raise
280319
raise AsyncWorkflowError(
281320
f"Workflow failed: {e}",
282321
workflow_name=self._workflow_name,

durabletask/aio/sandbox.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ def __await__(self) -> Any:
406406
base = getattr(self.async_ctx, "_base_ctx", None)
407407
now_dt = getattr(base, "current_utc_datetime", None) if base is not None else None
408408
if now_dt is None:
409-
now_dt = _datetime.datetime.utcfromtimestamp(0)
409+
now_dt = _datetime.datetime.fromtimestamp(0, _datetime.timezone.utc)
410410
rng = deterministic_random(iid or "", now_dt)
411411
# Mark as deterministic so the detector can whitelist bound method calls
412412
try:

tests/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,16 @@ dapr init
5959
# Start Dapr sidecar for testing
6060
dapr run \
6161
--app-id durabletask-test \
62-
--dapr-grpc-port 50001 \
62+
--dapr-grpc-port 4001 \
6363
--dapr-http-port 3500 \
6464
--log-level debug \
65-
--components-path ./dapr-components \
65+
--resources-path ./examples/components \
6666
-- sleep 3600
6767

6868
# Alternative: Minimal setup without components
6969
dapr run \
7070
--app-id durabletask-test \
71-
--dapr-grpc-port 50001 \
71+
--dapr-grpc-port 4001 \
7272
--log-level debug \
7373
-- sleep 3600
7474
```
@@ -105,7 +105,7 @@ docker run --rm -d \
105105
daprio/daprd:latest \
106106
./daprd \
107107
--app-id durabletask-test \
108-
--dapr-grpc-port 50001 \
108+
--dapr-grpc-port 4001 \
109109
--dapr-http-port 3500 \
110110
--log-level debug
111111
```

tests/aio/test_sandbox.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1622,7 +1622,7 @@ async def test_workflow_calls_datetime_functions(self):
16221622

16231623
async def workflow_with_datetime(ctx):
16241624
now = datetime.datetime.now()
1625-
utcnow = datetime.datetime.utcnow()
1625+
utcnow = datetime.datetime.now(datetime.timezone.utc)
16261626
now_tz = datetime.datetime.now(datetime.timezone.utc)
16271627
return [now, utcnow, now_tz]
16281628

@@ -1666,7 +1666,7 @@ async def workflow_comprehensive(ctx):
16661666

16671667
# Test datetime
16681668
results["now"] = datetime.datetime.now()
1669-
results["utcnow"] = datetime.datetime.utcnow()
1669+
results["utcnow"] = datetime.datetime.now(datetime.timezone.utc)
16701670
results["now_tz"] = datetime.datetime.now(datetime.timezone.utc)
16711671

16721672
return results

0 commit comments

Comments
 (0)