Skip to content

CLN: Assorted #51519

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Feb 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pandas/io/sas/sas.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions pandas/tests/frame/test_ufunc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
108 changes: 54 additions & 54 deletions pandas/tests/io/test_pickle.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import datetime
import functools
from functools import partial
import glob
import gzip
import io
import os
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
# ---------------------
Expand Down Expand Up @@ -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):
Expand Down Expand Up @@ -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)

Expand Down