test_compat.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from distutils.version import LooseVersion
  2. import pytest
  3. import pandas as pd
  4. from pandas.core.computation.check import _MIN_NUMEXPR_VERSION
  5. from pandas.core.computation.engines import _engines
  6. import pandas.core.computation.expr as expr
  7. def test_compat():
  8. # test we have compat with our version of nu
  9. from pandas.core.computation.check import _NUMEXPR_INSTALLED
  10. try:
  11. import numexpr as ne
  12. ver = ne.__version__
  13. if LooseVersion(ver) < LooseVersion(_MIN_NUMEXPR_VERSION):
  14. assert not _NUMEXPR_INSTALLED
  15. else:
  16. assert _NUMEXPR_INSTALLED
  17. except ImportError:
  18. pytest.skip("not testing numexpr version compat")
  19. @pytest.mark.parametrize('engine', _engines)
  20. @pytest.mark.parametrize('parser', expr._parsers)
  21. def test_invalid_numexpr_version(engine, parser):
  22. def testit():
  23. a, b = 1, 2 # noqa
  24. res = pd.eval('a + b', engine=engine, parser=parser)
  25. assert res == 3
  26. if engine == 'numexpr':
  27. try:
  28. import numexpr as ne
  29. except ImportError:
  30. pytest.skip("no numexpr")
  31. else:
  32. if (LooseVersion(ne.__version__) <
  33. LooseVersion(_MIN_NUMEXPR_VERSION)):
  34. with pytest.raises(ImportError):
  35. testit()
  36. else:
  37. testit()
  38. else:
  39. testit()