Skip to content

Commit 70c59ae

Browse files
committed
Should not return placeholder if everything is installed
1 parent c4bfcda commit 70c59ae

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/lighteval/utils/imports.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ def __init__(self, *args, **kwargs):
189189
Placeholder.__name__ = _object.__name__
190190
Placeholder.__module__ = _object.__module__
191191

192-
return Placeholder
192+
return _object if all(is_package_available(backend) for backend in applied_backends) else Placeholder
193193
else:
194194

195195
@functools.wraps(_object)

tests/test_dependencies.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from packaging.requirements import Requirement
2929

3030
import lighteval.utils.imports as imports
31-
from lighteval.utils.imports import Extra
31+
from lighteval.utils.imports import DummyObject, Extra
3232

3333

3434
def pretend_missing(*names):
@@ -48,14 +48,14 @@ def fake(requirement):
4848
name = requirement.name
4949
elif isinstance(requirement, Extra):
5050
name = requirement.value
51+
5152
return False if name in names else (importlib.util.find_spec(name) is not None)
5253

5354
with patch.object(imports, "is_package_available", side_effect=fake):
54-
# If your module caches results at import time, reload here
55+
# In case lighteval caches results at import time, reload here
5556
import lighteval
5657

5758
importlib.reload(lighteval)
58-
5959
return test_func(*args, **kwargs)
6060

6161
return wrapper
@@ -97,3 +97,16 @@ def test_vllm_required_for_vllm_usage():
9797
match="Through the use of VLLMModel, you requested the use of `vllm<0.10.2,>=0.10.0` for this evaluation, but it is not available in your current environment. Please install it using pip.",
9898
):
9999
vllm(model_args="model_name=gpt2", tasks="lighteval|aime24|0", max_samples=0)
100+
101+
102+
@pretend_missing("spacy")
103+
def test_placeholder_is_returned_when_missing_dependencies():
104+
from lighteval.metrics.utils.linguistic_tokenizers import SpaCyTokenizer
105+
106+
assert isinstance(SpaCyTokenizer, DummyObject)
107+
108+
109+
def test_original_object_is_returned_when_dependencies_are_satisfied():
110+
from lighteval.metrics.utils.linguistic_tokenizers import SpaCyTokenizer
111+
112+
assert not isinstance(SpaCyTokenizer, DummyObject)

0 commit comments

Comments
 (0)