Skip to content

Commit 4c97bbf

Browse files
committed
Passing 31/33 endpoints
Little cleanup (need to learn how to automate that on templating) Better type hinting
1 parent 2d45f1f commit 4c97bbf

File tree

5 files changed

+712
-688
lines changed

5 files changed

+712
-688
lines changed

polygon/rest/client.py

Lines changed: 98 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Dict
1+
from typing import Dict, Type
22

33
import requests
44

@@ -17,165 +17,185 @@ def __init__(self, auth_key: str):
1717
self._session = requests.Session()
1818
self._session.params["apiKey"] = self.auth_key
1919

20-
def _handle_response(self, response_type: str, endpoint: str, params: Dict[str, str]) -> models.Definition:
20+
def _handle_response(self, response_type: str, endpoint: str, params: Dict[str, str]) -> Type[models.AnyDefinition]:
2121
resp: requests.Response = self._session.get(endpoint, params=params)
2222
if resp.status_code == 200:
2323
return unmarshal.unmarshal_json(response_type, resp.json())
2424
else:
2525
resp.raise_for_status()
2626

27-
def tickers(self, **query_params):
27+
def reference_tickers(self, **query_params) -> models.ReferenceTickersApiResponse:
2828
endpoint = f"{self.url}/v2/reference/tickers"
29-
return self._handle_response("TickersApiResponse", endpoint, query_params)
29+
return self._handle_response("ReferenceTickersApiResponse", endpoint, query_params)
3030

31-
def ticker_types(self, **query_params):
31+
def reference_ticker_types(self, **query_params) -> models.ReferenceTickerTypesApiResponse:
3232
endpoint = f"{self.url}/v2/reference/types"
33-
return self._handle_response("TickerTypesApiResponse", endpoint, query_params)
33+
return self._handle_response("ReferenceTickerTypesApiResponse", endpoint, query_params)
3434

35-
def ticker_details(self, symbol, **query_params):
35+
def reference_ticker_details(self, symbol, **query_params) -> models.ReferenceTickerDetailsApiResponse:
3636
endpoint = f"{self.url}/v1/meta/symbols/{symbol}/company"
37-
return self._handle_response("TickerDetailsApiResponse", endpoint, query_params)
37+
return self._handle_response("ReferenceTickerDetailsApiResponse", endpoint, query_params)
3838

39-
def ticker_news(self, symbol, **query_params):
39+
def reference_ticker_news(self, symbol, **query_params) -> models.ReferenceTickerNewsApiResponse:
4040
endpoint = f"{self.url}/v1/meta/symbols/{symbol}/news"
41-
return self._handle_response("TickerNewsApiResponse", endpoint, query_params)
41+
return self._handle_response("ReferenceTickerNewsApiResponse", endpoint, query_params)
4242

43-
def markets(self, **query_params):
43+
def reference_markets(self, **query_params) -> models.ReferenceMarketsApiResponse:
4444
endpoint = f"{self.url}/v2/reference/markets"
45-
return self._handle_response("MarketsApiResponse", endpoint, query_params)
45+
return self._handle_response("ReferenceMarketsApiResponse", endpoint, query_params)
4646

47-
def locales(self, **query_params):
47+
def reference_locales(self, **query_params) -> models.ReferenceLocalesApiResponse:
4848
endpoint = f"{self.url}/v2/reference/locales"
49-
return self._handle_response("LocalesApiResponse", endpoint, query_params)
49+
return self._handle_response("ReferenceLocalesApiResponse", endpoint, query_params)
5050

51-
def stock_splits(self, symbol, **query_params):
51+
def reference_stock_splits(self, symbol, **query_params) -> models.ReferenceStockSplitsApiResponse:
5252
endpoint = f"{self.url}/v2/reference/splits/{symbol}"
53-
return self._handle_response("StockSplitsApiResponse", endpoint, query_params)
53+
return self._handle_response("ReferenceStockSplitsApiResponse", endpoint, query_params)
5454

55-
def stock_dividends(self, symbol, **query_params):
55+
def reference_stock_dividends(self, symbol, **query_params) -> models.ReferenceStockDividendsApiResponse:
5656
endpoint = f"{self.url}/v2/reference/dividends/{symbol}"
57-
return self._handle_response("StockDividendsApiResponse", endpoint, query_params)
57+
return self._handle_response("ReferenceStockDividendsApiResponse", endpoint, query_params)
5858

59-
def stock_financials(self, symbol, **query_params):
59+
def reference_stock_financials(self, symbol, **query_params) -> models.ReferenceStockFinancialsApiResponse:
6060
endpoint = f"{self.url}/v2/reference/financials/{symbol}"
61-
return self._handle_response("StockFinancialsApiResponse", endpoint, query_params)
61+
return self._handle_response("ReferenceStockFinancialsApiResponse", endpoint, query_params)
6262

63-
def market_status(self, **query_params):
63+
def reference_market_status(self, **query_params) -> models.ReferenceMarketStatusApiResponse:
6464
endpoint = f"{self.url}/v1/marketstatus/now"
65-
return self._handle_response("MarketStatusApiResponse", endpoint, query_params)
65+
return self._handle_response("ReferenceMarketStatusApiResponse", endpoint, query_params)
6666

67-
def market_holidays(self, **query_params):
67+
def reference_market_holidays(self, **query_params) -> models.ReferenceMarketHolidaysApiResponse:
6868
endpoint = f"{self.url}/v1/marketstatus/upcoming"
69-
return self._handle_response("MarketHolidaysApiResponse", endpoint, query_params)
69+
return self._handle_response("ReferenceMarketHolidaysApiResponse", endpoint, query_params)
7070

71-
def exchanges(self, **query_params):
71+
def stocks_equities_exchanges(self, **query_params) -> models.StocksEquitiesExchangesApiResponse:
7272
endpoint = f"{self.url}/v1/meta/exchanges"
73-
return self._handle_response("ExchangesApiResponse", endpoint, query_params)
73+
return self._handle_response("StocksEquitiesExchangesApiResponse", endpoint, query_params)
7474

75-
def historic_trades(self, symbol, date, **query_params):
75+
def stocks_equities_historic_trades(self, symbol, date,
76+
**query_params) -> models.StocksEquitiesHistoricTradesApiResponse:
7677
endpoint = f"{self.url}/v1/historic/trades/{symbol}/{date}"
77-
return self._handle_response("HistoricTradesApiResponse", endpoint, query_params)
78+
return self._handle_response("StocksEquitiesHistoricTradesApiResponse", endpoint, query_params)
7879

79-
def historic_trades_v2(self, ticker, date, **query_params):
80+
def historic_trades_v2(self, ticker, date, **query_params) -> models.HistoricTradesV2ApiResponse:
8081
endpoint = f"{self.url}/v2/ticks/stocks/trades/{ticker}/{date}"
8182
return self._handle_response("HistoricTradesV2ApiResponse", endpoint, query_params)
8283

83-
def historic_quotes(self, symbol, date, **query_params):
84+
def stocks_equities_historic_quotes(self, symbol, date,
85+
**query_params) -> models.StocksEquitiesHistoricQuotesApiResponse:
8486
endpoint = f"{self.url}/v1/historic/quotes/{symbol}/{date}"
85-
return self._handle_response("HistoricQuotesApiResponse", endpoint, query_params)
87+
return self._handle_response("StocksEquitiesHistoricQuotesApiResponse", endpoint, query_params)
8688

87-
def historic_n___bbo_quotes_v2(self, ticker, date, **query_params):
89+
def historic_n___bbo_quotes_v2(self, ticker, date, **query_params) -> models.HistoricNBboQuotesV2ApiResponse:
8890
endpoint = f"{self.url}/v2/ticks/stocks/nbbo/{ticker}/{date}"
8991
return self._handle_response("HistoricNBboQuotesV2ApiResponse", endpoint, query_params)
9092

91-
def last_trade_for_a_symbol(self, symbol, **query_params):
93+
def stocks_equities_last_trade_for_a_symbol(self, symbol,
94+
**query_params) -> models.StocksEquitiesLastTradeForASymbolApiResponse:
9295
endpoint = f"{self.url}/v1/last/stocks/{symbol}"
93-
return self._handle_response("LastTradeForASymbolApiResponse", endpoint, query_params)
96+
return self._handle_response("StocksEquitiesLastTradeForASymbolApiResponse", endpoint, query_params)
9497

95-
def last_quote_for_a_symbol(self, symbol, **query_params):
98+
def stocks_equities_last_quote_for_a_symbol(self, symbol,
99+
**query_params) -> models.StocksEquitiesLastQuoteForASymbolApiResponse:
96100
endpoint = f"{self.url}/v1/last_quote/stocks/{symbol}"
97-
return self._handle_response("LastQuoteForASymbolApiResponse", endpoint, query_params)
101+
return self._handle_response("StocksEquitiesLastQuoteForASymbolApiResponse", endpoint, query_params)
98102

99-
def daily_open_close(self, symbol, date, **query_params):
103+
def stocks_equities_daily_open_close(self, symbol, date,
104+
**query_params) -> models.StocksEquitiesDailyOpenCloseApiResponse:
100105
endpoint = f"{self.url}/v1/open-close/{symbol}/{date}"
101-
return self._handle_response("DailyOpenCloseApiResponse", endpoint, query_params)
106+
return self._handle_response("StocksEquitiesDailyOpenCloseApiResponse", endpoint, query_params)
102107

103-
def condition_mappings(self, ticktype, **query_params):
108+
def stocks_equities_condition_mappings(self, ticktype,
109+
**query_params) -> models.StocksEquitiesConditionMappingsApiResponse:
104110
endpoint = f"{self.url}/v1/meta/conditions/{ticktype}"
105-
return self._handle_response("ConditionMappingsApiResponse", endpoint, query_params)
111+
return self._handle_response("StocksEquitiesConditionMappingsApiResponse", endpoint, query_params)
106112

107-
def snapshot_all_tickers(self, **query_params):
113+
def stocks_equities_snapshot_all_tickers(self,
114+
**query_params) -> models.StocksEquitiesSnapshotAllTickersApiResponse:
108115
endpoint = f"{self.url}/v2/snapshot/locale/us/markets/stocks/tickers"
109-
return self._handle_response("SnapshotAllTickersApiResponse", endpoint, query_params)
116+
return self._handle_response("StocksEquitiesSnapshotAllTickersApiResponse", endpoint, query_params)
110117

111-
def snapshot_single_ticker(self, ticker, **query_params):
118+
def stocks_equities_snapshot_single_ticker(self, ticker,
119+
**query_params) -> models.StocksEquitiesSnapshotSingleTickerApiResponse:
112120
endpoint = f"{self.url}/v2/snapshot/locale/us/markets/stocks/tickers/{ticker}"
113-
return self._handle_response("SnapshotSingleTickerApiResponse", endpoint, query_params)
121+
return self._handle_response("StocksEquitiesSnapshotSingleTickerApiResponse", endpoint, query_params)
114122

115-
def snapshot_gainers_losers(self, direction, **query_params):
123+
def stocks_equities_snapshot_gainers_losers(self, direction,
124+
**query_params) -> models.StocksEquitiesSnapshotGainersLosersApiResponse:
116125
endpoint = f"{self.url}/v2/snapshot/locale/us/markets/stocks/{direction}"
117-
return self._handle_response("SnapshotGainersLosersApiResponse", endpoint, query_params)
126+
return self._handle_response("StocksEquitiesSnapshotGainersLosersApiResponse", endpoint, query_params)
118127

119-
def previous_close(self, ticker, **query_params):
128+
def stocks_equities_previous_close(self, ticker, **query_params) -> models.StocksEquitiesPreviousCloseApiResponse:
120129
endpoint = f"{self.url}/v2/aggs/ticker/{ticker}/prev"
121-
return self._handle_response("PreviousCloseApiResponse", endpoint, query_params)
130+
return self._handle_response("StocksEquitiesPreviousCloseApiResponse", endpoint, query_params)
122131

123-
def aggregates(self, ticker, multiplier, timespan, from_, to, **query_params):
132+
def stocks_equities_aggregates(self, ticker, multiplier, timespan, from_, to,
133+
**query_params) -> models.StocksEquitiesAggregatesApiResponse:
124134
endpoint = f"{self.url}/v2/aggs/ticker/{ticker}/range/{multiplier}/{timespan}/{from_}/{to}"
125-
return self._handle_response("AggregatesApiResponse", endpoint, query_params)
135+
return self._handle_response("StocksEquitiesAggregatesApiResponse", endpoint, query_params)
126136

127-
def grouped_daily(self, locale, market, date, **query_params):
137+
def stocks_equities_grouped_daily(self, locale, market, date,
138+
**query_params) -> models.StocksEquitiesGroupedDailyApiResponse:
128139
endpoint = f"{self.url}/v2/aggs/grouped/locale/{locale}/market/{market}/{date}"
129-
return self._handle_response("GroupedDailyApiResponse", endpoint, query_params)
140+
return self._handle_response("StocksEquitiesGroupedDailyApiResponse", endpoint, query_params)
130141

131-
def historic_forex_ticks(self, from_, to, date, **query_params):
142+
def forex_currencies_historic_forex_ticks(self, from_, to, date,
143+
**query_params) -> models.ForexCurrenciesHistoricForexTicksApiResponse:
132144
endpoint = f"{self.url}/v1/historic/forex/{from_}/{to}/{date}"
133-
return self._handle_response("HistoricForexTicksApiResponse", endpoint, query_params)
145+
return self._handle_response("ForexCurrenciesHistoricForexTicksApiResponse", endpoint, query_params)
134146

135-
def real_time_currency_conversion(self, from_, to, **query_params):
147+
def forex_currencies_real_time_currency_conversion(self, from_, to,
148+
**query_params) -> models.ForexCurrenciesRealTimeCurrencyConversionApiResponse:
136149
endpoint = f"{self.url}/v1/conversion/{from_}/{to}"
137-
return self._handle_response("RealTimeCurrencyConversionApiResponse", endpoint, query_params)
150+
return self._handle_response("ForexCurrenciesRealTimeCurrencyConversionApiResponse", endpoint, query_params)
138151

139-
def last_quote_for_a_currency_pair(self, from_, to, **query_params):
152+
def forex_currencies_last_quote_for_a_currency_pair(self, from_, to,
153+
**query_params) -> models.ForexCurrenciesLastQuoteForACurrencyPairApiResponse:
140154
endpoint = f"{self.url}/v1/last_quote/currencies/{from_}/{to}"
141-
return self._handle_response("LastQuoteForACurrencyPairApiResponse", endpoint, query_params)
155+
return self._handle_response("ForexCurrenciesLastQuoteForACurrencyPairApiResponse", endpoint, query_params)
142156

143-
def snapshot_all_tickers(self, **query_params):
157+
def forex_currencies_snapshot_all_tickers(self,
158+
**query_params) -> models.ForexCurrenciesSnapshotAllTickersApiResponse:
144159
endpoint = f"{self.url}/v2/snapshot/locale/global/markets/forex/tickers"
145-
return self._handle_response("SnapshotAllTickersApiResponse", endpoint, query_params)
160+
return self._handle_response("ForexCurrenciesSnapshotAllTickersApiResponse", endpoint, query_params)
146161

147-
def snapshot_gainers_losers(self, direction, **query_params):
162+
def forex_currencies_snapshot_gainers_losers(self, direction,
163+
**query_params) -> models.ForexCurrenciesSnapshotGainersLosersApiResponse:
148164
endpoint = f"{self.url}/v2/snapshot/locale/global/markets/forex/{direction}"
149-
return self._handle_response("SnapshotGainersLosersApiResponse", endpoint, query_params)
165+
return self._handle_response("ForexCurrenciesSnapshotGainersLosersApiResponse", endpoint, query_params)
150166

151-
def crypto_exchanges(self, **query_params):
167+
def crypto_crypto_exchanges(self, **query_params) -> models.CryptoCryptoExchangesApiResponse:
152168
endpoint = f"{self.url}/v1/meta/crypto-exchanges"
153-
return self._handle_response("CryptoExchangesApiResponse", endpoint, query_params)
169+
return self._handle_response("CryptoCryptoExchangesApiResponse", endpoint, query_params)
154170

155-
def last_trade_for_a_crypto_pair(self, from_, to, **query_params):
171+
def crypto_last_trade_for_a_crypto_pair(self, from_, to,
172+
**query_params) -> models.CryptoLastTradeForACryptoPairApiResponse:
156173
endpoint = f"{self.url}/v1/last/crypto/{from_}/{to}"
157-
return self._handle_response("LastTradeForACryptoPairApiResponse", endpoint, query_params)
174+
return self._handle_response("CryptoLastTradeForACryptoPairApiResponse", endpoint, query_params)
158175

159-
def daily_open_close(self, from_, to, date, **query_params):
176+
def crypto_daily_open_close(self, from_, to, date, **query_params) -> models.CryptoDailyOpenCloseApiResponse:
160177
endpoint = f"{self.url}/v1/open-close/crypto/{from_}/{to}/{date}"
161-
return self._handle_response("DailyOpenCloseApiResponse", endpoint, query_params)
178+
return self._handle_response("CryptoDailyOpenCloseApiResponse", endpoint, query_params)
162179

163-
def historic_crypto_trades(self, from_, to, date, **query_params):
180+
def crypto_historic_crypto_trades(self, from_, to, date,
181+
**query_params) -> models.CryptoHistoricCryptoTradesApiResponse:
164182
endpoint = f"{self.url}/v1/historic/crypto/{from_}/{to}/{date}"
165-
return self._handle_response("HistoricCryptoTradesApiResponse", endpoint, query_params)
183+
return self._handle_response("CryptoHistoricCryptoTradesApiResponse", endpoint, query_params)
166184

167-
def snapshot_all_tickers(self, **query_params):
185+
def crypto_snapshot_all_tickers(self, **query_params) -> models.CryptoSnapshotAllTickersApiResponse:
168186
endpoint = f"{self.url}/v2/snapshot/locale/global/markets/crypto/tickers"
169-
return self._handle_response("SnapshotAllTickersApiResponse", endpoint, query_params)
187+
return self._handle_response("CryptoSnapshotAllTickersApiResponse", endpoint, query_params)
170188

171-
def snapshot_single_ticker(self, ticker, **query_params):
189+
def crypto_snapshot_single_ticker(self, ticker, **query_params) -> models.CryptoSnapshotSingleTickerApiResponse:
172190
endpoint = f"{self.url}/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}"
173-
return self._handle_response("SnapshotSingleTickerApiResponse", endpoint, query_params)
191+
return self._handle_response("CryptoSnapshotSingleTickerApiResponse", endpoint, query_params)
174192

175-
def snapshot_single_ticker_full_book(self, ticker, **query_params):
193+
def crypto_snapshot_single_ticker_full_book(self, ticker,
194+
**query_params) -> models.CryptoSnapshotSingleTickerFullBookApiResponse:
176195
endpoint = f"{self.url}/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book"
177-
return self._handle_response("SnapshotSingleTickerFullBookApiResponse", endpoint, query_params)
196+
return self._handle_response("CryptoSnapshotSingleTickerFullBookApiResponse", endpoint, query_params)
178197

179-
def snapshot_gainers_losers(self, direction, **query_params):
198+
def crypto_snapshot_gainers_losers(self, direction,
199+
**query_params) -> models.CryptoSnapshotGainersLosersApiResponse:
180200
endpoint = f"{self.url}/v2/snapshot/locale/global/markets/crypto/{direction}"
181-
return self._handle_response("SnapshotGainersLosersApiResponse", endpoint, query_params)
201+
return self._handle_response("CryptoSnapshotGainersLosersApiResponse", endpoint, query_params)

0 commit comments

Comments
 (0)