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 (
NUMBA_FUNC_CACHE,
numba_func = jit_user_function(func, nopython, nogil, parallel)
numba = import_optional_dependency("numba")
+ if warn_numba_platform:
+ warnings.warn(warn_numba_platform)
@numba.jit(nopython=nopython, nogil=nogil, parallel=parallel)
def roll_apply(
+import sys
+
import numpy as np
import pytest
+try:
+ from numba.core.errors import UnsupportedParforsError,TypingError
+except ImportError:
+ UnsupportedParforsError = ImportError
+ TypingError = ImportError
+
from pandas.errors import NumbaUtilError
import pandas.util._test_decorators as td
)
import pandas._testing as tm
from pandas.core.util.numba_ import NUMBA_FUNC_CACHE
+from pandas.compat import is_platform_little_endian
+pytestmark = [pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False),pytest.mark.xfail(condition=sys.maxsize<2**33, raises=(UnsupportedParforsError,TypingError), reason="some Numba functionality is not available on 32 bit systems", strict=False)]
@td.skip_if_no("numba", "0.46.0")
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=sys.maxsize<2**33, raises=UnsupportedParforsError, reason="some Numba functionality is not available on 32 bit systems", 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=sys.maxsize<2**33, raises=UnsupportedParforsError, reason="some Numba functionality is not available on 32 bit systems", 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])
+import sys
+
import pytest
from pandas.errors import NumbaUtilError
)
import pandas._testing as tm
from pandas.core.util.numba_ import NUMBA_FUNC_CACHE
+from pandas.compat import is_platform_little_endian
+try:
+ from numba.core.errors import UnsupportedParforsError,TypingError
+except ImportError:
+ UnsupportedParforsError = ImportError
+ TypingError = ImportError
@td.skip_if_no("numba", "0.46.0")
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=sys.maxsize<2**33, 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
@pytest.mark.parametrize("jit", [True, False])
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=sys.maxsize<2**33, 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
@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
@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_args_not_cached():
# GH 41647
def sum_last(values, index, n):
@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_index_data_correctly_passed():
# GH 43133
def f(values, index):
lexsort_indexer,
nargsort,
)
+import sys
class TestSorting:
class TestMerge:
@pytest.mark.slow
+ @pytest.mark.xfail(condition=sys.maxsize<2**33, reason="assumes default int is int64", strict=False)
def test_int64_overflow_issues(self):
# #2690, combinatorial explosion
import pytest
import pandas.util._test_decorators as td
+from pandas.compat import is_platform_little_endian
from pandas import (
DataFrame,
@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),
]
)
import pandas._testing as tm
from pandas.core.util.numba_ import NUMBA_FUNC_CACHE
+from pandas.compat import is_platform_little_endian
+import platform
+import sys
+try:
+ from numba.core.errors import UnsupportedParforsError,TypingError
+except ImportError:
+ UnsupportedParforsError = ImportError
+ TypingError = ImportError
@td.skip_if_no("numba", "0.46.0")
+@pytest.mark.xfail(condition=sys.maxsize<2**33, 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 TestEngine:
tm.assert_frame_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_apply(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=sys.maxsize<2**33, 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)
class TestEWMMean:
@pytest.mark.parametrize(
"grouper", [lambda x: x, lambda x: x.groupby("A")], ids=["None", "groupby"]
@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
@td.skip_if_no("numba", "0.46.0")
@pytest.mark.slow
+@pytest.mark.xfail(condition=sys.maxsize<2**33, raises=(UnsupportedParforsError,TypingError), reason="some Numba functionality is not available on 32 bit systems", strict=False)
@pytest.mark.filterwarnings("ignore:\\nThe keyword argument")
# Filter warnings when parallel=True and the function can't be parallelized by Numba
class TestTableMethod:
)
import pandas._testing as tm
+import sys
+try:
+ from numba.core.errors import UnsupportedParforsError
+except ImportError:
+ UnsupportedParforsError = ImportError
@td.skip_if_no("numba", "0.46.0")
@pytest.mark.filterwarnings("ignore:\\nThe keyword argument")
online_ewm.mean(update=df.head(1))
@pytest.mark.slow
+ @pytest.mark.xfail(condition=sys.maxsize<2**33, raises=UnsupportedParforsError, reason="some Numba functionality is not available on 32 bit systems", strict=False)
@pytest.mark.parametrize(
"obj", [DataFrame({"a": range(5), "b": range(5)}), Series(range(5), name="foo")]
)