|
5 | 5 | import copy
|
6 | 6 | import pickle as pkl
|
7 | 7 | import sys
|
| 8 | +from typing import TYPE_CHECKING |
| 9 | +import warnings |
8 | 10 |
|
9 | 11 | from pandas import Index
|
10 | 12 |
|
| 13 | +if TYPE_CHECKING: |
| 14 | + from pandas import Series, DataFrame |
| 15 | + |
11 | 16 |
|
12 | 17 | def load_reduce(self):
|
13 | 18 | stack = self.stack
|
@@ -54,6 +59,41 @@ def load_reduce(self):
|
54 | 59 | raise
|
55 | 60 |
|
56 | 61 |
|
| 62 | +_sparse_msg = """\ |
| 63 | +
|
| 64 | +Loading a saved '{cls}' as a {new} with sparse values. |
| 65 | +'{cls}' is now removed. You should re-save this dataset in its new format. |
| 66 | +""" |
| 67 | + |
| 68 | + |
| 69 | +class _LoadSparseSeries: |
| 70 | + # To load a SparseSeries as a Series[Sparse] |
| 71 | + def __new__(cls) -> "Series": |
| 72 | + from pandas import Series |
| 73 | + |
| 74 | + warnings.warn( |
| 75 | + _sparse_msg.format(cls="SparseSeries", new="Series"), |
| 76 | + FutureWarning, |
| 77 | + stacklevel=6, |
| 78 | + ) |
| 79 | + |
| 80 | + return Series() |
| 81 | + |
| 82 | + |
| 83 | +class _LoadSparseFrame: |
| 84 | + # To load a SparseDataFrame as a DataFrame[Sparse] |
| 85 | + def __new__(cls) -> "DataFrame": |
| 86 | + from pandas import DataFrame |
| 87 | + |
| 88 | + warnings.warn( |
| 89 | + _sparse_msg.format(cls="SparseDataFrame", new="DataFrame"), |
| 90 | + FutureWarning, |
| 91 | + stacklevel=6, |
| 92 | + ) |
| 93 | + |
| 94 | + return DataFrame() |
| 95 | + |
| 96 | + |
57 | 97 | # If classes are moved, provide compat here.
|
58 | 98 | _class_locations_map = {
|
59 | 99 | ("pandas.core.sparse.array", "SparseArray"): ("pandas.core.arrays", "SparseArray"),
|
@@ -101,12 +141,12 @@ def load_reduce(self):
|
101 | 141 | "SparseArray",
|
102 | 142 | ),
|
103 | 143 | ("pandas.sparse.series", "SparseSeries"): (
|
104 |
| - "pandas.core.sparse.series", |
105 |
| - "SparseSeries", |
| 144 | + "pandas.compat.pickle_compat", |
| 145 | + "_LoadSparseSeries", |
106 | 146 | ),
|
107 | 147 | ("pandas.sparse.frame", "SparseDataFrame"): (
|
108 | 148 | "pandas.core.sparse.frame",
|
109 |
| - "SparseDataFrame", |
| 149 | + "_LoadSparseFrame", |
110 | 150 | ),
|
111 | 151 | ("pandas.indexes.base", "_new_Index"): ("pandas.core.indexes.base", "_new_Index"),
|
112 | 152 | ("pandas.indexes.base", "Index"): ("pandas.core.indexes.base", "Index"),
|
@@ -139,6 +179,14 @@ def load_reduce(self):
|
139 | 179 | "pandas.core.indexes.numeric",
|
140 | 180 | "Float64Index",
|
141 | 181 | ),
|
| 182 | + ("pandas.core.sparse.series", "SparseSeries"): ( |
| 183 | + "pandas.compat.pickle_compat", |
| 184 | + "_LoadSparseSeries", |
| 185 | + ), |
| 186 | + ("pandas.core.sparse.frame", "SparseDataFrame"): ( |
| 187 | + "pandas.compat.pickle_compat", |
| 188 | + "_LoadSparseFrame", |
| 189 | + ), |
142 | 190 | }
|
143 | 191 |
|
144 | 192 |
|
|
0 commit comments