Skip to content

Commit

Permalink
deprecate isnull/notnull
Browse files Browse the repository at this point in the history
  • Loading branch information
jreback committed Jul 18, 2017
1 parent d49a764 commit 4bead6f
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 22 deletions.
8 changes: 4 additions & 4 deletions pandas/core/categorical.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
import pandas.core.common as com
from pandas.core.missing import interpolate_2d
from pandas.compat.numpy import function as nv
from pandas.util._decorators import (Appender, cache_readonly,
deprecate_kwarg, Substitution)
from pandas.util._decorators import (
Appender, cache_readonly, deprecate_kwarg, deprecate, Substitution)

from pandas.io.formats.terminal import get_terminal_size
from pandas.util._validators import validate_bool_kwarg
Expand Down Expand Up @@ -1179,7 +1179,7 @@ def isna(self):
# we only have one NA in categories
ret = np.logical_or(ret, self._codes == nan_pos)
return ret
isull = isna
isnull = deprecate('isna', isna, klass=DeprecationWarning)

def notna(self):
"""
Expand All @@ -1199,7 +1199,7 @@ def notna(self):
"""
return ~self.isna()
notnull = notna
notnull = deprecate('notna', notna, klass=DeprecationWarning)

def put(self, *args, **kwargs):
"""
Expand Down
13 changes: 10 additions & 3 deletions pandas/core/dtypes/missing.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
missing types & inference
"""
import warnings
import numpy as np
from pandas._libs import lib
from pandas._libs.tslib import NaT, iNaT
Expand Down Expand Up @@ -44,7 +45,10 @@ def isna(obj):
return _isna(obj)


isnull = isna
def isnull(obj):
warnings.warn("isnull is deprecated. Use isna instead",
DeprecationWarning, stacklevel=2)
return isna(obj)


def _isna_new(obj):
Expand Down Expand Up @@ -213,7 +217,10 @@ def notna(obj):
return ~res


notnull = notna
def notnull(obj):
warnings.warn("notnull is deprecated. Use notna instead",
DeprecationWarning, stacklevel=2)
return notna(obj)


def is_null_datelike_scalar(other):
Expand Down Expand Up @@ -406,4 +413,4 @@ def remove_na_arraylike(arr):
"""
Return array-like containing only true/non-NaN values, possibly empty.
"""
return arr[notnull(lib.values_from_object(arr))]
return arr[notna(lib.values_from_object(arr))]
7 changes: 4 additions & 3 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@
isidentifier, set_function_name, cPickle as pkl)
from pandas.core.ops import _align_method_FRAME
import pandas.core.nanops as nanops
from pandas.util._decorators import Appender, Substitution, deprecate_kwarg
from pandas.util._decorators import (Appender, Substitution,
deprecate, deprecate_kwarg)
from pandas.util._validators import validate_bool_kwarg
from pandas.core import config

Expand Down Expand Up @@ -4412,7 +4413,7 @@ def asof(self, where, subset=None):
@Appender(_shared_docs['isna'])
def isna(self):
return isna(self).__finalize__(self)
isnull = isna
isnull = deprecate('isna', isna, klass=DeprecationWarning)

_shared_docs['notna'] = """
Return a boolean same-sized object indicating if the values are
Expand All @@ -4426,7 +4427,7 @@ def isna(self):
@Appender(_shared_docs['notna'])
def notna(self):
return notna(self).__finalize__(self)
notnull = notna
notnull = deprecate('notna', notna, klass=DeprecationWarning)

def _clip_with_scalar(self, lower, upper, inplace=False):
if ((lower is not None and np.any(isna(lower))) or
Expand Down
8 changes: 4 additions & 4 deletions pandas/core/indexes/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@

from pandas.core.base import PandasObject, IndexOpsMixin
import pandas.core.base as base
from pandas.util._decorators import (Appender, Substitution,
cache_readonly, deprecate_kwarg)
from pandas.util._decorators import (
Appender, Substitution, cache_readonly, deprecate, deprecate_kwarg)
from pandas.core.indexes.frozen import FrozenList
import pandas.core.common as com
import pandas.core.dtypes.concat as _concat
Expand Down Expand Up @@ -1848,7 +1848,7 @@ def isna(self):
pandas.isna : pandas version
"""
return self._isnan
isnull = isna
isnull = deprecate('isna', isna, klass=DeprecationWarning)

def notna(self):
"""
Expand All @@ -1865,7 +1865,7 @@ def notna(self):
pandas.notna : pandas version
"""
return ~self.isna()
notnull = notna
notnull = deprecate('notna', notna, klass=DeprecationWarning)

def putmask(self, mask, value):
"""
Expand Down
6 changes: 3 additions & 3 deletions pandas/core/sparse/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import pandas.core.generic as generic
from pandas.core.sparse.series import SparseSeries, SparseArray
from pandas._libs.sparse import BlockIndex, get_blocks
from pandas.util._decorators import Appender
from pandas.util._decorators import Appender, deprecate
import pandas.core.ops as ops


Expand Down Expand Up @@ -785,12 +785,12 @@ def cumsum(self, axis=0, *args, **kwargs):
@Appender(generic._shared_docs['isna'])
def isna(self):
return self._apply_columns(lambda x: x.isna())
isnull = isna
isnull = deprecate('isna', isna, klass=DeprecationWarning)

@Appender(generic._shared_docs['notna'])
def notna(self):
return self._apply_columns(lambda x: x.notna())
notnull = notna
notnull = deprecate('notna', notna, klass=DeprecationWarning)

def apply(self, func, axis=0, broadcast=False, reduce=False):
"""
Expand Down
5 changes: 3 additions & 2 deletions pandas/core/sparse/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
_make_index)
from pandas._libs.sparse import BlockIndex, IntIndex
import pandas._libs.sparse as splib
from pandas.util._decorators import deprecate

from pandas.core.sparse.scipy_sparse import (
_sparse_series_to_coo,
Expand Down Expand Up @@ -648,15 +649,15 @@ def isna(self):
sparse_index=self.values.sp_index,
fill_value=isna(self.fill_value))
return self._constructor(arr, index=self.index).__finalize__(self)
isnull = isna
isnull = deprecate('isna', isna, klass=DeprecationWarning)

@Appender(generic._shared_docs['notna'])
def notna(self):
arr = SparseArray(notna(self.values.sp_values),
sparse_index=self.values.sp_index,
fill_value=notna(self.fill_value))
return self._constructor(arr, index=self.index).__finalize__(self)
notnull = notna
notnull = deprecate('notna', notna, klass=DeprecationWarning)

def dropna(self, axis=0, inplace=False, **kwargs):
"""
Expand Down
2 changes: 1 addition & 1 deletion pandas/util/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from pandas.core.util.hashing import hash_pandas_object, hash_array # noqa
from pandas.util._decorators import Appender, Substitution, cache_readonly # noqa
from pandas.core.util.hashing import hash_pandas_object, hash_array # noqa
22 changes: 20 additions & 2 deletions pandas/util/_decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,30 @@
from functools import wraps, update_wrapper


def deprecate(name, alternative, alt_name=None):
def deprecate(name, alternative, alt_name=None, klass=None,
stacklevel=2):
"""
Return a new function that emits a deprecation warning on use
Parameters
----------
name : str
Name of function to deprecate
alternative : str
Name of function to use instead
alt_name : str, optional
Name to use in preference of alternative.__name__
klass : Warning, default FutureWarning
stacklevel : int, default 2
"""
alt_name = alt_name or alternative.__name__
klass = klass or FutureWarning

def wrapper(*args, **kwargs):
warnings.warn("%s is deprecated. Use %s instead" % (name, alt_name),
FutureWarning, stacklevel=2)
klass, stacklevel=stacklevel)
return alternative(*args, **kwargs)
return wrapper

Expand Down

0 comments on commit 4bead6f

Please sign in to comment.