from pandas._typing import Scalar
from pandas.compat._optional import import_optional_dependency
+import platform
+import re
+import warnings
+warn_numba_platform = "Non-x86 system detected, Numba may give wrong results or crash" if not bool(re.match('i.?86|x86',platform.uname()[4])) else False
from pandas.core.util.numba_ import (
check_kwargs_and_nopython,
numba_func = jit_user_function(func, nopython, nogil, parallel)
numba = import_optional_dependency("numba")
+ if warn_numba_platform:
+ warnings.warn(warn_numba_platform)
if parallel:
loop_range = numba.prange
from pandas import DataFrame, option_context
import pandas._testing as tm
from pandas.core.util.numba_ import NUMBA_FUNC_CACHE
+from pandas.compat import is_platform_little_endian
@td.skip_if_no("numba", "0.46.0")
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
@pytest.mark.filterwarnings("ignore:\\nThe keyword argument")
# Filter warnings when parallel=True and the function can't be parallelized by Numba
@pytest.mark.parametrize("jit", [True, False])
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
@pytest.mark.filterwarnings("ignore:\\nThe keyword argument")
# Filter warnings when parallel=True and the function can't be parallelized by Numba
@pytest.mark.parametrize("jit", [True, False])
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
def test_use_global_config():
def func_1(values, index):
return values + 1
import pytest
import pandas.util._test_decorators as td
+from pandas.compat import is_platform_little_endian
from pandas import DataFrame, Series, bdate_range, notna
@pytest.fixture(
params=[
- pytest.param(("numba", True), marks=td.skip_if_no("numba", "0.46.0")),
+ pytest.param(("numba", True), marks=[pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False),td.skip_if_no("numba", "0.46.0")]),
("cython", True),
("cython", False),
]
from pandas import Series, option_context
import pandas._testing as tm
from pandas.core.util.numba_ import NUMBA_FUNC_CACHE
+from pandas.compat import is_platform_32bit, is_platform_little_endian
+import platform
+import sys
+try:
+ from numba.core.errors import UnsupportedParforsError
+except ImportError:
+ UnsupportedParforsError = ImportError
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=is_platform_32bit(), raises=UnsupportedParforsError, reason="some Numba functionality is not available on 32 bit systems", strict=False)
+@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
@pytest.mark.filterwarnings("ignore:\\nThe keyword argument")
# Filter warnings when parallel=True and the function can't be parallelized by Numba
class TestApply:
)
tm.assert_series_equal(result, expected)
+ @pytest.mark.xfail(condition='mips' in platform.uname()[4].lower() and sys.maxsize<2**33, reason="Numba may give wrong answers on mipsel", strict=False)
@pytest.mark.parametrize("jit", [True, False])
def test_cache(self, jit, nogil, parallel, nopython):
# Test that the functions are cached correctly if we switch functions
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
def test_use_global_config():
def f(x):
return np.mean(x) + 2