Skip to content

Commit e76b200

Browse files
committed
REF: expose is_definitely_invalid_key()
1 parent 9303315 commit e76b200

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

pandas/_libs/index.pyx

+6-4
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ from cpython.slice cimport PySlice_Check
2828
cdef int64_t iNaT = util.get_nat()
2929

3030

31-
cdef inline is_definitely_invalid_key(object val):
31+
cdef inline _is_definitely_invalid_key(object val):
3232
if PyTuple_Check(val):
3333
try:
3434
hash(val)
@@ -39,6 +39,8 @@ cdef inline is_definitely_invalid_key(object val):
3939
return (PySlice_Check(val) or cnp.PyArray_Check(val)
4040
or PyList_Check(val) or hasattr(val, '_data'))
4141

42+
def is_definitely_invalid_key(val):
43+
return _is_definitely_invalid_key(val)
4244

4345
def get_value_at(ndarray arr, object loc):
4446
if arr.descr.type_num == NPY_DATETIME:
@@ -138,7 +140,7 @@ cdef class IndexEngine:
138140
util.set_value_at(arr, loc, value)
139141

140142
cpdef get_loc(self, object val):
141-
if is_definitely_invalid_key(val):
143+
if _is_definitely_invalid_key(val):
142144
raise TypeError("'{val}' is an invalid key".format(val=val))
143145

144146
if self.over_size_threshold and self.is_monotonic_increasing:
@@ -441,7 +443,7 @@ cdef class DatetimeEngine(Int64Engine):
441443
return algos.is_monotonic_int64(values, timelike=True)
442444

443445
cpdef get_loc(self, object val):
444-
if is_definitely_invalid_key(val):
446+
if _is_definitely_invalid_key(val):
445447
raise TypeError
446448

447449
# Welcome to the spaghetti factory
@@ -645,7 +647,7 @@ cdef class MultiIndexHashEngine(ObjectEngine):
645647
return algos.pad_object(values, other, limit=limit)
646648

647649
cpdef get_loc(self, object val):
648-
if is_definitely_invalid_key(val):
650+
if _is_definitely_invalid_key(val):
649651
raise TypeError("'{val}' is an invalid key".format(val=val))
650652

651653
self._ensure_mapping_populated()

0 commit comments

Comments
 (0)