Skip to content

Tests for Deprecate SparseArray for python 3.6 and 3.7 and fixes to other deprecation tests #30799

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 22 commits into from
Jan 9, 2020
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
4ace5eb
fix deprecation test for python 3.7
Dr-Irv Jan 7, 2020
76dbae4
sparsearray OK for 3.6
Dr-Irv Jan 7, 2020
2bbc831
handle 3.6/3.7 diffs
Dr-Irv Jan 7, 2020
def8d28
formatted for black
Dr-Irv Jan 7, 2020
a32d4dc
Merge remote-tracking branch 'upstream/master' into sparsedepr
Dr-Irv Jan 7, 2020
ea7b959
split test_api for 3.6 vs 3.7
Dr-Irv Jan 7, 2020
385f6d3
Merge branch 'sparsedepr' of https://github.com/Dr-Irv/pandas into sp…
Dr-Irv Jan 7, 2020
f5d0357
Merge branch 'sparsedepr' of https://github.com/Dr-Irv/pandas into sp…
Dr-Irv Jan 7, 2020
2e0bab0
datetime fixes
Dr-Irv Jan 7, 2020
52a7d03
Merge branch 'sparsedepr' of https://github.com/Dr-Irv/pandas into sp…
Dr-Irv Jan 7, 2020
5c59f84
make datetime work with 3.6
Dr-Irv Jan 8, 2020
461b0fc
Merge remote-tracking branch 'upstream/master' into sparsedepr
Dr-Irv Jan 8, 2020
f1b89f4
use instancecheck. Modify SparseArray for 3.6 to use metaclass pattern
Dr-Irv Jan 8, 2020
f08ffc9
Merge branch 'sparsedepr' of https://github.com/Dr-Irv/pandas into sp…
Dr-Irv Jan 8, 2020
aa73611
Merge remote-tracking branch 'upstream/master' into sparsedepr
Dr-Irv Jan 8, 2020
4b7e4bf
Merge branch 'sparsedepr' of https://github.com/Dr-Irv/pandas into sp…
Dr-Irv Jan 8, 2020
c31afa1
fix mypy issue for methods with no arguments
Dr-Irv Jan 8, 2020
26dc90a
Merge remote-tracking branch 'upstream/master' into sparsedepr
Dr-Irv Jan 9, 2020
7861c98
snake_case and better returns on isinstance
Dr-Irv Jan 9, 2020
7947a81
shorten up imports for datetime and SparseArray
Dr-Irv Jan 9, 2020
d78ecea
revert import simplification to make mypy happy
Dr-Irv Jan 9, 2020
7cce2c7
Merge remote-tracking branch 'upstream/master' into sparsedepr
Dr-Irv Jan 9, 2020
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
63 changes: 33 additions & 30 deletions pandas/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -304,41 +304,53 @@ class __Datetime(type):
datetime = dt

def __getattr__(cls, item):
import warnings

warnings.warn(
"The pandas.datetime class is deprecated "
"and will be removed from pandas in a future version. "
"Import from datetime instead.",
FutureWarning,
stacklevel=2,
)
cls.emitWarning()

try:
return getattr(cls.datetime, item)
except AttributeError:
raise AttributeError(f"module datetime has no attribute {item}")

def __instancecheck__(cls, other):
if isinstance(other, cls.datetime):
return True
else:
return False

class __DatetimeSub(metaclass=__Datetime):
def __new__(cls, *args, **kwargs):
def emitWarning(dummy=0):
import warnings

warnings.warn(
"The pandas.datetime class is deprecated "
"and will be removed from pandas in a future version. "
"Import from datetime instead.",
FutureWarning,
stacklevel=2,
stacklevel=3,
)

def __new__(cls, *args, **kwargs):
cls.emitWarning()
from datetime import datetime as dt

return dt(*args, **kwargs)

datetime = __DatetimeSub

class __SparseArray(pandas.core.arrays.sparse.SparseArray):
def __warnSparseArray(self):
class __SparseArray(type):

from pandas.core.arrays.sparse import SparseArray as sa

SparseArray = sa

def __instancecheck__(cls, other):
if isinstance(other, cls.SparseArray):
return True
else:
return False

class __SparseArraySub(metaclass=__SparseArray):
def emitWarning(dummy=0):
import warnings

warnings.warn(
Expand All @@ -349,23 +361,14 @@ def __warnSparseArray(self):
stacklevel=3,
)

def __init__(
self,
data,
sparse_index=None,
index=None,
fill_value=None,
kind="integer",
dtype=None,
copy=False,
):
self.__warnSparseArray()
super().__init__(data, sparse_index, index, fill_value, kind, dtype, copy)

def __getattr__(self, name):
return super().__getattribute__(name)

SparseArray = __SparseArray
def __new__(cls, *args, **kwargs):
cls.emitWarning()
from pandas.core.arrays.sparse import SparseArray as sa

return sa(*args, **kwargs)

SparseArray = __SparseArraySub


# module level doc-string
__doc__ = """
Expand Down
29 changes: 18 additions & 11 deletions pandas/tests/api/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,17 +235,14 @@ def test_depr(self):
)
for depr in deprecated_list:
with tm.assert_produces_warning(FutureWarning):
if compat.PY37:
getattr(pd, depr)
elif depr == "datetime":
deprecated = getattr(pd, "__Datetime")
deprecated.__getattr__(deprecated, dir(pd.datetime.datetime)[-1])
elif depr == "SparseArray":
deprecated = getattr(pd, depr)
deprecated([])
else:
deprecated = getattr(pd, depr)
deprecated.__getattr__(dir(deprecated)[-1])
deprecated = getattr(pd, depr)
if not compat.PY37:
if depr == "datetime":
deprecated.__getattr__(dir(pd.datetime.datetime)[-1])
elif depr == "SparseArray":
deprecated([])
else:
deprecated.__getattr__(dir(deprecated)[-1])


def test_datetime():
Expand All @@ -256,6 +253,16 @@ def test_datetime():
warnings.simplefilter("ignore", FutureWarning)
assert datetime(2015, 1, 2, 0, 0) == pd.datetime(2015, 1, 2, 0, 0)

assert isinstance(pd.datetime(2015, 1, 2, 0, 0), pd.datetime)


def test_sparsearray():
import warnings

with warnings.catch_warnings():
warnings.simplefilter("ignore", FutureWarning)
assert isinstance(pd.array([1, 2, 3], dtype="Sparse"), pd.SparseArray)


def test_np():
import numpy as np
Expand Down