Skip to content

Commit 61866ba

Browse files
authored
chore: make the lazy import error message clearer (#9667)
* made the lazy import error message clearer * add header
1 parent ed48e9e commit 61866ba

3 files changed

Lines changed: 28 additions & 2 deletions

File tree

haystack/lazy_imports.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ def __exit__(
4646
"""
4747
if isinstance(exc_value, ImportError):
4848
message = (
49-
f"Failed to import '{exc_value.name}'. {self.import_error_msg.format(exc_value.name)}. "
50-
f"Original error: {exc_value}"
49+
f"Haystack failed to import the optional dependency '{exc_value.name}'. "
50+
f"{self.import_error_msg.format(exc_value.name)}. Original error: {exc_value}"
5151
)
5252
self._deferred = (exc_value, message)
5353
return True
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
enhancements:
3+
- |
4+
Made the lazy import error message clearer explaining that the optional dependency is missing.

test/test_lazy_imports.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
import pytest
6+
7+
from haystack.lazy_imports import DEFAULT_IMPORT_ERROR_MSG, LazyImport
8+
9+
10+
class TestLazyImport:
11+
def test_import_error_is_suppressed_and_deferred(self):
12+
with LazyImport() as lazy_import:
13+
import a_module
14+
15+
assert lazy_import._deferred is not None
16+
exc_value, message = lazy_import._deferred
17+
assert isinstance(exc_value, ImportError)
18+
expected_message = (
19+
"Haystack failed to import the optional dependency 'a_module'. Try 'pip install a_module'. "
20+
"Original error: No module named 'a_module'"
21+
)
22+
assert expected_message in message

0 commit comments

Comments
 (0)