2
2
# pylint: disable=W0102
3
3
4
4
from datetime import datetime, date
5
-
5
+ import sys
6
6
import pytest
7
7
import numpy as np
8
8
9
9
import re
10
+ from distutils.version import LooseVersion
10
11
import itertools
11
12
from pandas import (Index, MultiIndex, DataFrame, DatetimeIndex,
12
13
Series, Categorical)
22
23
randn, assert_series_equal)
23
24
from pandas.compat import zip, u
24
25
26
+ # in 3.6.1 a c-api slicing function changed, see src/compat_helper.h
27
+ PY361 = sys.version >= LooseVersion('3.6.1')
28
+
25
29
26
30
@pytest.fixture
27
31
def mgr():
@@ -1128,8 +1132,10 @@ def assert_as_slice_equals(arr, slc):
1128
1132
assert_as_slice_equals([0, 100], slice(0, 200, 100))
1129
1133
1130
1134
assert_as_slice_equals([2, 1], slice(2, 0, -1))
1131
- assert_as_slice_equals([2, 1, 0], slice(2, None, -1))
1132
- assert_as_slice_equals([100, 0], slice(100, None, -100))
1135
+
1136
+ if not PY361:
1137
+ assert_as_slice_equals([2, 1, 0], slice(2, None, -1))
1138
+ assert_as_slice_equals([100, 0], slice(100, None, -100))
1133
1139
1134
1140
def test_not_slice_like_arrays(self):
1135
1141
def assert_not_slice_like(arr):
@@ -1150,8 +1156,9 @@ def test_slice_iter(self):
1150
1156
assert list(BlockPlacement(slice(0, 0))) == []
1151
1157
assert list(BlockPlacement(slice(3, 0))) == []
1152
1158
1153
- assert list(BlockPlacement(slice(3, 0, -1))) == [3, 2, 1]
1154
- assert list(BlockPlacement(slice(3, None, -1))) == [3, 2, 1, 0]
1159
+ if not PY361:
1160
+ assert list(BlockPlacement(slice(3, 0, -1))) == [3, 2, 1]
1161
+ assert list(BlockPlacement(slice(3, None, -1))) == [3, 2, 1, 0]
1155
1162
1156
1163
def test_slice_to_array_conversion(self):
1157
1164
def assert_as_array_equals(slc, asarray):
@@ -1164,8 +1171,10 @@ def assert_as_array_equals(slc, asarray):
1164
1171
assert_as_array_equals(slice(3, 0), [])
1165
1172
1166
1173
assert_as_array_equals(slice(3, 0, -1), [3, 2, 1])
1167
- assert_as_array_equals(slice(3, None, -1), [3, 2, 1, 0])
1168
- assert_as_array_equals(slice(31, None, -10), [31, 21, 11, 1])
1174
+
1175
+ if not PY361:
1176
+ assert_as_array_equals(slice(3, None, -1), [3, 2, 1, 0])
1177
+ assert_as_array_equals(slice(31, None, -10), [31, 21, 11, 1])
1169
1178
1170
1179
def test_blockplacement_add(self):
1171
1180
bpl = BlockPlacement(slice(0, 5))
@@ -1180,23 +1189,26 @@ def assert_add_equals(val, inc, result):
1180
1189
assert_add_equals(slice(0, 0), 0, [])
1181
1190
assert_add_equals(slice(1, 4), 0, [1, 2, 3])
1182
1191
assert_add_equals(slice(3, 0, -1), 0, [3, 2, 1])
1183
- assert_add_equals(slice(2, None, -1), 0, [2, 1, 0])
1184
1192
assert_add_equals([1, 2, 4], 0, [1, 2, 4])
1185
1193
1186
1194
assert_add_equals(slice(0, 0), 10, [])
1187
1195
assert_add_equals(slice(1, 4), 10, [11, 12, 13])
1188
1196
assert_add_equals(slice(3, 0, -1), 10, [13, 12, 11])
1189
- assert_add_equals(slice(2, None, -1), 10, [12, 11, 10])
1190
1197
assert_add_equals([1, 2, 4], 10, [11, 12, 14])
1191
1198
1192
1199
assert_add_equals(slice(0, 0), -1, [])
1193
1200
assert_add_equals(slice(1, 4), -1, [0, 1, 2])
1194
- assert_add_equals(slice(3, 0, -1), -1, [2, 1, 0])
1195
1201
assert_add_equals([1, 2, 4], -1, [0, 1, 3])
1196
1202
1197
1203
with pytest.raises(ValueError):
1198
1204
BlockPlacement(slice(1, 4)).add(-10)
1199
1205
with pytest.raises(ValueError):
1200
1206
BlockPlacement([1, 2, 4]).add(-10)
1201
- with pytest.raises(ValueError):
1202
- BlockPlacement(slice(2, None, -1)).add(-1)
1207
+
1208
+ if not PY361:
1209
+ assert_add_equals(slice(3, 0, -1), -1, [2, 1, 0])
1210
+ assert_add_equals(slice(2, None, -1), 0, [2, 1, 0])
1211
+ assert_add_equals(slice(2, None, -1), 10, [12, 11, 10])
1212
+
1213
+ with pytest.raises(ValueError):
1214
+ BlockPlacement(slice(2, None, -1)).add(-1)
0 commit comments