diff --git a/pandas/io/sas/sas.pyx b/pandas/io/sas/sas.pyx index 6669686d7aa2c..cf2e0e4d80bb5 100644 --- a/pandas/io/sas/sas.pyx +++ b/pandas/io/sas/sas.pyx @@ -375,9 +375,9 @@ cdef class Parser: def read(self, int nrows): cdef: bint done - Py_ssize_t i + Py_ssize_t _ - for i in range(nrows): + for _ in range(nrows): done = self.readline() if done: break diff --git a/pandas/tests/frame/test_ufunc.py b/pandas/tests/frame/test_ufunc.py index 9223c4364579e..74afb573793a9 100644 --- a/pandas/tests/frame/test_ufunc.py +++ b/pandas/tests/frame/test_ufunc.py @@ -117,6 +117,7 @@ def test_binary_input_aligns_columns(request, dtype_a, dtype_b): df1 = pd.DataFrame({"A": [1, 2], "B": [3, 4]}).astype(dtype_a) if isinstance(dtype_a, dict) and isinstance(dtype_b, dict): + dtype_b = dtype_b.copy() dtype_b["C"] = dtype_b.pop("B") df2 = pd.DataFrame({"A": [1, 2], "C": [3, 4]}).astype(dtype_b) # As of 2.0, align first before applying the ufunc diff --git a/pandas/tests/io/test_pickle.py b/pandas/tests/io/test_pickle.py index 6fbac21dc0590..60506aa2fbd0a 100644 --- a/pandas/tests/io/test_pickle.py +++ b/pandas/tests/io/test_pickle.py @@ -15,7 +15,6 @@ import datetime import functools from functools import partial -import glob import gzip import io import os @@ -53,7 +52,7 @@ ) -@pytest.fixture(scope="module") +@pytest.fixture def current_pickle_data(): # our current version pickle data from pandas.tests.io.generate_legacy_storage_files import create_pickle_data @@ -82,15 +81,6 @@ def compare_element(result, expected, typ): comparator(result, expected) -legacy_dirname = os.path.join(os.path.dirname(__file__), "data", "legacy_pickle") -files = glob.glob(os.path.join(legacy_dirname, "*", "*.pickle")) - - -@pytest.fixture(params=files) -def legacy_pickle(request, datapath): - return datapath(request.param) - - # --------------------- # tests # --------------------- @@ -125,50 +115,54 @@ def test_flatten_buffer(data): assert result.shape == (result.nbytes,) -def test_pickles(legacy_pickle): +def test_pickles(datapath): if not is_platform_little_endian(): pytest.skip("known failure on non-little endian") - data = pd.read_pickle(legacy_pickle) - - for typ, dv in data.items(): - for dt, result in dv.items(): - expected = data[typ][dt] - - if typ == "series" and dt == "ts": - # GH 7748 - tm.assert_series_equal(result, expected) - assert result.index.freq == expected.index.freq - assert not result.index.freq.normalize - tm.assert_series_equal(result > 0, expected > 0) - - # GH 9291 - freq = result.index.freq - assert freq + Day(1) == Day(2) - - res = freq + pd.Timedelta(hours=1) - assert isinstance(res, pd.Timedelta) - assert res == pd.Timedelta(days=1, hours=1) - - res = freq + pd.Timedelta(nanoseconds=1) - assert isinstance(res, pd.Timedelta) - assert res == pd.Timedelta(days=1, nanoseconds=1) - elif typ == "index" and dt == "period": - tm.assert_index_equal(result, expected) - assert isinstance(result.freq, MonthEnd) - assert result.freq == MonthEnd() - assert result.freqstr == "M" - tm.assert_index_equal(result.shift(2), expected.shift(2)) - elif typ == "series" and dt in ("dt_tz", "cat"): - tm.assert_series_equal(result, expected) - elif typ == "frame" and dt in ( - "dt_mixed_tzs", - "cat_onecol", - "cat_and_float", - ): - tm.assert_frame_equal(result, expected) - else: - compare_element(result, expected, typ) + # For loop for compat with --strict-data-files + for legacy_pickle in Path(__file__).parent.glob("data/legacy_pickle/*/*.p*kl*"): + legacy_pickle = datapath(legacy_pickle) + + data = pd.read_pickle(legacy_pickle) + + for typ, dv in data.items(): + for dt, result in dv.items(): + expected = data[typ][dt] + + if typ == "series" and dt == "ts": + # GH 7748 + tm.assert_series_equal(result, expected) + assert result.index.freq == expected.index.freq + assert not result.index.freq.normalize + tm.assert_series_equal(result > 0, expected > 0) + + # GH 9291 + freq = result.index.freq + assert freq + Day(1) == Day(2) + + res = freq + pd.Timedelta(hours=1) + assert isinstance(res, pd.Timedelta) + assert res == pd.Timedelta(days=1, hours=1) + + res = freq + pd.Timedelta(nanoseconds=1) + assert isinstance(res, pd.Timedelta) + assert res == pd.Timedelta(days=1, nanoseconds=1) + elif typ == "index" and dt == "period": + tm.assert_index_equal(result, expected) + assert isinstance(result.freq, MonthEnd) + assert result.freq == MonthEnd() + assert result.freqstr == "M" + tm.assert_index_equal(result.shift(2), expected.shift(2)) + elif typ == "series" and dt in ("dt_tz", "cat"): + tm.assert_series_equal(result, expected) + elif typ == "frame" and dt in ( + "dt_mixed_tzs", + "cat_onecol", + "cat_and_float", + ): + tm.assert_frame_equal(result, expected) + else: + compare_element(result, expected, typ) def python_pickler(obj, path): @@ -580,9 +574,15 @@ def test_pickle_big_dataframe_compression(protocol, compression): tm.assert_frame_equal(df, result) -def test_pickle_frame_v124_unpickle_130(): +def test_pickle_frame_v124_unpickle_130(datapath): # GH#42345 DataFrame created in 1.2.x, unpickle in 1.3.x - path = os.path.join(legacy_dirname, "1.2.4", "empty_frame_v1_2_4-GH#42345.pkl") + path = datapath( + Path(__file__).parent, + "data", + "legacy_pickle", + "1.2.4", + "empty_frame_v1_2_4-GH#42345.pkl", + ) with open(path, "rb") as fd: df = pickle.load(fd)