Skip to content

Commit ce8460f

Browse files
Merge pull request #96 from davidastephens/improve_cover
TST: Improve coverage
2 parents c0e6b74 + 1fdf1c0 commit ce8460f

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

pandas_datareader/fred.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def fetch_data(url, name):
3636
na_values='.')
3737
try:
3838
return data.truncate(start, end)
39-
except KeyError:
39+
except KeyError: # pragma: no cover
4040
if data.ix[3].name[7:12] == 'Error':
4141
raise IOError("Failed to get the data. Check that {0!r} is "
4242
"a valid FRED series.".format(name))

pandas_datareader/tests/test_data.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,12 @@ def test_get_data_single_symbol(self):
216216
# just test that we succeed
217217
web.get_data_yahoo('GOOG')
218218

219+
def test_get_data_adjust_price(self):
220+
goog = web.get_data_yahoo('GOOG')
221+
goog_adj = web.get_data_yahoo('GOOG', adjust_price=True)
222+
self.assertTrue('Adj Close' not in goog_adj.columns)
223+
self.assertTrue((goog['Open']*goog_adj['Adj_Ratio']).equals(goog_adj['Open']))
224+
219225
def test_get_data_interval(self):
220226
# daily interval data
221227
pan = web.get_data_yahoo('XOM', '2013-01-01', '2013-12-31', interval='d')
@@ -404,6 +410,9 @@ def test_chop(self):
404410
chopped = self.aapl.chop_data(self.data1, above_below=2, underlying_price=100)
405411
self.assert_(isinstance(chopped, DataFrame))
406412
self.assertTrue(len(chopped) > 1)
413+
chopped2 = self.aapl.chop_data(self.data1, above_below=2, underlying_price=None)
414+
self.assert_(isinstance(chopped2, DataFrame))
415+
self.assertTrue(len(chopped2) > 1)
407416

408417
def test_chop_out_of_strike_range(self):
409418
#regression test for #7625

pandas_datareader/yahoo/components.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
_URL = 'http://download.finance.yahoo.com/d/quotes.csv?'
55

66

7-
def _get_data(idx_sym):
7+
def _get_data(idx_sym): # pragma: no cover
88
"""
99
Returns DataFrame containing list of component information for
1010
index represented in idx_sym from yahoo. Includes component symbol

pandas_datareader/yahoo/options.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def _yahoo_url_from_expiry(self, expiry):
150150
try:
151151
expiry_links = self._expiry_links
152152

153-
except AttributeError:
153+
except AttributeError: # pragma: no cover
154154
_, expiry_links = self._get_expiry_dates_and_links()
155155

156156
return self._FINANCE_BASE_URL + expiry_links[expiry]
@@ -478,7 +478,7 @@ def _validate_expiry(self, expiry):
478478
return index[index.date >= expiry][0].date()
479479

480480
def get_forward_data(self, months, call=True, put=False, near=False,
481-
above_below=2):
481+
above_below=2): # pragma: no cover
482482
"""
483483
***Experimental***
484484
Gets either call, put, or both data for months starting in the current
@@ -624,14 +624,14 @@ def _get_expiry_dates_and_links(self):
624624

625625
try:
626626
links = root.xpath('//*[@id="options_menu"]/form/select/option')
627-
except IndexError:
627+
except IndexError: # pragma: no cover
628628
raise RemoteDataError('Expiry dates not available')
629629

630630
expiry_dates = [dt.datetime.strptime(element.text, "%B %d, %Y").date() for element in links]
631631
links = [element.attrib['data-selectbox-link'] for element in links]
632632

633633
if len(expiry_dates) == 0:
634-
raise RemoteDataError('Data not available')
634+
raise RemoteDataError('Data not available') # pragma: no cover
635635

636636
expiry_links = dict(zip(expiry_dates, links))
637637
self._expiry_links = expiry_links
@@ -645,17 +645,17 @@ def _parse_url(self, url):
645645
"""
646646
try:
647647
from lxml.html import parse
648-
except ImportError:
648+
except ImportError: # pragma: no cover
649649
raise ImportError("Please install lxml if you want to use the "
650650
"{0!r} class".format(self.__class__.__name__))
651651
try:
652652
doc = parse(url)
653-
except _network_error_classes:
653+
except _network_error_classes: # pragma: no cover
654654
raise RemoteDataError("Unable to parse URL "
655655
"{0!r}".format(url))
656656
else:
657657
root = doc.getroot()
658-
if root is None:
658+
if root is None: # pragma: no cover
659659
raise RemoteDataError("Parsed URL {0!r} has no root"
660660
"element".format(url))
661661
return root
@@ -678,7 +678,7 @@ def _process_data(self, frame, type):
678678
try:
679679
frame['Underlying_Price'] = self.underlying_price
680680
frame["Quote_Time"] = self.quote_time
681-
except AttributeError:
681+
except AttributeError: # pragma: no cover
682682
frame['Underlying_Price'] = np.nan
683683
frame["Quote_Time"] = np.nan
684684
frame.rename(columns={'Open Int': 'Open_Int'}, inplace=True)

0 commit comments

Comments
 (0)