test_safe_import.py 1020 B

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