Skip to content

Commit 6c4b4cd

Browse files
committed
Gixes GH14554, RecursionErrors will no longer be coerced into KeyErrors or IndexingErrors
2 parents 1ecc540 + dd8cba2 commit 6c4b4cd

File tree

205 files changed

+14190
-34153
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

205 files changed

+14190
-34153
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
*.class
2828
*.dll
2929
*.exe
30+
*.pxi
3031
*.o
3132
*.py[ocd]
3233
*.so

.travis.yml

+61-64
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,9 @@ cache:
1414

1515
env:
1616
global:
17-
# scatterci API key
18-
#- secure: "Bx5umgo6WjuGY+5XFa004xjCiX/vq0CyMZ/ETzcs7EIBI1BE/0fIDXOoWhoxbY9HPfdPGlDnDgB9nGqr5wArO2s+BavyKBWg6osZ3dmkfuJPMOWeyCa92EeP+sfKw8e5HSU5MizW9e319wHWOF/xkzdHR7T67Qd5erhv91x4DnQ="
19-
# ironcache API key
20-
#- secure: "e4eEFn9nDQc3Xa5BWYkzfX37jaWVq89XidVX+rcCNEr5OlOImvveeXnF1IzbRXznH4Sv0YsLwUd8RGUWOmyCvkONq/VJeqCHWtTMyfaCIdqSyhIP9Odz8r9ahch+Y0XFepBey92AJHmlnTh+2GjCDgIiqq4fzglojnp56Vg1ojA="
21-
#- secure: "CjmYmY5qEu3KrvMtel6zWFEtMq8ORBeS1S1odJHnjQpbwT1KY2YFZRVlLphfyDQXSz6svKUdeRrCNp65baBzs3DQNA8lIuXGIBYFeJxqVGtYAZZs6+TzBPfJJK798sGOj5RshrOJkFG2rdlWNuTq/XphI0JOrN3nPUkRrdQRpAw="
22-
# pandas-docs-bot GH
23-
- secure: "PCzUFR8CHmw9lH84p4ygnojdF7Z8U5h7YfY0RyT+5K/aiQ1ZTU3ZkDTPI0/rR5FVMxsEEKEQKMcc5fvqW0PeD7Q2wRmluloKgT9w4EVEJ1ppKf7lITPcvZR2QgVOvjv4AfDtibLHFNiaSjzoqyJVjM4igjOu8WTlF3JfZcmOQjQ="
17+
18+
# pandas-docs-travis GH
19+
- secure: "YvvTc+FrSYHgdxqoxn9s8VOaCWjvZzlkaf6k55kkmQqCYR9dPiLMsot1F96/N7o3YlD1s0znPQCak93Du8HHi/8809zAXloTaMSZrWz4R4qn96xlZFRE88O/w/Z1t3VVYpKX3MHlCggBc8MtXrqmvWKJMAqXyysZ4TTzoiJDPvE="
2420

2521
git:
2622
# for cloning
@@ -70,19 +66,6 @@ matrix:
7066
apt:
7167
packages:
7268
- python-gtk2
73-
- python: 3.4
74-
env:
75-
- PYTHON_VERSION=3.4
76-
- JOB_NAME: "34_nslow"
77-
- NOSE_ARGS="not slow and not disabled"
78-
- FULL_DEPS=true
79-
- CLIPBOARD=xsel
80-
- CACHE_NAME="34_nslow"
81-
- USE_CACHE=true
82-
addons:
83-
apt:
84-
packages:
85-
- xsel
8669
- python: 3.5
8770
env:
8871
- PYTHON_VERSION=3.5
@@ -97,6 +80,33 @@ matrix:
9780
apt:
9881
packages:
9982
- xsel
83+
- python: 3.6-dev
84+
env:
85+
- PYTHON_VERSION=3.6
86+
- JOB_NAME: "36_dev"
87+
- JOB_TAG=_DEV
88+
- NOSE_ARGS="not slow and not network and not disabled"
89+
- PANDAS_TESTING_MODE="deprecate"
90+
addons:
91+
apt:
92+
packages:
93+
- libatlas-base-dev
94+
- gfortran
95+
# In allow_failures
96+
- python: 2.7
97+
env:
98+
- PYTHON_VERSION=2.7
99+
- JOB_NAME: "27_nslow_nnet_COMPAT"
100+
- NOSE_ARGS="not slow and not network and not disabled"
101+
- LOCALE_OVERRIDE="it_IT.UTF-8"
102+
- INSTALL_TEST=true
103+
- JOB_TAG=_COMPAT
104+
- CACHE_NAME="27_nslow_nnet_COMPAT"
105+
- USE_CACHE=true
106+
addons:
107+
apt:
108+
packages:
109+
- language-pack-it
100110
# In allow_failures
101111
- python: 2.7
102112
env:
@@ -107,45 +117,46 @@ matrix:
107117
- FULL_DEPS=true
108118
- CACHE_NAME="27_slow"
109119
- USE_CACHE=true
120+
# In allow_failures
121+
- python: 2.7
122+
env:
123+
- PYTHON_VERSION=2.7
124+
- JOB_NAME: "27_build_test_conda"
125+
- JOB_TAG=_BUILD_TEST
126+
- NOSE_ARGS="not slow and not disabled"
127+
- FULL_DEPS=true
128+
- BUILD_TEST=true
129+
- CACHE_NAME="27_build_test_conda"
130+
- USE_CACHE=true
110131
# In allow_failures
111132
- python: 3.4
112133
env:
113134
- PYTHON_VERSION=3.4
114-
- JOB_NAME: "34_slow"
115-
- JOB_TAG=_SLOW
116-
- NOSE_ARGS="slow and not network and not disabled"
135+
- JOB_NAME: "34_nslow"
136+
- NOSE_ARGS="not slow and not disabled"
117137
- FULL_DEPS=true
118138
- CLIPBOARD=xsel
119-
- CACHE_NAME="34_slow"
139+
- CACHE_NAME="34_nslow"
120140
- USE_CACHE=true
121141
addons:
122142
apt:
123143
packages:
124144
- xsel
125145
# In allow_failures
126-
- python: 2.7
146+
- python: 3.4
127147
env:
128-
- PYTHON_VERSION=2.7
129-
- JOB_NAME: "27_build_test_conda"
130-
- JOB_TAG=_BUILD_TEST
131-
- NOSE_ARGS="not slow and not disabled"
148+
- PYTHON_VERSION=3.4
149+
- JOB_NAME: "34_slow"
150+
- JOB_TAG=_SLOW
151+
- NOSE_ARGS="slow and not network and not disabled"
132152
- FULL_DEPS=true
133-
- BUILD_TEST=true
134-
- CACHE_NAME="27_build_test_conda"
153+
- CLIPBOARD=xsel
154+
- CACHE_NAME="34_slow"
135155
- USE_CACHE=true
136-
# In allow_failures
137-
- python: 3.6-dev
138-
env:
139-
- PYTHON_VERSION=3.6
140-
- JOB_NAME: "36_dev"
141-
- JOB_TAG=_DEV
142-
- NOSE_ARGS="not slow and not network and not disabled"
143-
- PANDAS_TESTING_MODE="deprecate"
144156
addons:
145157
apt:
146158
packages:
147-
- libatlas-base-dev
148-
- gfortran
159+
- xsel
149160
# In allow_failures
150161
- python: 3.5
151162
env:
@@ -161,21 +172,6 @@ matrix:
161172
packages:
162173
- libatlas-base-dev
163174
- gfortran
164-
# In allow_failures
165-
- python: 2.7
166-
env:
167-
- PYTHON_VERSION=2.7
168-
- JOB_NAME: "27_nslow_nnet_COMPAT"
169-
- NOSE_ARGS="not slow and not network and not disabled"
170-
- LOCALE_OVERRIDE="it_IT.UTF-8"
171-
- INSTALL_TEST=true
172-
- JOB_TAG=_COMPAT
173-
- CACHE_NAME="27_nslow_nnet_COMPAT"
174-
- USE_CACHE=true
175-
addons:
176-
apt:
177-
packages:
178-
- language-pack-it
179175
# In allow_failures
180176
- python: 3.5
181177
env:
@@ -230,18 +226,19 @@ matrix:
230226
- BUILD_TEST=true
231227
- CACHE_NAME="27_build_test_conda"
232228
- USE_CACHE=true
233-
- python: 3.6-dev
229+
- python: 3.4
234230
env:
235-
- PYTHON_VERSION=3.6
236-
- JOB_NAME: "36_dev"
237-
- JOB_TAG=_DEV
238-
- NOSE_ARGS="not slow and not network and not disabled"
239-
- PANDAS_TESTING_MODE="deprecate"
231+
- PYTHON_VERSION=3.4
232+
- JOB_NAME: "34_nslow"
233+
- NOSE_ARGS="not slow and not disabled"
234+
- FULL_DEPS=true
235+
- CLIPBOARD=xsel
236+
- CACHE_NAME="34_nslow"
237+
- USE_CACHE=true
240238
addons:
241239
apt:
242240
packages:
243-
- libatlas-base-dev
244-
- gfortran
241+
- xsel
245242
- python: 3.5
246243
env:
247244
- PYTHON_VERSION=3.5

asv_bench/benchmarks/algorithms.py

+51-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import numpy as np
22
import pandas as pd
3+
from pandas.util import testing as tm
34

45

5-
class algorithm(object):
6+
class Algorithms(object):
67
goal_time = 0.2
78

89
def setup(self):
910
N = 100000
11+
np.random.seed(1234)
1012

1113
self.int_unique = pd.Int64Index(np.arange(N * 5))
1214
# cache is_unique
@@ -22,22 +24,33 @@ def setup(self):
2224
self.arrpos = np.arange(1000000)
2325
self.arrneg = np.arange(-1000000, 0)
2426
self.arrmixed = np.array([1, -1]).repeat(500000)
27+
self.strings = tm.makeStringIndex(100000)
2528

26-
def time_int_factorize(self):
29+
# match
30+
self.uniques = tm.makeStringIndex(1000).values
31+
self.all = self.uniques.repeat(10)
32+
33+
def time_factorize_string(self):
34+
self.strings.factorize()
35+
36+
def time_factorize_int(self):
2737
self.int.factorize()
2838

29-
def time_float_factorize(self):
39+
def time_factorize_float(self):
3040
self.int.factorize()
3141

32-
def time_int_unique_duplicated(self):
42+
def time_duplicated_int_unique(self):
3343
self.int_unique.duplicated()
3444

35-
def time_int_duplicated(self):
45+
def time_duplicated_int(self):
3646
self.int.duplicated()
3747

38-
def time_float_duplicated(self):
48+
def time_duplicated_float(self):
3949
self.float.duplicated()
4050

51+
def time_match_strings(self):
52+
pd.match(self.all, self.uniques)
53+
4154
def time_add_overflow_pos_scalar(self):
4255
self.checked_add(self.arr, 1)
4356

@@ -55,3 +68,35 @@ def time_add_overflow_neg_arr(self):
5568

5669
def time_add_overflow_mixed_arr(self):
5770
self.checked_add(self.arr, self.arrmixed)
71+
72+
73+
class Hashing(object):
74+
goal_time = 0.2
75+
76+
def setup(self):
77+
N = 100000
78+
79+
self.df = pd.DataFrame(
80+
{'A': pd.Series(tm.makeStringIndex(100).take(
81+
np.random.randint(0, 100, size=N))),
82+
'B': pd.Series(tm.makeStringIndex(10000).take(
83+
np.random.randint(0, 10000, size=N))),
84+
'D': np.random.randn(N),
85+
'E': np.arange(N),
86+
'F': pd.date_range('20110101', freq='s', periods=N),
87+
'G': pd.timedelta_range('1 day', freq='s', periods=N),
88+
})
89+
self.df['C'] = self.df['B'].astype('category')
90+
self.df.iloc[10:20] = np.nan
91+
92+
def time_frame(self):
93+
self.df.hash()
94+
95+
def time_series_int(self):
96+
self.df.E.hash()
97+
98+
def time_series_string(self):
99+
self.df.B.hash()
100+
101+
def time_series_categorical(self):
102+
self.df.C.hash()

asv_bench/benchmarks/attrs_caching.py

+16-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,32 @@
11
from .pandas_vb_common import *
2+
from pandas.util.decorators import cache_readonly
23

34

4-
class getattr_dataframe_index(object):
5+
class DataFrameAttributes(object):
56
goal_time = 0.2
67

78
def setup(self):
89
self.df = DataFrame(np.random.randn(10, 6))
910
self.cur_index = self.df.index
1011

11-
def time_getattr_dataframe_index(self):
12+
def time_get_index(self):
1213
self.foo = self.df.index
1314

15+
def time_set_index(self):
16+
self.df.index = self.cur_index
17+
1418

15-
class setattr_dataframe_index(object):
19+
class CacheReadonly(object):
1620
goal_time = 0.2
1721

1822
def setup(self):
19-
self.df = DataFrame(np.random.randn(10, 6))
20-
self.cur_index = self.df.index
2123

22-
def time_setattr_dataframe_index(self):
23-
self.df.index = self.cur_index
24+
class Foo:
25+
26+
@cache_readonly
27+
def prop(self):
28+
return 5
29+
self.obj = Foo()
30+
31+
def time_cache_readonly(self):
32+
self.obj.prop

0 commit comments

Comments
 (0)