cast,
)
import warnings
+import platform
@contextmanager
# due to these open files.
if any("matplotlib" in mod for mod in sys.modules):
continue
+ if actual_warning.category==UserWarning and "Non-x86 system detected" in str(actual_warning.message) and not bool(re.match('i.?86|x86',platform.uname()[4])):
+ continue
extra_warnings.append(
(
overload,
)
import warnings
+import platform
+import re
+from pandas.compat import is_platform_little_endian
+warn_hdf_platform = "Non-x86 system detected, HDF(5) format I/O may give wrong results (particularly on files created with older versions) or crash - https://bugs.debian.org/877419" if not bool(re.match('i.?86|x86',platform.uname()[4])) else False
import numpy as np
fletcher32: bool = False,
**kwargs,
) -> None:
+ if warn_hdf_platform:
+ warnings.warn(warn_hdf_platform)
if "format" in kwargs:
raise ValueError("format is not a defined argument for HDFStore")
self._handle.flush()
if fsync:
with suppress(OSError):
- os.fsync(self._handle.fileno())
+ if is_platform_little_endian():
+ os.fsync(self._handle.fileno())
+ else:
+ os.sync() # due to a pytables bad-cast bug, fileno is invalid on 64-bit big-endian#
def get(self, key: str):
"""
cast,
)
import warnings
+import platform
+import re
+warn_stata_platform = "Non-x86 system detected, Stata format I/O may give wrong results (particularly on strings) - https://bugs.debian.org/877419" if not bool(re.match('i.?86|x86',platform.uname()[4])) else False
from dateutil.relativedelta import relativedelta
import numpy as np
# NOTE: the byte type seems to be reserved for categorical variables
# with a label, but the underlying variable is -127 to 100
# we're going to drop the label and cast to int
+ if warn_stata_platform:
+ warnings.warn(warn_stata_platform)
self.DTYPE_MAP = dict(
list(zip(range(1, 245), [np.dtype("a" + str(i)) for i in range(1, 245)]))
+ [
ensure_clean_path,
ensure_clean_store,
)
+import platform
+import re
+import sys
+is_crashing_arch=bool((platform.uname()[4].startswith('arm') or platform.uname()[4].startswith('aarch')) and sys.maxsize<2**33) # meant for armhf, though this form will also skip on armel - uname = kernel arch
pytestmark = pytest.mark.single_cpu
tm.assert_frame_equal(store["df2"], df)
+@pytest.mark.xfail(condition=is_crashing_arch,reason="https://bugs.debian.org/790925",strict=False,run=False)
def test_append_frame_column_oriented(setup_path):
with ensure_clean_store(setup_path) as store:
ensure_clean_store,
tables,
)
+import platform
+import re
+import sys
+is_crashing_arch=bool((platform.uname()[4].startswith('arm') or platform.uname()[4].startswith('aarch')) and sys.maxsize<2**33) # meant for armhf, though this form will also skip on armel - uname = kernel arch
from pandas.io import pytables as pytables
from pandas.io.pytables import Term
h5table.close()
+@pytest.mark.xfail(condition=is_crashing_arch,reason="https://bugs.debian.org/790925",strict=False,run=False)
@pytest.mark.skipif(
not is_platform_little_endian(), reason="reason platform is not little endian"
)
],
)
@pytest.mark.parametrize("dtype", ["category", object])
+@pytest.mark.xfail(condition=is_crashing_arch,reason="https://bugs.debian.org/790925",strict=False,run=False)
def test_latin_encoding(setup_path, dtype, val):
enc = "latin-1"
nan_rep = ""
import pytest
from pandas._libs.tslibs import Timestamp
-from pandas.compat import is_platform_windows
+from pandas.compat import is_platform_windows, is_platform_little_endian
import pandas as pd
from pandas import (
assert isinstance(d1, DataFrame)
+@pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
def test_legacy_table_fixed_format_read_py2(datapath):
# GH 24510
# legacy table with fixed format written in Python 2
tm.assert_frame_equal(expected, result)
+@pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
def test_legacy_table_fixed_format_read_datetime_py2(datapath):
# GH 31750
# legacy table with fixed format and datetime64 column written in Python 2
tm.assert_series_equal(result, series)
+@pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
def test_read_py2_hdf_file_in_py3(datapath):
# GH 16781
HDFStore,
read_hdf,
)
+import platform
+import re
+import sys
+is_crashing_arch=bool((platform.uname()[4].startswith('arm') or platform.uname()[4].startswith('aarch')) and sys.maxsize<2**33) # meant for armhf, though this form will also skip on armel - uname = kernel arch
pytestmark = pytest.mark.single_cpu
df.iloc[8:10, -2] = np.nan
+@pytest.mark.xfail(condition=is_crashing_arch,reason="https://bugs.debian.org/790925",strict=False,run=False)
def test_select_filter_corner(setup_path):
df = DataFrame(np.random.randn(50, 100))
from pandas._libs.tslibs.timezones import maybe_get_tz
import pandas.util._test_decorators as td
+from pandas.compat import is_platform_little_endian
import pandas as pd
from pandas import (
tm.assert_frame_equal(result, df)
+@pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
def test_legacy_datetimetz_object(datapath):
# legacy from < 0.17.0
# 8260
tm.assert_frame_equal(result, expected)
+@pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
def test_py2_created_with_datetimez(datapath):
# The test HDF5 file was created in Python 2, but could not be read in
# Python 3.
import pytest
-from pandas.compat import is_platform_windows
+from pandas.compat import is_platform_windows, is_platform_little_endian
import pandas.util._test_decorators as td
import pandas as pd
"pyarrow",
("io", "data", "feather", "feather-0_3_1.feather"),
),
- (
+ pytest.param(
pd.read_hdf,
"tables",
("io", "data", "legacy_hdf", "datetimetz_object.h5"),
- ),
+ marks=pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)),
(pd.read_stata, "os", ("io", "data", "stata", "stata10_115.dta")),
(pd.read_sas, "os", ("io", "sas", "data", "test1.sas7bdat")),
(pd.read_json, "os", ("io", "json", "data", "tsframe_v012.json")),
read_stata,
)
+from pandas.compat import is_platform_little_endian
+pytestmark = pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of test_stata on non-little endian",strict=False)
@pytest.fixture
def mixed_frame():
# )
# Remove resource warnings
- w = [x for x in w if x.category is UserWarning]
+ w = [x for x in w if x.category is UserWarning and not "Non-x86 system detected" in str(x.message)]
# should get warning for each call to read_dta
assert len(w) == 3
warnings.simplefilter("always", InvalidColumnName)
original.to_stata(path, convert_dates=None, version=version)
# should get a warning for that format.
- assert len(w) == 1
+ assert len([x for x in w if not "Non-x86 system detected" in str(x.message)]) == 1
written_and_read_again = self.read_dta(path)
tm.assert_frame_equal(written_and_read_again.set_index("index"), formatted)
encoded = read_stata(
datapath("io", "data", "stata", "stata1_encoding_118.dta")
)
- assert len(w) == 151
- assert w[0].message.args[0] == msg
+ w2 = [x for x in w if not "Non-x86 system detected" in str(x.message)]
+ assert len(w2) == 151
+ assert w2[0].message.args[0] == msg
expected = DataFrame([["Düsseldorf"]] * 151, columns=["kreis1849"])
tm.assert_frame_equal(encoded, expected)