@@ -23,6 +23,15 @@ from pandas._libs.util cimport (
23
23
24
24
from pandas._libs.lib import is_scalar
25
25
26
+ # Accessing the data member of ndarray is deprecated, but we depend on it.
27
+ cdef extern from * :
28
+ """
29
+ static void PyArray_SET_DATA(PyArrayObject *arr, void * data) {
30
+ arr->data = data;
31
+ }
32
+ """
33
+ void PyArray_SET_DATA(ndarray arr, void * data)
34
+
26
35
27
36
cdef cnp.dtype _dtype_obj = np.dtype(" object" )
28
37
@@ -340,18 +349,18 @@ cdef class Slider:
340
349
self .stride = values.strides[0 ]
341
350
self .orig_data = self .buf.data
342
351
343
- self .buf.data = self .values.data
352
+ PyArray_SET_DATA( self .buf, self .values.data)
344
353
self .buf.strides[0 ] = self .stride
345
354
346
355
cdef move(self , int start, int end):
347
356
"""
348
357
For slicing
349
358
"""
350
- self .buf.data = self .values.data + self .stride * start
359
+ PyArray_SET_DATA( self .buf, self .values.data + self .stride * start)
351
360
self .buf.shape[0 ] = end - start
352
361
353
362
cdef reset(self ):
354
- self .buf.data = self .orig_data
363
+ PyArray_SET_DATA( self .buf, self .orig_data)
355
364
self .buf.shape[0 ] = 0
356
365
357
366
@@ -469,7 +478,7 @@ cdef class BlockSlider:
469
478
arr = self .blk_values[i]
470
479
471
480
# axis=1 is the frame's axis=0
472
- arr.data = self .base_ptrs[i] + arr.strides[1 ] * start
481
+ PyArray_SET_DATA( arr, self .base_ptrs[i] + arr.strides[1 ] * start)
473
482
arr.shape[1 ] = end - start
474
483
475
484
# move and set the index
@@ -490,7 +499,7 @@ cdef class BlockSlider:
490
499
arr = self .blk_values[i]
491
500
492
501
# axis=1 is the frame's axis=0
493
- arr.data = self .base_ptrs[i]
502
+ PyArray_SET_DATA( arr, self .base_ptrs[i])
494
503
arr.shape[1 ] = 0
495
504
496
505
cdef _restore_blocks(self ):
0 commit comments