Skip to content

Commit

Permalink
Backport PR pandas-dev#56308: REGR: Fix reading old pickles from pand…
Browse files Browse the repository at this point in the history
…as 1.3.5
  • Loading branch information
lithomas1 authored and meeseeksmachine committed Dec 5, 2023
1 parent c6efdb0 commit db94793
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 2 deletions.
2 changes: 1 addition & 1 deletion doc/source/whatsnew/v2.1.4.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ including other versions of pandas.

Fixed regressions
~~~~~~~~~~~~~~~~~
-
- Fixed regression when trying to read a pickled pandas :class:`DataFrame` from pandas 1.3 (:issue:`55137`)
-

.. ---------------------------------------------------------------------------
Expand Down
6 changes: 6 additions & 0 deletions pandas/compat/pickle_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ def load_reduce(self):
("pandas.core.sparse.array", "SparseArray"): ("pandas.core.arrays", "SparseArray"),
# 15477
("pandas.core.base", "FrozenNDArray"): ("numpy", "ndarray"),
# Re-routing unpickle block logic to go through _unpickle_block instead
# for pandas <= 1.3.5
("pandas.core.internals.blocks", "new_block"): (
"pandas._libs.internals",
"_unpickle_block",
),
("pandas.core.indexes.frozen", "FrozenNDArray"): ("numpy", "ndarray"),
("pandas.core.base", "FrozenList"): ("pandas.core.indexes.frozen", "FrozenList"),
# 10890
Expand Down
Binary file not shown.
9 changes: 8 additions & 1 deletion pandas/tests/io/generate_legacy_storage_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@
import platform as pl
import sys

# Remove script directory from path, otherwise Python will try to
# import the JSON test directory as the json module
sys.path.pop(0)

import numpy as np

import pandas
Expand Down Expand Up @@ -320,7 +324,7 @@ def write_legacy_pickles(output_dir):

def write_legacy_file():
# force our cwd to be the first searched
sys.path.insert(0, ".")
sys.path.insert(0, "")

if not 3 <= len(sys.argv) <= 4:
sys.exit(
Expand All @@ -331,6 +335,9 @@ def write_legacy_file():
output_dir = str(sys.argv[1])
storage_type = str(sys.argv[2])

if not os.path.exists(output_dir):
os.mkdir(output_dir)

if storage_type == "pickle":
write_legacy_pickles(output_dir=output_dir)
else:
Expand Down

0 comments on commit db94793

Please sign in to comment.