Skip to content

AttributeError: module 'pandas.core.common' has no attribute '_unpickle_array' #28898

Closed
@simonjayhawkins

Description

@simonjayhawkins

mypy errors

pandas\core\frame.py:2742:23: error: Module has no attribute "_unpickle_array"  [attr-defined]
pandas\core\frame.py:2744:17: error: Module has no attribute "_unpickle_array"  [attr-defined]
pandas\core\frame.py:2751:17: error: Module has no attribute "_unpickle_array"  [attr-defined]
pandas\core\frame.py:2752:51: error: Module has no attribute "_unpickle_array"  [attr-defined]
pandas\core\frame.py:2757:45: error: Module has no attribute "_unpickle_array"  [attr-defined]
>>> import pandas as pd
>>>
>>> pd.__version__
'0.26.0.dev0+521.g93183bab1'
>>>
>>> df = pd.DataFrame()
>>>
>>> state = df.__getstate__()
>>>
>>> state
{'_data': BlockManager
Items: Index([], dtype='object')
Axis 1: Index([], dtype='object'), '_typ': 'dataframe', '_metadata': []}
>>>
>>> df._unpickle_frame_compat(state)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\simon\pandas-simonjayhawkins\pandas\core\frame.py", line 2717, in _unpickle_frame_compat
    columns = com._unpickle_array(cols)
AttributeError: module 'pandas.core.common' has no attribute '_unpickle_array'
>>>

we don't have any tests hitting DataFrame._unpickle_frame_compat or DataFrame._unpickle_matrix_compat

pandas/pandas/core/frame.py

Lines 2707 to 2738 in f625730

# ----------------------------------------------------------------------
# Picklability
# legacy pickle formats
def _unpickle_frame_compat(self, state): # pragma: no cover
if len(state) == 2: # pragma: no cover
series, idx = state
columns = sorted(series)
else:
series, cols, idx = state
columns = com._unpickle_array(cols)
index = com._unpickle_array(idx)
self._data = self._init_dict(series, index, columns, None)
def _unpickle_matrix_compat(self, state): # pragma: no cover
# old unpickling
(vals, idx, cols), object_state = state
index = com._unpickle_array(idx)
dm = DataFrame(vals, index=index, columns=com._unpickle_array(cols), copy=False)
if object_state is not None:
ovals, _, ocols = object_state
objects = DataFrame(
ovals, index=index, columns=com._unpickle_array(ocols), copy=False
)
dm = dm.join(objects)
self._data = dm._data

can this code be removed?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions