Skip to content

Commit a439472

Browse files
jbrockmendeljreback
authored andcommitted
[CLN] [BLD] Fix many compiler warnings (#22013)
1 parent 1b5b813 commit a439472

File tree

10 files changed

+46
-37
lines changed

10 files changed

+46
-37
lines changed

pandas/_libs/hashtable_class_helper.pxi.in

+22-22
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ dtypes = [('Float64', 'float64', 'float64_t'),
2929

3030
ctypedef struct {{name}}VectorData:
3131
{{arg}} *data
32-
size_t n, m
32+
Py_ssize_t n, m
3333

3434
{{endif}}
3535

@@ -147,7 +147,7 @@ cdef class StringVector:
147147
cdef resize(self):
148148
cdef:
149149
char **orig_data
150-
size_t i, m
150+
Py_ssize_t i, m
151151

152152
m = self.data.m
153153
self.data.m = max(self.data.m * 4, _INIT_VEC_CAP)
@@ -172,7 +172,7 @@ cdef class StringVector:
172172
def to_array(self):
173173
cdef:
174174
ndarray ao
175-
size_t n
175+
Py_ssize_t n
176176
object val
177177

178178
ao = np.empty(self.data.n, dtype=np.object)
@@ -198,7 +198,7 @@ cdef class ObjectVector:
198198

199199
cdef:
200200
PyObject **data
201-
size_t n, m
201+
Py_ssize_t n, m
202202
ndarray ao
203203
bint external_view_exists
204204

@@ -281,7 +281,7 @@ cdef class {{name}}HashTable(HashTable):
281281
def sizeof(self, deep=False):
282282
""" return the size of my table in bytes """
283283
return self.table.n_buckets * (sizeof({{dtype}}_t) + # keys
284-
sizeof(size_t) + # vals
284+
sizeof(Py_ssize_t) + # vals
285285
sizeof(uint32_t)) # flags
286286

287287
cpdef get_item(self, {{dtype}}_t val):
@@ -522,13 +522,13 @@ cdef class StringHashTable(HashTable):
522522
def sizeof(self, deep=False):
523523
""" return the size of my table in bytes """
524524
return self.table.n_buckets * (sizeof(char *) + # keys
525-
sizeof(size_t) + # vals
525+
sizeof(Py_ssize_t) + # vals
526526
sizeof(uint32_t)) # flags
527527

528528
cpdef get_item(self, object val):
529529
cdef:
530530
khiter_t k
531-
char *v
531+
const char *v
532532
v = util.get_c_string(val)
533533

534534
k = kh_get_str(self.table, v)
@@ -541,7 +541,7 @@ cdef class StringHashTable(HashTable):
541541
cdef:
542542
khiter_t k
543543
int ret = 0
544-
char *v
544+
const char *v
545545

546546
v = util.get_c_string(val)
547547

@@ -560,10 +560,10 @@ cdef class StringHashTable(HashTable):
560560
int64_t *resbuf = <int64_t*> labels.data
561561
khiter_t k
562562
kh_str_t *table = self.table
563-
char *v
564-
char **vecs
563+
const char *v
564+
const char **vecs
565565

566-
vecs = <char **> malloc(n * sizeof(char *))
566+
vecs = <const char **> malloc(n * sizeof(char *))
567567
for i in range(n):
568568
val = values[i]
569569
v = util.get_c_string(val)
@@ -589,10 +589,10 @@ cdef class StringHashTable(HashTable):
589589
object val
590590
ObjectVector uniques
591591
khiter_t k
592-
char *v
593-
char **vecs
592+
const char *v
593+
const char **vecs
594594

595-
vecs = <char **> malloc(n * sizeof(char *))
595+
vecs = <const char **> malloc(n * sizeof(char *))
596596
uindexer = np.empty(n, dtype=np.int64)
597597
for i in range(n):
598598
val = values[i]
@@ -627,7 +627,7 @@ cdef class StringHashTable(HashTable):
627627
Py_ssize_t i, n = len(values)
628628
int ret = 0
629629
object val
630-
char *v
630+
const char *v
631631
khiter_t k
632632
int64_t[:] locs = np.empty(n, dtype=np.int64)
633633

@@ -660,12 +660,12 @@ cdef class StringHashTable(HashTable):
660660
Py_ssize_t i, n = len(values)
661661
int ret = 0
662662
object val
663-
char *v
664-
char **vecs
663+
const char *v
664+
const char **vecs
665665
khiter_t k
666666

667667
# these by-definition *must* be strings
668-
vecs = <char **> malloc(n * sizeof(char *))
668+
vecs = <const char **> malloc(n * sizeof(char *))
669669
for i in range(n):
670670
val = values[i]
671671

@@ -693,8 +693,8 @@ cdef class StringHashTable(HashTable):
693693
Py_ssize_t idx, count = count_prior
694694
int ret = 0
695695
object val
696-
char *v
697-
char **vecs
696+
const char *v
697+
const char **vecs
698698
khiter_t k
699699
bint use_na_value
700700

@@ -705,7 +705,7 @@ cdef class StringHashTable(HashTable):
705705

706706
# pre-filter out missing
707707
# and assign pointers
708-
vecs = <char **> malloc(n * sizeof(char *))
708+
vecs = <const char **> malloc(n * sizeof(char *))
709709
for i in range(n):
710710
val = values[i]
711711

@@ -769,7 +769,7 @@ cdef class PyObjectHashTable(HashTable):
769769
def sizeof(self, deep=False):
770770
""" return the size of my table in bytes """
771771
return self.table.n_buckets * (sizeof(PyObject *) + # keys
772-
sizeof(size_t) + # vals
772+
sizeof(Py_ssize_t) + # vals
773773
sizeof(uint32_t)) # flags
774774

775775
cpdef get_item(self, object val):

pandas/_libs/src/datetime/np_datetime.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,11 @@ int cmp_npy_datetimestruct(const npy_datetimestruct *a,
329329
* Returns -1 on error, 0 on success, and 1 (with no error set)
330330
* if obj doesn't have the needed date or datetime attributes.
331331
*/
332-
int convert_pydatetime_to_datetimestruct(PyDateTime_Date *obj,
332+
int convert_pydatetime_to_datetimestruct(PyDateTime_Date *dtobj,
333333
npy_datetimestruct *out) {
334334
// Assumes that obj is a valid datetime object
335335
PyObject *tmp;
336+
PyObject *obj = (PyObject*)dtobj;
336337

337338
/* Initialize the output to all zeros */
338339
memset(out, 0, sizeof(npy_datetimestruct));

pandas/_libs/src/datetime/np_datetime.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ extern const npy_datetimestruct _NS_MAX_DTS;
3131
// stuff pandas needs
3232
// ----------------------------------------------------------------------------
3333

34-
int convert_pydatetime_to_datetimestruct(PyDateTime_Date *obj,
34+
int convert_pydatetime_to_datetimestruct(PyDateTime_Date *dtobj,
3535
npy_datetimestruct *out);
3636

3737
npy_datetime npy_datetimestruct_to_datetime(NPY_DATETIMEUNIT base,

pandas/_libs/src/parser/tokenizer.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ static int make_stream_space(parser_t *self, size_t nbytes) {
262262
("\n\nmake_stream_space: nbytes = %zu. grow_buffer(self->stream...)\n",
263263
nbytes))
264264
self->stream = (char *)grow_buffer((void *)self->stream, self->stream_len,
265-
(size_t*)&self->stream_cap, nbytes * 2,
265+
(int64_t*)&self->stream_cap, nbytes * 2,
266266
sizeof(char), &status);
267267
TRACE(
268268
("make_stream_space: self->stream=%p, self->stream_len = %zu, "
@@ -289,7 +289,7 @@ static int make_stream_space(parser_t *self, size_t nbytes) {
289289
cap = self->words_cap;
290290
self->words =
291291
(char **)grow_buffer((void *)self->words, self->words_len,
292-
(size_t*)&self->words_cap, nbytes,
292+
(int64_t*)&self->words_cap, nbytes,
293293
sizeof(char *), &status);
294294
TRACE(
295295
("make_stream_space: grow_buffer(self->self->words, %zu, %zu, %zu, "
@@ -320,7 +320,7 @@ static int make_stream_space(parser_t *self, size_t nbytes) {
320320
cap = self->lines_cap;
321321
self->line_start =
322322
(int64_t *)grow_buffer((void *)self->line_start, self->lines + 1,
323-
(size_t*)&self->lines_cap, nbytes,
323+
(int64_t*)&self->lines_cap, nbytes,
324324
sizeof(int64_t), &status);
325325
TRACE((
326326
"make_stream_space: grow_buffer(self->line_start, %zu, %zu, %zu, %d)\n",

pandas/_libs/src/ujson/python/objToJSON.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ static void *PyUnicodeToUTF8(JSOBJ _obj, JSONTypeContext *tc, void *outValue,
427427
#if (PY_VERSION_HEX >= 0x03030000)
428428
if (PyUnicode_IS_COMPACT_ASCII(obj)) {
429429
Py_ssize_t len;
430-
char *data = PyUnicode_AsUTF8AndSize(obj, &len);
430+
char *data = (char*)PyUnicode_AsUTF8AndSize(obj, &len);
431431
*_outLen = len;
432432
return data;
433433
}

pandas/_libs/tslibs/period.pyx

+2-1
Original file line numberDiff line numberDiff line change
@@ -927,7 +927,8 @@ def extract_freq(ndarray[object] values):
927927
# -----------------------------------------------------------------------
928928
# period helpers
929929

930-
930+
@cython.wraparound(False)
931+
@cython.boundscheck(False)
931932
cdef ndarray[int64_t] localize_dt64arr_to_period(ndarray[int64_t] stamps,
932933
int freq, object tz):
933934
cdef:

pandas/_libs/tslibs/util.pxd

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ cdef extern from "../src/numpy_helper.h":
7070
int assign_value_1d(ndarray, Py_ssize_t, object) except -1
7171
cnp.int64_t get_nat()
7272
object get_value_1d(ndarray, Py_ssize_t)
73-
char *get_c_string(object) except NULL
73+
const char *get_c_string(object) except NULL
7474
object char_to_string(char*)
7575

7676
ctypedef fused numeric:

pandas/io/msgpack/_unpacker.pyx

+7-3
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def unpackb(object packed, object object_hook=None, object list_hook=None,
139139
ret = unpack_construct(&ctx, buf, buf_len, &off)
140140
if ret == 1:
141141
obj = unpack_data(&ctx)
142-
if off < buf_len:
142+
if <Py_ssize_t> off < buf_len:
143143
raise ExtraData(obj, PyBytes_FromStringAndSize(
144144
buf + off, buf_len - off))
145145
return obj
@@ -367,9 +367,11 @@ cdef class Unpacker(object):
367367
self.buf_tail = tail + _buf_len
368368

369369
cdef read_from_file(self):
370+
# Assume self.max_buffer_size - (self.buf_tail - self.buf_head) >= 0
370371
next_bytes = self.file_like_read(
371372
min(self.read_size,
372-
self.max_buffer_size - (self.buf_tail - self.buf_head)))
373+
<Py_ssize_t>(self.max_buffer_size -
374+
(self.buf_tail - self.buf_head))))
373375
if next_bytes:
374376
self.append_buffer(PyBytes_AsString(next_bytes),
375377
PyBytes_Size(next_bytes))
@@ -417,7 +419,9 @@ cdef class Unpacker(object):
417419
def read_bytes(self, Py_ssize_t nbytes):
418420
"""Read a specified number of raw bytes from the stream"""
419421
cdef size_t nread
420-
nread = min(self.buf_tail - self.buf_head, nbytes)
422+
423+
# Assume that self.buf_tail - self.buf_head >= 0
424+
nread = min(<Py_ssize_t>(self.buf_tail - self.buf_head), nbytes)
421425
ret = PyBytes_FromStringAndSize(self.buf + self.buf_head, nread)
422426
self.buf_head += nread
423427
if len(ret) < nbytes and self.file_like is not None:

pandas/io/sas/sas.pyx

+6-2
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ cdef ndarray[uint8_t, ndim=1] rle_decompress(
104104
raise ValueError("unknown control byte: {byte}"
105105
.format(byte=control_byte))
106106

107-
if len(result) != result_length:
107+
# In py37 cython/clang sees `len(outbuff)` as size_t and not Py_ssize_t
108+
if <Py_ssize_t>len(result) != <Py_ssize_t>result_length:
108109
raise ValueError("RLE: {got} != {expect}".format(got=len(result),
109110
expect=result_length))
110111

@@ -186,12 +187,14 @@ cdef ndarray[uint8_t, ndim=1] rdc_decompress(
186187
else:
187188
raise ValueError("unknown RDC command")
188189

189-
if len(outbuff) != result_length:
190+
# In py37 cython/clang sees `len(outbuff)` as size_t and not Py_ssize_t
191+
if <Py_ssize_t>len(outbuff) != <Py_ssize_t>result_length:
190192
raise ValueError("RDC: {got} != {expect}\n"
191193
.format(got=len(outbuff), expect=result_length))
192194

193195
return np.asarray(outbuff)
194196

197+
195198
cdef enum ColumnTypes:
196199
column_type_decimal = 1
197200
column_type_string = 2
@@ -204,6 +207,7 @@ cdef int page_mix_types_1 = const.page_mix_types[1]
204207
cdef int page_data_type = const.page_data_type
205208
cdef int subheader_pointers_offset = const.subheader_pointers_offset
206209

210+
207211
cdef class Parser(object):
208212

209213
cdef:

setup.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,6 @@ def srcpath(name=None, suffix='.pyx', subdir='src'):
491491
if suffix == '.pyx':
492492
lib_depends = [srcpath(f, suffix='.pyx', subdir='_libs/src')
493493
for f in lib_depends]
494-
lib_depends.append('pandas/_libs/util.pxd')
495494
else:
496495
lib_depends = []
497496

@@ -507,7 +506,7 @@ def srcpath(name=None, suffix='.pyx', subdir='src'):
507506
np_datetime_sources = ['pandas/_libs/src/datetime/np_datetime.c',
508507
'pandas/_libs/src/datetime/np_datetime_strings.c']
509508

510-
tseries_depends = np_datetime_headers + ['pandas/_libs/tslibs/np_datetime.pxd']
509+
tseries_depends = np_datetime_headers
511510

512511

513512
ext_data = {

0 commit comments

Comments
 (0)