diff --git a/pandas/_libs/testing.pyx b/pandas/_libs/testing.pyx index b2f19fcf5f5da..7a2fa471b9ba8 100644 --- a/pandas/_libs/testing.pyx +++ b/pandas/_libs/testing.pyx @@ -7,36 +7,13 @@ from numpy cimport import_array import_array() -from pandas._libs.util cimport is_array from pandas._libs.lib import is_complex +from pandas._libs.util cimport is_array, is_real_number_object from pandas.core.dtypes.common import is_dtype_equal from pandas.core.dtypes.missing import array_equivalent, isna -cdef NUMERIC_TYPES = ( - bool, - int, - float, - np.bool_, - np.int8, - np.int16, - np.int32, - np.int64, - np.uint8, - np.uint16, - np.uint32, - np.uint64, - np.float16, - np.float32, - np.float64, -) - - -cdef bint is_comparable_as_number(obj): - return isinstance(obj, NUMERIC_TYPES) - - cdef bint isiterable(obj): return hasattr(obj, '__iter__') @@ -200,7 +177,7 @@ cpdef assert_almost_equal(a, b, # object comparison return True - if is_comparable_as_number(a) and is_comparable_as_number(b): + if is_real_number_object(a) and is_real_number_object(b): if array_equivalent(a, b, strict_nan=True): # inf comparison return True diff --git a/pandas/_libs/tslibs/util.pxd b/pandas/_libs/tslibs/util.pxd index e280609bb17a7..1f79a1ea7b6d1 100644 --- a/pandas/_libs/tslibs/util.pxd +++ b/pandas/_libs/tslibs/util.pxd @@ -121,6 +121,10 @@ cdef inline bint is_bool_object(object obj) nogil: PyObject_TypeCheck(obj, &PyBoolArrType_Type)) +cdef inline bint is_real_number_object(object obj) nogil: + return is_bool_object(obj) or is_integer_object(obj) or is_float_object(obj) + + cdef inline bint is_timedelta64_object(object obj) nogil: """ Cython equivalent of `isinstance(val, np.timedelta64)`