1- import requests
1+ import warnings
2+ from typing import Optional
3+
24import pandas as pd
3- from datetime import datetime
4- from typing import Any , Optional
5+ import requests
56from requests .adapters import HTTPAdapter
67from requests .packages .urllib3 .util .retry import Retry
7- import warnings
88
99warnings .filterwarnings ("ignore" )
1010
1111
1212class MarketHistory (object ):
13- __Crypto_Market_Base_URL = "https://web-api.coinmarketcap.com/v1/cryptocurrency/ohlcv/historical?convert=USD&slug="
13+ __Crypto_Market_Base_URL = "https://web-api.coinmarketcap.com/v1/cryptocurrency/ohlcv/historical?convert=USD&slug=" # noqa
1414
15- def __init__ (self ,
16- base_url : Optional [str ] = __Crypto_Market_Base_URL ) -> None :
15+ def __init__ (
16+ self , base_url : Optional [str ] = __Crypto_Market_Base_URL
17+ ) -> None :
1718 self .base_url = base_url
1819 self .request_timeout = 120
1920
@@ -23,7 +24,7 @@ def __init__(self,
2324 )
2425 self .session .mount ("http://" , HTTPAdapter (max_retries = retries ))
2526
26- def __request (self , url : str ) -> pd .DataFrame :
27+ def __request (self , url : str ) -> Optional [ pd .DataFrame ] :
2728 try :
2829 response = self .session .get (url , timeout = self .request_timeout )
2930 response .raise_for_status ()
@@ -39,10 +40,10 @@ def __request(self, url: str) -> pd.DataFrame:
3940 del df ["timestamp" ]
4041 return df
4142 except Exception as e :
42- raise
43+ raise e
4344
4445 def get_history (
45- self , coin_id : str , start_date : str , end_date : str
46+ self , coin_id : str , start_date : str , end_date : str
4647 ) -> Optional [pd .DataFrame ]:
4748 """
4849 Get historical market data of a cryptocurrency from CoinMarketCap.
@@ -63,12 +64,14 @@ def get_history(
6364 except Exception as e :
6465 print (e )
6566 print (
66- ' Please, check inputs. Coin id, and dates are strings. Date '
67+ " Please, check inputs. Coin id, and dates are strings. Date "
6768 'format is "YYYY-MM-DD"'
6869 )
70+ return None
6971
70- def get_price (self , coin_id : str , start_date : str , end_date : str ) -> \
71- Optional [pd .DataFrame ]:
72+ def get_price (
73+ self , coin_id : str , start_date : str , end_date : str
74+ ) -> Optional [pd .DataFrame ]:
7275 """
7376 Get historical market price data (closing price) of a cryptocurrency
7477 from CoinMarketCap.
@@ -87,12 +90,14 @@ def get_price(self, coin_id: str, start_date: str, end_date: str) -> \
8790
8891 try :
8992 df = self .__request (url )
93+ assert type (df ) == pd .DataFrame
9094 df = df [["date" , "close" ]]
9195 df .columns = ["date" , "price" ]
9296 return df
9397 except Exception as e :
9498 print (
9599 e ,
96- ' Please, check inputs Coin id, and dates are strings. Date '
100+ " Please, check inputs Coin id, and dates are strings. Date "
97101 'format is "YYYY-MM-DD"' ,
98102 )
103+ return None
0 commit comments