Skip to content

Commit b3cc479

Browse files
committed
Applies additional null type, per OlegShteynbuk pydata#342
1 parent 3561dbd commit b3cc479

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

pandas_datareader/base.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ def _get_crumb(self, *args):
136136
raise NotImplementedError("Subclass has not implemented method.")
137137

138138
def _read_lines(self, out):
139-
rs = read_csv(out, index_col=0, parse_dates=True, na_values='-')[::-1]
139+
rs = read_csv(out, index_col=0, parse_dates=True,
140+
na_values=('-', 'null'))[::-1]
140141
# Yahoo! Finance sometimes does this awesome thing where they
141142
# return 2 rows for the most recent business day
142143
if len(rs) > 2 and rs.index[-1] == rs.index[-2]: # pragma: no cover

pandas_datareader/tests/yahoo/test_yahoo.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010

1111
import pandas_datareader.data as web
1212
from pandas_datareader.data import YahooDailyReader
13+
from pandas_datareader._utils import RemoteDataError
1314
from pandas_datareader.yahoo.quotes import _yahoo_codes
15+
from pandas_datareader._testing import skip_on_exception
1416

1517

1618
class TestYahoo(object):
@@ -93,12 +95,14 @@ def test_get_data_single_symbol(self):
9395
# just test that we succeed
9496
web.get_data_yahoo('GOOG')
9597

98+
@skip_on_exception(RemoteDataError)
9699
def test_get_data_adjust_price(self):
97100
goog = web.get_data_yahoo('GOOG')
98101
goog_adj = web.get_data_yahoo('GOOG', adjust_price=True)
99102
assert 'Adj Close' not in goog_adj.columns
100103
assert (goog['Open'] * goog_adj['Adj_Ratio']).equals(goog_adj['Open'])
101104

105+
@skip_on_exception(RemoteDataError)
102106
def test_get_data_interval(self):
103107
# daily interval data
104108
pan = web.get_data_yahoo('XOM', '2013-01-01',
@@ -119,11 +123,13 @@ def test_get_data_interval(self):
119123
with pytest.raises(ValueError):
120124
web.get_data_yahoo('XOM', interval='NOT VALID')
121125

126+
@skip_on_exception(RemoteDataError)
122127
def test_get_data_multiple_symbols(self):
123128
# just test that we succeed
124129
sl = ['AAPL', 'AMZN', 'GOOG']
125130
web.get_data_yahoo(sl, '2012')
126131

132+
@skip_on_exception(RemoteDataError)
127133
def test_get_data_multiple_symbols_two_dates(self):
128134
pan = web.get_data_yahoo(['GE', 'MSFT', 'INTC'], 'JAN-01-12',
129135
'JAN-31-12')
@@ -141,6 +147,7 @@ def test_get_data_multiple_symbols_two_dates(self):
141147
result = df[(df.index >= 'Jan-15-12') & (df.index <= 'Jan-20-12')]
142148
assert expected.shape == result.shape
143149

150+
@skip_on_exception(RemoteDataError)
144151
def test_get_date_ret_index(self):
145152
pan = web.get_data_yahoo(['GE', 'INTC', 'IBM'], '1977', '1987',
146153
ret_index=True)
@@ -154,6 +161,7 @@ def test_get_date_ret_index(self):
154161
# sanity checking
155162
assert np.issubdtype(pan.values.dtype, np.floating)
156163

164+
@skip_on_exception(RemoteDataError)
157165
def test_get_data_yahoo_actions(self):
158166
start = datetime(1990, 1, 1)
159167
end = datetime(2000, 4, 5)
@@ -187,6 +195,7 @@ def test_yahoo_reader_class(self):
187195
r = YahooDailyReader('GOOG', session=session)
188196
assert r.session is session
189197

198+
@skip_on_exception(RemoteDataError)
190199
def test_yahoo_DataReader(self):
191200
start = datetime(2010, 1, 1)
192201
end = datetime(2015, 5, 9)
@@ -210,8 +219,9 @@ def test_yahoo_DataReader(self):
210219
index=exp_idx)
211220
exp.index.name = 'Date'
212221

213-
tm.assert_frame_equal(result, exp)
222+
tm.assert_frame_equal(result.sort(axis=1), exp.sort(axis=1))
214223

224+
@skip_on_exception(RemoteDataError)
215225
def test_yahoo_DataReader_multi(self):
216226
start = datetime(2010, 1, 1)
217227
end = datetime(2015, 5, 9)

0 commit comments

Comments
 (0)