Updated frequency error check

This commit is contained in:
Davis Thames
2018-07-04 07:34:50 -04:00
parent ec15ef85d6
commit 3fbb6e5121
2 changed files with 14 additions and 6 deletions

View File

@@ -6,6 +6,7 @@ from unittest import TestCase
import vcr import vcr
from tiingo import TiingoClient from tiingo import TiingoClient
from tiingo.api import InvalidFrequencyError
from tiingo.restclient import RestClientError from tiingo.restclient import RestClientError
@@ -124,6 +125,13 @@ class TestTickerPrices(TestCase):
assert len(tickers) > 1 assert len(tickers) > 1
assert all(ticker['assetType'] == 'ETF' for ticker in tickers) assert all(ticker['assetType'] == 'ETF' for ticker in tickers)
def test_invalid_frequency_error(self):
with self.assertRaises(InvalidFrequencyError):
prices = self._client.get_ticker_price("GOOGL",
startDate="2018-01-02",
endDate="2018-01-02",
frequency="1.5mins")
# tiingo/news # tiingo/news
class TestNews(TestCase): class TestNews(TestCase):

View File

@@ -9,6 +9,8 @@ from collections import namedtuple
from zipfile import ZipFile from zipfile import ZipFile
from tiingo.restclient import RestClient from tiingo.restclient import RestClient
import requests import requests
import re
try: try:
import pandas as pd import pandas as pd
pandas_is_installed = True pandas_is_installed = True
@@ -86,6 +88,8 @@ class TiingoClient(RestClient):
'User-Agent': 'tiingo-python-client {}'.format(VERSION) 'User-Agent': 'tiingo-python-client {}'.format(VERSION)
} }
self._frequency_pattern = re.compile('^[0-9]+(min)$|(hour)$', re.IGNORECASE)
def __repr__(self): def __repr__(self):
return '<TiingoClient(url="{}")>'.format(self._base_url) return '<TiingoClient(url="{}")>'.format(self._base_url)
@@ -139,12 +143,8 @@ class TiingoClient(RestClient):
:return (boolean): :return (boolean):
""" """
daily_freqs = ['daily', 'weekly', 'monthly', 'annually'] daily_freqs = ['daily', 'weekly', 'monthly', 'annually']
intraday_freqs = ['min', 'hour']
if frequency.lower() in daily_freqs: if frequency.lower() in daily_freqs or re.match(self._frequency_pattern, frequency):
return False
elif intraday_freqs[0] in frequency.lower() or \
intraday_freqs[1] in frequency.lower():
return False return False
else: else:
return True return True
@@ -159,7 +159,7 @@ class TiingoClient(RestClient):
if self._invalid_frequency(frequency): if self._invalid_frequency(frequency):
etext = ("Error: {} is an invalid frequency. Check Tiingo API documentation " etext = ("Error: {} is an invalid frequency. Check Tiingo API documentation "
"for valid EOD or intraday frequency format.") "for valid EOD or intraday frequency format.")
raise self.InvalidFrequencyError(etext.format(frequency)) raise InvalidFrequencyError(etext.format(frequency))
else: else:
if frequency.lower() in ['daily', 'weekly', 'monthly', 'annually']: if frequency.lower() in ['daily', 'weekly', 'monthly', 'annually']:
return "tiingo/daily/{}/prices" return "tiingo/daily/{}/prices"