@@ -181,6 +181,8 @@ cdef class ObjectVector:
181
181
def __len__(self):
182
182
return self.n
183
183
184
+ @cython.wraparound(False)
185
+ @cython.boundscheck(False)
184
186
cdef inline append(self, object o):
185
187
if self.n == self.m:
186
188
self.m = max(self.m * 2, _INIT_VEC_CAP)
@@ -237,6 +239,8 @@ cdef class {{name}}HashTable(HashTable):
237
239
k = kh_get_{{dtype}}(self.table, key)
238
240
return k != self.table.n_buckets
239
241
242
+ @cython.wraparound(False)
243
+ @cython.boundscheck(False)
240
244
cpdef get_item(self, {{dtype}}_t val):
241
245
cdef khiter_t k
242
246
k = kh_get_{{dtype}}(self.table, val)
@@ -245,13 +249,17 @@ cdef class {{name}}HashTable(HashTable):
245
249
else:
246
250
raise KeyError(val)
247
251
252
+ @cython.wraparound(False)
253
+ @cython.boundscheck(False)
248
254
def get_iter_test(self, {{dtype}}_t key, Py_ssize_t iterations):
249
255
cdef Py_ssize_t i, val=0
250
256
for i in range(iterations):
251
257
k = kh_get_{{dtype}}(self.table, val)
252
258
if k != self.table.n_buckets:
253
259
val = self.table.vals[k]
254
260
261
+ @cython.wraparound(False)
262
+ @cython.boundscheck(False)
255
263
cpdef set_item(self, {{dtype}}_t key, Py_ssize_t val):
256
264
cdef:
257
265
khiter_t k
@@ -264,6 +272,7 @@ cdef class {{name}}HashTable(HashTable):
264
272
else:
265
273
raise KeyError(key)
266
274
275
+ @cython.wraparound(False)
267
276
@cython.boundscheck(False)
268
277
def map(self, {{dtype}}_t[:] keys, int64_t[:] values):
269
278
cdef:
@@ -278,6 +287,7 @@ cdef class {{name}}HashTable(HashTable):
278
287
k = kh_put_{{dtype}}(self.table, key, &ret)
279
288
self.table.vals[k] = <Py_ssize_t> values[i]
280
289
290
+ @cython.wraparound(False)
281
291
@cython.boundscheck(False)
282
292
def map_locations(self, ndarray[{{dtype}}_t, ndim=1] values):
283
293
cdef:
@@ -292,6 +302,7 @@ cdef class {{name}}HashTable(HashTable):
292
302
k = kh_put_{{dtype}}(self.table, val, &ret)
293
303
self.table.vals[k] = i
294
304
305
+ @cython.wraparound(False)
295
306
@cython.boundscheck(False)
296
307
def lookup(self, {{dtype}}_t[:] values):
297
308
cdef:
@@ -317,6 +328,7 @@ cdef class {{name}}HashTable(HashTable):
317
328
labels = self.get_labels(values, uniques, 0, 0)
318
329
return uniques.to_array(), labels
319
330
331
+ @cython.wraparound(False)
320
332
@cython.boundscheck(False)
321
333
def get_labels(self, {{dtype}}_t[:] values, {{name}}Vector uniques,
322
334
Py_ssize_t count_prior, Py_ssize_t na_sentinel,
@@ -359,6 +371,7 @@ cdef class {{name}}HashTable(HashTable):
359
371
360
372
return np.asarray(labels)
361
373
374
+ @cython.wraparound(False)
362
375
@cython.boundscheck(False)
363
376
def get_labels_groupby(self, {{dtype}}_t[:] values):
364
377
cdef:
@@ -402,6 +415,7 @@ cdef class {{name}}HashTable(HashTable):
402
415
403
416
return np.asarray(labels), arr_uniques
404
417
418
+ @cython.wraparound(False)
405
419
@cython.boundscheck(False)
406
420
def unique(self, {{dtype}}_t[:] values):
407
421
cdef:
@@ -464,6 +478,8 @@ cdef class StringHashTable(HashTable):
464
478
kh_destroy_str(self.table)
465
479
self.table = NULL
466
480
481
+ @cython.wraparound(False)
482
+ @cython.boundscheck(False)
467
483
cpdef get_item(self, object val):
468
484
cdef:
469
485
khiter_t k
@@ -476,6 +492,8 @@ cdef class StringHashTable(HashTable):
476
492
else:
477
493
raise KeyError(val)
478
494
495
+ @cython.wraparound(False)
496
+ @cython.boundscheck(False)
479
497
def get_iter_test(self, object key, Py_ssize_t iterations):
480
498
cdef:
481
499
Py_ssize_t i, val
@@ -488,6 +506,8 @@ cdef class StringHashTable(HashTable):
488
506
if k != self.table.n_buckets:
489
507
val = self.table.vals[k]
490
508
509
+ @cython.wraparound(False)
510
+ @cython.boundscheck(False)
491
511
cpdef set_item(self, object key, Py_ssize_t val):
492
512
cdef:
493
513
khiter_t k
@@ -503,6 +523,7 @@ cdef class StringHashTable(HashTable):
503
523
else:
504
524
raise KeyError(key)
505
525
526
+ @cython.wraparound(False)
506
527
@cython.boundscheck(False)
507
528
def get_indexer(self, ndarray[object] values):
508
529
cdef:
@@ -531,6 +552,7 @@ cdef class StringHashTable(HashTable):
531
552
free(vecs)
532
553
return labels
533
554
555
+ @cython.wraparound(False)
534
556
@cython.boundscheck(False)
535
557
def unique(self, ndarray[object] values):
536
558
cdef:
@@ -567,6 +589,8 @@ cdef class StringHashTable(HashTable):
567
589
uniques.append(values[uindexer[i]])
568
590
return uniques.to_array()
569
591
592
+ @cython.wraparound(False)
593
+ @cython.boundscheck(False)
570
594
def factorize(self, ndarray[object] values):
571
595
uniques = ObjectVector()
572
596
labels = self.get_labels(values, uniques, 0, 0)
@@ -724,6 +748,8 @@ cdef class PyObjectHashTable(HashTable):
724
748
else:
725
749
raise KeyError(val)
726
750
751
+ @cython.wraparound(False)
752
+ @cython.boundscheck(False)
727
753
def get_iter_test(self, object key, Py_ssize_t iterations):
728
754
cdef Py_ssize_t i, val
729
755
if key != key or key is None:
@@ -733,6 +759,8 @@ cdef class PyObjectHashTable(HashTable):
733
759
if k != self.table.n_buckets:
734
760
val = self.table.vals[k]
735
761
762
+ @cython.wraparound(False)
763
+ @cython.boundscheck(False)
736
764
cpdef set_item(self, object key, Py_ssize_t val):
737
765
cdef:
738
766
khiter_t k
@@ -749,6 +777,8 @@ cdef class PyObjectHashTable(HashTable):
749
777
else:
750
778
raise KeyError(key)
751
779
780
+ @cython.wraparound(False)
781
+ @cython.boundscheck(False)
752
782
def map_locations(self, ndarray[object] values):
753
783
cdef:
754
784
Py_ssize_t i, n = len(values)
@@ -765,6 +795,8 @@ cdef class PyObjectHashTable(HashTable):
765
795
k = kh_put_pymap(self.table, <PyObject*>val, &ret)
766
796
self.table.vals[k] = i
767
797
798
+ @cython.wraparound(False)
799
+ @cython.boundscheck(False)
768
800
def lookup(self, ndarray[object] values):
769
801
cdef:
770
802
Py_ssize_t i, n = len(values)
@@ -787,6 +819,8 @@ cdef class PyObjectHashTable(HashTable):
787
819
788
820
return np.asarray(locs)
789
821
822
+ @cython.wraparound(False)
823
+ @cython.boundscheck(False)
790
824
def unique(self, ndarray[object] values):
791
825
cdef:
792
826
Py_ssize_t i, n = len(values)
@@ -810,6 +844,8 @@ cdef class PyObjectHashTable(HashTable):
810
844
811
845
return uniques.to_array()
812
846
847
+ @cython.wraparound(False)
848
+ @cython.boundscheck(False)
813
849
def get_labels(self, ndarray[object] values, ObjectVector uniques,
814
850
Py_ssize_t count_prior, int64_t na_sentinel,
815
851
bint check_null=True):
0 commit comments