From 5c886169cd2674d7077271602a1a36ae0526d3ff Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Wed, 6 Apr 2022 07:13:22 -0400 Subject: [PATCH] Fix a few test failures on big-endian systems These are all due to tests expecting little-endian dtypes, where in fact the endianness of the dtype is that of the host. --- pandas/tests/arrays/boolean/test_astype.py | 5 +- .../tests/arrays/boolean/test_construction.py | 5 +- pandas/tests/arrays/floating/test_to_numpy.py | 5 +- pandas/tests/arrays/integer/test_dtypes.py | 5 +- pandas/tests/frame/methods/test_to_records.py | 137 ++++++++++++++---- pandas/tests/io/parser/test_c_parser_only.py | 8 +- .../tests/scalar/timedelta/test_arithmetic.py | 4 +- pandas/tests/tools/test_to_timedelta.py | 4 +- 8 files changed, 134 insertions(+), 39 deletions(-) diff --git a/pandas/tests/arrays/boolean/test_astype.py b/pandas/tests/arrays/boolean/test_astype.py index 57cec70262..258d2a99ef 100644 --- a/pandas/tests/arrays/boolean/test_astype.py +++ b/pandas/tests/arrays/boolean/test_astype.py @@ -1,3 +1,5 @@ +from sys import byteorder + import numpy as np import pytest @@ -20,7 +22,8 @@ def test_astype(): tm.assert_numpy_array_equal(result, expected) result = arr.astype("str") - expected = np.array(["True", "False", ""], dtype=""}[byteorder] + expected = np.array(["True", "False", ""], dtype=f"{endian}U5") tm.assert_numpy_array_equal(result, expected) # no missing values diff --git a/pandas/tests/arrays/boolean/test_construction.py b/pandas/tests/arrays/boolean/test_construction.py index c9e96c4379..8204da66b0 100644 --- a/pandas/tests/arrays/boolean/test_construction.py +++ b/pandas/tests/arrays/boolean/test_construction.py @@ -1,3 +1,5 @@ +from sys import byteorder + import numpy as np import pytest @@ -270,7 +272,8 @@ def test_to_numpy(box): arr = con([True, False, None], dtype="boolean") result = arr.to_numpy(dtype="str") - expected = np.array([True, False, pd.NA], dtype=""}[byteorder] + expected = np.array([True, False, pd.NA], dtype=f"{endian}U5") tm.assert_numpy_array_equal(result, expected) # no missing values -> can convert to bool, otherwise raises diff --git a/pandas/tests/arrays/floating/test_to_numpy.py b/pandas/tests/arrays/floating/test_to_numpy.py index 26e5687b1b..e96e27d84c 100644 --- a/pandas/tests/arrays/floating/test_to_numpy.py +++ b/pandas/tests/arrays/floating/test_to_numpy.py @@ -1,3 +1,5 @@ +from sys import byteorder + import numpy as np import pytest @@ -115,7 +117,8 @@ def test_to_numpy_string(box, dtype): arr = con([0.0, 1.0, None], dtype="Float64") result = arr.to_numpy(dtype="str") - expected = np.array([0.0, 1.0, pd.NA], dtype=""}[byteorder] + expected = np.array([0.0, 1.0, pd.NA], dtype=f"{endian}U32") tm.assert_numpy_array_equal(result, expected) diff --git a/pandas/tests/arrays/integer/test_dtypes.py b/pandas/tests/arrays/integer/test_dtypes.py index e3f59205aa..88b4a1e935 100644 --- a/pandas/tests/arrays/integer/test_dtypes.py +++ b/pandas/tests/arrays/integer/test_dtypes.py @@ -1,3 +1,5 @@ +from sys import byteorder + import numpy as np import pytest @@ -284,7 +286,8 @@ def test_to_numpy_na_raises(dtype): def test_astype_str(): a = pd.array([1, 2, None], dtype="Int64") - expected = np.array(["1", "2", ""], dtype=""}[byteorder] + expected = np.array(["1", "2", ""], dtype=f"{endian}U21") tm.assert_numpy_array_equal(a.astype(str), expected) tm.assert_numpy_array_equal(a.astype("str"), expected) diff --git a/pandas/tests/frame/methods/test_to_records.py b/pandas/tests/frame/methods/test_to_records.py index 2c96cf291c..2c503571f6 100644 --- a/pandas/tests/frame/methods/test_to_records.py +++ b/pandas/tests/frame/methods/test_to_records.py @@ -1,4 +1,5 @@ from collections import abc +from sys import byteorder import numpy as np import pytest @@ -14,6 +15,9 @@ from pandas import ( import pandas._testing as tm +endian = {"little": "<", "big": ">"}[byteorder] + + class TestDataFrameToRecords: def test_to_records_timeseries(self): index = date_range("1/1/2000", periods=10) @@ -143,7 +147,12 @@ class TestDataFrameToRecords: {}, np.rec.array( [(0, 1, 0.2, "a"), (1, 2, 1.5, "bc")], - dtype=[("index", ""}[byteorder] + + @pytest.mark.parametrize( "malformed", ["1\r1\r1\r 1\r 1\r", "1\r1\r1\r 1\r 1\r11\r", "1\r1\r1\r 1\r 1\r11\r1\r"], @@ -141,9 +145,9 @@ nan 2 "the dtype timedelta64 is not supported for parsing", {"dtype": {"A": "timedelta64", "B": "float64"}}, ), - ("the dtype "}[byteorder] msg = ( "ufunc '?multiply'? cannot use operands with types " - r"dtype\('"}[byteorder] expected = Series( - [np.timedelta64(1000000000, "ns"), timedelta_NaT], dtype="