Skip to content

Commit 5ee9c68

Browse files
committed
debugging test_tasks
1 parent 8969b3f commit 5ee9c68

File tree

5 files changed

+17
-19
lines changed

5 files changed

+17
-19
lines changed

pydra/design/shell.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,11 @@ def _validate_sep(self, _, sep):
108108
else:
109109
tp = self.type
110110
origin = ty.get_origin(tp) or tp
111-
if inspect.isclass(origin) and issubclass(origin, ty.Iterable):
111+
if (
112+
inspect.isclass(origin)
113+
and issubclass(origin, ty.Sequence)
114+
and tp is not str
115+
):
112116
if sep is None:
113117
raise ValueError(
114118
f"A value to 'sep' must be provided when type is iterable {tp} "

pydra/engine/core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ def done(self):
457457
if _result:
458458
if _result.errored:
459459
self._errored = True
460-
raise ValueError(f"Task {self.name} raised an error")
460+
raise ValueError(f"Task {self.name!r} raised an error")
461461
else:
462462
return True
463463
return False

pydra/engine/specs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ def _from_task(cls, task: "Task[WorkflowDef]") -> Self:
748748
if not err_files:
749749
raise
750750
raise ValueError(
751-
f"Task {lazy_field._node.name} raised an error, full crash report is "
751+
f"Task {lazy_field._node.name!r} raised an error, full crash report is "
752752
f"here: "
753753
+ (
754754
str(err_files[0])

pydra/engine/submitter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,13 +491,13 @@ def tasks(self) -> ty.Iterable["Task[DefType]"]:
491491
self._tasks = {t.state_index: t for t in self._generate_tasks()}
492492
return self._tasks.values()
493493

494-
def task(self, index: StateIndex | None = None) -> "Task | list[Task[DefType]]":
494+
def task(self, index: StateIndex = StateIndex()) -> "Task | list[Task[DefType]]":
495495
"""Get a task object for a given state index."""
496496
self.tasks # Ensure tasks are loaded
497497
try:
498498
return self._tasks[index]
499499
except KeyError:
500-
if index is None:
500+
if not index:
501501
return StateArray(self._tasks.values())
502502
raise
503503

pydra/engine/tests/test_task.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,14 +1351,8 @@ def test_traceback(tmpdir):
13511351
def FunError(x):
13521352
raise Exception("Error from the function")
13531353

1354-
task = Task(
1355-
name="error",
1356-
definition=FunError().split("x", x=[3, 4]),
1357-
submitter=Submitter(cache_dir=tmpdir),
1358-
)
1359-
1360-
with pytest.raises(Exception, match="from the function") as exinfo:
1361-
task.run()
1354+
with pytest.raises(Exception, match="Task 'FunError' raised an error") as exinfo:
1355+
FunError(x=3)(worker="cf", cache_dir=tmpdir)
13621356

13631357
# getting error file from the error message
13641358
error_file_match = str(exinfo.value).split("here: ")[-1].split("_error.pklz")[0]
@@ -1383,12 +1377,12 @@ def FunError(x):
13831377
raise Exception("Error from the function")
13841378

13851379
@workflow.define
1386-
def Workflow(x):
1387-
error = workflow.add(FunError(x=x), name="error")
1388-
return error.out
1380+
def Workflow(x_list):
1381+
fun_error = workflow.add(FunError().split(x=x_list), name="fun_error")
1382+
return fun_error.out
13891383

1390-
wf = Workflow().split("x", x=[3, 4])
1391-
with pytest.raises(Exception, match="Task error raised an error") as exinfo:
1384+
wf = Workflow(x_list=[3, 4])
1385+
with pytest.raises(Exception, match="Task 'fun_error' raised an error") as exinfo:
13921386
wf(worker="cf")
13931387

13941388
# getting error file from the error message
@@ -1463,7 +1457,7 @@ class Defn(ShellDef["Defn.Outputs"]):
14631457
a1_field: str
14641458
b2_field: float
14651459
c3_field: ty.Dict[str, str]
1466-
d4_field: ty.List[str]
1460+
d4_field: ty.List[str] = shell.arg(sep=" ")
14671461
executable = "dummy"
14681462

14691463
class Outputs(ShellOutputs):

0 commit comments

Comments
 (0)