mirror of
https://github.com/hydrosquall/tiingo-python.git
synced 2025-12-18 04:14:20 +01:00
Updated frequency error check
This commit is contained in:
@@ -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):
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user