Repository: pandas-dev/pandas

Issue:
DEPR: deprecate SparseList



Discussion:
thought we did this a while back.....


Resolving patch:
diff --git a/pandas/sparse/list.py b/pandas/sparse/list.py
--- a/pandas/sparse/list.py
+++ b/pandas/sparse/list.py
@@ -1,3 +1,4 @@
+import warnings
 import numpy as np
 from pandas.core.base import PandasObject
 from pandas.formats.printing import pprint_thing
@@ -20,6 +21,11 @@ class SparseList(PandasObject):
     """
 
     def __init__(self, data=None, fill_value=np.nan):
+
+        # see gh-13784
+        warnings.warn("SparseList is deprecated and will be removed "
+                      "in a future version", FutureWarning, stacklevel=2)
+
         self.fill_value = fill_value
         self._chunks = []
 


Test patch:
diff --git a/pandas/sparse/tests/test_list.py b/pandas/sparse/tests/test_list.py
--- a/pandas/sparse/tests/test_list.py
+++ b/pandas/sparse/tests/test_list.py
@@ -16,83 +16,99 @@ def setUp(self):
         self.na_data = np.array([nan, nan, 1, 2, 3, nan, 4, 5, nan, 6])
         self.zero_data = np.array([0, 0, 1, 2, 3, 0, 4, 5, 0, 6])
 
+    def test_deprecation(self):
+        # see gh-13784
+        with tm.assert_produces_warning(FutureWarning):
+            SparseList()
+
     def test_constructor(self):
-        lst1 = SparseList(self.na_data[:5])
-        exp = SparseList()
+        with tm.assert_produces_warning(FutureWarning):
+            lst1 = SparseList(self.na_data[:5])
+        with tm.assert_produces_warning(FutureWarning):
+            exp = SparseList()
+
         exp.append(self.na_data[:5])
         tm.assert_sp_list_equal(lst1, exp)
 
     def test_len(self):
-        arr = self.na_data
-        splist = SparseList()
-        splist.append(arr[:5])
-        self.assertEqual(len(splist), 5)
-        splist.append(arr[5])
-        self.assertEqual(len(splist), 6)
-        splist.append(arr[6:])
-        self.assertEqual(len(splist), 10)
+        with tm.assert_produces_warning(FutureWarning):
+            arr = self.na_data
+            splist = SparseList()
+            splist.append(arr[:5])
+            self.assertEqual(len(splist), 5)
+            splist.append(arr[5])
+            self.assertEqual(len(splist), 6)
+            splist.append(arr[6:])
+            self.assertEqual(len(splist), 10)
 
     def test_append_na(self):
-        arr = self.na_data
-        splist = SparseList()
-        splist.append(arr[:5])
-        splist.append(arr[5])
-        splist.append(arr[6:])
+        with tm.assert_produces_warning(FutureWarning):
+            arr = self.na_data
+            splist = SparseList()
+            splist.append(arr[:5])
+            splist.append(arr[5])
+            splist.append(arr[6:])
 
-        sparr = splist.to_array()
-        tm.assert_sp_array_equal(sparr, SparseArray(arr))
+            sparr = splist.to_array()
+            tm.assert_sp_array_equal(sparr, SparseArray(arr))
 
     def test_append_zero(self):
-        arr = self.zero_data
-        splist = SparseList(fill_value=0)
-        splist.append(arr[:5])
-        splist.append(arr[5])
-        splist.append(arr[6:])
+        with tm.assert_produces_warning(FutureWarning):
+            arr = self.zero_data
+            splist = SparseList(fill_value=0)
+            splist.append(arr[:5])
+            splist.append(arr[5])
+            splist.append(arr[6:])
 
-        sparr = splist.to_array()
-        tm.assert_sp_array_equal(sparr, SparseArray(arr, fill_value=0))
+            sparr = splist.to_array()
+            tm.assert_sp_array_equal(sparr, SparseArray(arr, fill_value=0))
 
     def test_consolidate(self):
-        arr = self.na_data
-        exp_sparr = SparseArray(arr)
+        with tm.assert_produces_warning(FutureWarning,
+                                        check_stacklevel=False):
+            arr = self.na_data
+            exp_sparr = SparseArray(arr)
 
-        splist = SparseList()
-        splist.append(arr[:5])
-        splist.append(arr[5])
-        splist.append(arr[6:])
+            splist = SparseList()
+            splist.append(arr[:5])
+            splist.append(arr[5])
+            splist.append(arr[6:])
 
-        consol = splist.consolidate(inplace=False)
-        self.assertEqual(consol.nchunks, 1)
-        self.assertEqual(splist.nchunks, 3)
-        tm.assert_sp_array_equal(consol.to_array(), exp_sparr)
+            consol = splist.consolidate(inplace=False)
+            self.assertEqual(consol.nchunks, 1)
+            self.assertEqual(splist.nchunks, 3)
+            tm.assert_sp_array_equal(consol.to_array(), exp_sparr)
 
-        splist.consolidate()
-        self.assertEqual(splist.nchunks, 1)
-        tm.assert_sp_array_equal(splist.to_array(), exp_sparr)
+            splist.consolidate()
+            self.assertEqual(splist.nchunks, 1)
+            tm.assert_sp_array_equal(splist.to_array(), exp_sparr)
 
     def test_copy(self):
-        arr = self.na_data
-        exp_sparr = SparseArray(arr)
+        with tm.assert_produces_warning(FutureWarning,
+                                        check_stacklevel=False):
+            arr = self.na_data
+            exp_sparr = SparseArray(arr)
 
-        splist = SparseList()
-        splist.append(arr[:5])
-        splist.append(arr[5])
+            splist = SparseList()
+            splist.append(arr[:5])
+            splist.append(arr[5])
 
-        cp = splist.copy()
-        cp.append(arr[6:])
-        self.assertEqual(splist.nchunks, 2)
-        tm.assert_sp_array_equal(cp.to_array(), exp_sparr)
+            cp = splist.copy()
+            cp.append(arr[6:])
+            self.assertEqual(splist.nchunks, 2)
+            tm.assert_sp_array_equal(cp.to_array(), exp_sparr)
 
     def test_getitem(self):
-        arr = self.na_data
-        splist = SparseList()
-        splist.append(arr[:5])
-        splist.append(arr[5])
-        splist.append(arr[6:])
-
-        for i in range(len(arr)):
-            tm.assert_almost_equal(splist[i], arr[i])
-            tm.assert_almost_equal(splist[-i], arr[-i])
+        with tm.assert_produces_warning(FutureWarning):
+            arr = self.na_data
+            splist = SparseList()
+            splist.append(arr[:5])
+            splist.append(arr[5])
+            splist.append(arr[6:])
+
+            for i in range(len(arr)):
+                tm.assert_almost_equal(splist[i], arr[i])
+                tm.assert_almost_equal(splist[-i], arr[-i])
 
 
 if __name__ == '__main__':