1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sys
import types
 
import pytest
 
import pandas.util._test_decorators as td
 
 
@pytest.mark.parametrize("name", ["foo", "hello123"])
def test_safe_import_non_existent(name):
    assert not td.safe_import(name)
 
 
def test_safe_import_exists():
    assert td.safe_import("pandas")
 
 
@pytest.mark.parametrize("min_version,valid", [("0.0.0", True), ("99.99.99", False)])
def test_safe_import_versions(min_version, valid):
    result = td.safe_import("pandas", min_version=min_version)
    result = result if valid else not result
    assert result
 
 
@pytest.mark.parametrize(
    "min_version,valid", [(None, False), ("1.0", True), ("2.0", False)]
)
def test_safe_import_dummy(monkeypatch, min_version, valid):
    mod_name = "hello123"
 
    mod = types.ModuleType(mod_name)
    mod.__version__ = "1.5"
 
    if min_version is not None:
        monkeypatch.setitem(sys.modules, mod_name, mod)
 
    result = td.safe_import(mod_name, min_version=min_version)
    result = result if valid else not result
    assert result