Skip to content

Commit e73c0fb

Browse files
committed
CLN/BUG: Fix test errors in IEX
Fix test errors in IEX Mark API as unstable
1 parent 4fb9a40 commit e73c0fb

File tree

5 files changed

+30
-9
lines changed

5 files changed

+30
-9
lines changed

pandas_datareader/exceptions.py

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"""Custom warnings and exceptions"""
2+
3+
4+
class UnstableAPIWarning(Warning):
5+
pass

pandas_datareader/iex/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ def url(self):
3939

4040
def read(self):
4141
df = super(IEX, self).read()
42+
if isinstance(df, pd.DataFrame):
43+
df = df.squeeze()
44+
if not isinstance(df, pd.DataFrame):
45+
df = pd.DataFrame(df)
4246
return df
4347

4448
def _get_params(self, symbols):

pandas_datareader/iex/deep.py

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
class Deep(IEX):
1212
def __init__(self, symbols=None, service=None, start=None, end=None,
1313
retry_count=3, pause=0.001, session=None):
14+
if isinstance(symbols, str):
15+
symbols = symbols.lower()
16+
else:
17+
symbols = [s.lower() for s in symbols]
18+
1419
super(Deep, self).__init__(symbols=symbols,
1520
start=start, end=end,
1621
retry_count=retry_count,

pandas_datareader/iex/stats.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
import pandas as pd
21
from datetime import datetime, timedelta
2+
3+
import pandas as pd
4+
5+
from pandas_datareader.exceptions import UnstableAPIWarning
36
from pandas_datareader.iex import IEX
47

8+
59
# Data provided for free by IEX
610
# Data is furnished in compliance with the guidelines promulgated in the IEX
711
# API terms of service and manual
@@ -12,6 +16,9 @@
1216
class DailySummaryReader(IEX):
1317
def __init__(self, symbols=None, start=None, end=None, retry_count=3,
1418
pause=0.001, session=None):
19+
import warnings
20+
warnings.warn('Daily statistics is not working due to issues with the '
21+
'IEX API', UnstableAPIWarning)
1522
self.curr_date = start
1623
super(DailySummaryReader, self).__init__(symbols=symbols,
1724
start=start, end=end,

pandas_datareader/tests/test_iex.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import pytest
2-
3-
import pandas.util.testing as tm
1+
from datetime import datetime
42

3+
import pytest
54
from pandas import DataFrame
6-
from datetime import datetime, timedelta
5+
76
from pandas_datareader.data import (DataReader, get_summary_iex, get_last_iex,
87
get_dailysummary_iex, get_iex_symbols,
98
get_iex_book)
@@ -25,8 +24,10 @@ def test_historical(self):
2524

2625
def test_false_ticker(self):
2726
df = get_last_iex("INVALID TICKER")
28-
tm.assert_frame_equal(df, DataFrame())
27+
assert df.shape[0] == 0
2928

29+
@pytest.mark.xfail(reason='IEX daily history API is returning 500 as of '
30+
'Jan 2018')
3031
def test_daily(self):
3132
df = get_dailysummary_iex(start=datetime(2017, 5, 5),
3233
end=datetime(2017, 5, 6))
@@ -43,6 +44,5 @@ def test_live_prices(self):
4344
assert df["price"].mean() > 0
4445

4546
def test_deep(self):
46-
dob = get_iex_book('GS', service='system-event')
47-
assert len(dob['eventResponse']) > 0
48-
assert dob['timestamp'] > datetime.now() - timedelta(days=1)
47+
dob = get_iex_book('GS', service='book')
48+
assert 'GS' in dob

0 commit comments

Comments
 (0)