Skip to content

Commit 527e2fd

Browse files
awolantJanuszL
authored andcommitted
Better PythonFunction error message (#883)
* Better PythonFunction error message Signed-off-by: Albert Wolant <awolant@nvidia.com>
1 parent 783a3e9 commit 527e2fd

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

dali/pipeline/operators/python_function/python_function.cc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,12 @@ void PythonFunctionImpl<CPUBackend>::RunImpl(SampleWorkspace *ws, const int idx)
120120
const auto &input = ws->Input<CPUBackend>(idx);
121121
auto &output = ws->Output<CPUBackend>(idx);
122122
py::gil_scoped_acquire guard{};
123-
py::array output_array = python_function(TensorToNumpyArray(input));
124-
CopyNumpyArrayToTensor(output, output_array);
123+
try {
124+
py::array output_array = python_function(TensorToNumpyArray(input));
125+
CopyNumpyArrayToTensor(output, output_array);
126+
} catch(const py::error_already_set & e) {
127+
throw std::runtime_error(to_string("PythonFunction error: ") + to_string(e.what()));
128+
}
125129
}
126130

127131
DALI_REGISTER_OPERATOR(PythonFunctionImpl, PythonFunctionImpl<CPUBackend>, CPU);

dali/test/python/test_python_function_operator.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,14 @@ def test_python_operator_flip():
130130
dali_output, = dali_flip.run()
131131
for i in range(len(numpy_output)):
132132
assert numpy.array_equal(numpy_output.at(i), dali_output.at(i))
133+
134+
def invalid_function(image):
135+
return img
136+
137+
def test_python_operator_invalid_function():
138+
invalid_pipe = PythonOperatorPipeline(BATCH_SIZE, NUM_WORKERS, DEVICE_ID, SEED, images_dir, invalid_function)
139+
invalid_pipe.build()
140+
try:
141+
invalid_pipe.run()
142+
except Exception as e:
143+
print(e)

0 commit comments

Comments
 (0)