Skip to content

Commit 4efbb6b

Browse files
committed
Fixed build errors; Py <3.5 support
1 parent d09268b commit 4efbb6b

File tree

5 files changed

+43
-39
lines changed

5 files changed

+43
-39
lines changed

pandas/_libs/algos.pyx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ cdef double nan = NaN
3232
cdef int64_t iNaT = get_nat()
3333

3434
tiebreakers = {
35-
'average': TiebreakEnumType.TIEBREAK_AVERAGE,
36-
'min': TiebreakEnumType.TIEBREAK_MIN,
37-
'max': TiebreakEnumType.TIEBREAK_MAX,
38-
'first': TiebreakEnumType.TIEBREAK_FIRST,
39-
'dense': TiebreakEnumType.TIEBREAK_DENSE,
35+
'average': TIEBREAK_AVERAGE,
36+
'min': TIEBREAK_MIN,
37+
'max': TIEBREAK_MAX,
38+
'first': TIEBREAK_FIRST,
39+
'dense': TIEBREAK_DENSE,
4040
}
4141

4242

pandas/_libs/algos_rank_helper.pxi.in

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,11 @@ def rank_1d_{{dtype}}(object in_arr, ties_method='average', ascending=True,
121121
_values = np.asarray(list(zip(order[0], order[1])), dtype=_dt)
122122
_as = np.argsort(_values, kind='mergesort', order=('mask', 'values'))
123123
{{else}}
124-
if tiebreak == TiebreakEnumType.TIEBREAK_FIRST:
124+
if tiebreak == TIEBREAK_FIRST:
125125
# need to use a stable sort here
126126
_as = np.lexsort(keys=order)
127127
if not ascending:
128-
tiebreak = TiebreakEnumType.TIEBREAK_FIRST_DESCENDING
128+
tiebreak = TIEBREAK_FIRST_DESCENDING
129129
else:
130130
_as = np.lexsort(keys=order)
131131
{{endif}}
@@ -154,21 +154,21 @@ def rank_1d_{{dtype}}(object in_arr, ties_method='average', ascending=True,
154154
if (i == n - 1 or
155155
are_diff(util.get_value_at(sorted_data, i + 1), val) or
156156
i == non_na_idx - 1):
157-
if tiebreak == TiebreakEnumType.TIEBREAK_AVERAGE:
157+
if tiebreak == TIEBREAK_AVERAGE:
158158
for j in range(i - dups + 1, i + 1):
159159
ranks[argsorted[j]] = sum_ranks / dups
160-
elif tiebreak == TiebreakEnumType.TIEBREAK_MIN:
160+
elif tiebreak == TIEBREAK_MIN:
161161
for j in range(i - dups + 1, i + 1):
162162
ranks[argsorted[j]] = i - dups + 2
163-
elif tiebreak == TiebreakEnumType.TIEBREAK_MAX:
163+
elif tiebreak == TIEBREAK_MAX:
164164
for j in range(i - dups + 1, i + 1):
165165
ranks[argsorted[j]] = i + 1
166-
elif tiebreak == TiebreakEnumType.TIEBREAK_FIRST:
166+
elif tiebreak == TIEBREAK_FIRST:
167167
raise ValueError('first not supported for non-numeric data')
168-
elif tiebreak == TiebreakEnumType.TIEBREAK_FIRST_DESCENDING:
168+
elif tiebreak == TIEBREAK_FIRST_DESCENDING:
169169
for j in range(i - dups + 1, i + 1):
170170
ranks[argsorted[j]] = 2 * i - j - dups + 2
171-
elif tiebreak == TiebreakEnumType.TIEBREAK_DENSE:
171+
elif tiebreak == TIEBREAK_DENSE:
172172
total_tie_count += 1
173173
for j in range(i - dups + 1, i + 1):
174174
ranks[argsorted[j]] = total_tie_count
@@ -191,22 +191,22 @@ def rank_1d_{{dtype}}(object in_arr, ties_method='average', ascending=True,
191191

192192
if (i == n - 1 or sorted_data[i + 1] != val or
193193
i == non_na_idx - 1):
194-
if tiebreak == TiebreakEnumType.TIEBREAK_AVERAGE:
194+
if tiebreak == TIEBREAK_AVERAGE:
195195
for j in range(i - dups + 1, i + 1):
196196
ranks[argsorted[j]] = sum_ranks / dups
197-
elif tiebreak == TiebreakEnumType.TIEBREAK_MIN:
197+
elif tiebreak == TIEBREAK_MIN:
198198
for j in range(i - dups + 1, i + 1):
199199
ranks[argsorted[j]] = i - dups + 2
200-
elif tiebreak == TiebreakEnumType.TIEBREAK_MAX:
200+
elif tiebreak == TIEBREAK_MAX:
201201
for j in range(i - dups + 1, i + 1):
202202
ranks[argsorted[j]] = i + 1
203-
elif tiebreak == TiebreakEnumType.TIEBREAK_FIRST:
203+
elif tiebreak == TIEBREAK_FIRST:
204204
for j in range(i - dups + 1, i + 1):
205205
ranks[argsorted[j]] = j + 1
206-
elif tiebreak == TiebreakEnumType.TIEBREAK_FIRST_DESCENDING:
206+
elif tiebreak == TIEBREAK_FIRST_DESCENDING:
207207
for j in range(i - dups + 1, i + 1):
208208
ranks[argsorted[j]] = 2 * i - j - dups + 2
209-
elif tiebreak == TiebreakEnumType.TIEBREAK_DENSE:
209+
elif tiebreak == TIEBREAK_DENSE:
210210
total_tie_count += 1
211211
for j in range(i - dups + 1, i + 1):
212212
ranks[argsorted[j]] = total_tie_count
@@ -300,11 +300,11 @@ def rank_2d_{{dtype}}(object in_arr, axis=0, ties_method='average',
300300
else:
301301
return ranks
302302
{{else}}
303-
if tiebreak == TiebreakEnumType.TIEBREAK_FIRST:
303+
if tiebreak == TIEBREAK_FIRST:
304304
# need to use a stable sort here
305305
_as = values.argsort(axis=1, kind='mergesort')
306306
if not ascending:
307-
tiebreak = TiebreakEnumType.TIEBREAK_FIRST_DESCENDING
307+
tiebreak = TIEBREAK_FIRST_DESCENDING
308308
else:
309309
_as = values.argsort(1)
310310
{{endif}}
@@ -359,27 +359,27 @@ def rank_2d_{{dtype}}(object in_arr, axis=0, ties_method='average',
359359
{{else}}
360360
if j == k - 1 or values[i, j + 1] != val:
361361
{{endif}}
362-
if tiebreak == TiebreakEnumType.TIEBREAK_AVERAGE:
362+
if tiebreak == TIEBREAK_AVERAGE:
363363
for z in range(j - dups + 1, j + 1):
364364
ranks[i, argsorted[i, z]] = sum_ranks / dups
365-
elif tiebreak == TiebreakEnumType.TIEBREAK_MIN:
365+
elif tiebreak == TIEBREAK_MIN:
366366
for z in range(j - dups + 1, j + 1):
367367
ranks[i, argsorted[i, z]] = j - dups + 2
368-
elif tiebreak == TiebreakEnumType.TIEBREAK_MAX:
368+
elif tiebreak == TIEBREAK_MAX:
369369
for z in range(j - dups + 1, j + 1):
370370
ranks[i, argsorted[i, z]] = j + 1
371-
elif tiebreak == TiebreakEnumType.TIEBREAK_FIRST:
371+
elif tiebreak == TIEBREAK_FIRST:
372372
{{if dtype == 'object'}}
373373
raise ValueError('first not supported '
374374
'for non-numeric data')
375375
{{else}}
376376
for z in range(j - dups + 1, j + 1):
377377
ranks[i, argsorted[i, z]] = z + 1
378378
{{endif}}
379-
elif tiebreak == TiebreakEnumType.TIEBREAK_FIRST_DESCENDING:
379+
elif tiebreak == TIEBREAK_FIRST_DESCENDING:
380380
for z in range(j - dups + 1, j + 1):
381381
ranks[i, argsorted[i, z]] = 2 * j - z - dups + 2
382-
elif tiebreak == TiebreakEnumType.TIEBREAK_DENSE:
382+
elif tiebreak == TIEBREAK_DENSE:
383383
total_tie_count += 1
384384
for z in range(j - dups + 1, j + 1):
385385
ranks[i, argsorted[i, z]] = total_tie_count

pandas/_libs/groupby.pyx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ from libc.math cimport isnan
1717
from libc.stdlib cimport malloc, free
1818

1919
from util cimport numeric, get_nat
20-
from algos cimport swap, TiebreakEnumType
20+
from algos cimport (swap, TiebreakEnumType, TIEBREAK_AVERAGE, TIEBREAK_MIN,
21+
TIEBREAK_MAX, TIEBREAK_FIRST, TIEBREAK_DENSE)
2122
from algos import take_2d_axis1_float64_float64, groupsort_indexer, tiebreakers
2223

2324
cdef int64_t iNaT = get_nat()
@@ -175,22 +176,22 @@ def group_rank_object(ndarray[float64_t, ndim=2] out,
175176
grp_na_count += 1
176177
out[_as[i], 0] = np.nan
177178
else:
178-
if tiebreak == TiebreakEnumType.TIEBREAK_AVERAGE:
179+
if tiebreak == TIEBREAK_AVERAGE:
179180
for j in range(i - dups + 1, i + 1):
180181
out[_as[j], 0] = sum_ranks / dups
181-
elif tiebreak == TiebreakEnumType.TIEBREAK_MIN:
182+
elif tiebreak == TIEBREAK_MIN:
182183
for j in range(i - dups + 1, i + 1):
183184
out[_as[j], 0] = i - grp_start - dups + 2
184-
elif tiebreak == TiebreakEnumType.TIEBREAK_MAX:
185+
elif tiebreak == TIEBREAK_MAX:
185186
for j in range(i - dups + 1, i + 1):
186187
out[_as[j], 0] = i - grp_start + 1
187-
elif tiebreak == TiebreakEnumType.TIEBREAK_FIRST:
188+
elif tiebreak == TIEBREAK_FIRST:
188189
for j in range(i - dups + 1, i + 1):
189190
if ascending:
190191
out[_as[j], 0] = j + 1 - grp_start
191192
else:
192193
out[_as[j], 0] = 2 * i - j - dups + 2 - grp_start
193-
elif tiebreak == TiebreakEnumType.TIEBREAK_DENSE:
194+
elif tiebreak == TIEBREAK_DENSE:
194195
for j in range(i - dups + 1, i + 1):
195196
out[_as[j], 0] = grp_vals_seen
196197

pandas/_libs/groupby_helper.pxi.in

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -507,22 +507,22 @@ def group_rank_{{name}}(ndarray[float64_t, ndim=2] out,
507507
grp_na_count += 1
508508
out[_as[i], 0] = nan
509509
else:
510-
if tiebreak == TiebreakEnumType.TIEBREAK_AVERAGE:
510+
if tiebreak == TIEBREAK_AVERAGE:
511511
for j in range(i - dups + 1, i + 1):
512512
out[_as[j], 0] = sum_ranks / dups
513-
elif tiebreak == TiebreakEnumType.TIEBREAK_MIN:
513+
elif tiebreak == TIEBREAK_MIN:
514514
for j in range(i - dups + 1, i + 1):
515515
out[_as[j], 0] = i - grp_start - dups + 2
516-
elif tiebreak == TiebreakEnumType.TIEBREAK_MAX:
516+
elif tiebreak == TIEBREAK_MAX:
517517
for j in range(i - dups + 1, i + 1):
518518
out[_as[j], 0] = i - grp_start + 1
519-
elif tiebreak == TiebreakEnumType.TIEBREAK_FIRST:
519+
elif tiebreak == TIEBREAK_FIRST:
520520
for j in range(i - dups + 1, i + 1):
521521
if ascending:
522522
out[_as[j], 0] = j + 1 - grp_start
523523
else:
524524
out[_as[j], 0] = 2 * i - j - dups + 2 - grp_start
525-
elif tiebreak == TiebreakEnumType.TIEBREAK_DENSE:
525+
elif tiebreak == TIEBREAK_DENSE:
526526
for j in range(i - dups + 1, i + 1):
527527
out[_as[j], 0] = grp_vals_seen
528528

pandas/core/groupby.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2173,7 +2173,10 @@ def get_group_levels(self):
21732173
# Aggregation functions
21742174

21752175
def _group_rank_wrapper(func, *args, **kwargs):
2176-
return func(*args, kwargs.get('ties_method', 'average'),
2176+
# Need to explicity unpack *args to support Py < 3.5
2177+
# See PEP 448
2178+
return func(args[0], args[1], args[2], args[3],
2179+
kwargs.get('ties_method', 'average'),
21772180
kwargs.get('ascending', True),
21782181
kwargs.get('pct', False),
21792182
kwargs.get('na_option', 'keep'))

0 commit comments

Comments
 (0)