11from .base import BaseClient
22from typing import Optional , Any , Dict , List , Union , Iterator
3- from .models import MarketHoliday , MarketStatus , Ticker , TickerDetails , TickerNews , TickerTypes , Sort , Order , AssetClass , Locale
3+ from .models import (
4+ MarketHoliday ,
5+ MarketStatus ,
6+ Ticker ,
7+ TickerDetails ,
8+ TickerNews ,
9+ TickerTypes ,
10+ Sort ,
11+ Order ,
12+ AssetClass ,
13+ Locale ,
14+ Split ,
15+ )
416from urllib3 import HTTPResponse
517
618# https://polygon.io/docs/stocks
719class MarketsClient (BaseClient ):
820 def list_market_holidays (
9- self ,
10- params : Optional [Dict [str , Any ]] = None ,
11- raw : bool = False
21+ self , params : Optional [Dict [str , Any ]] = None , raw : bool = False
1222 ) -> Union [List [MarketHoliday ], HTTPResponse ]:
1323 """
1424 Get upcoming market holidays and their open/close times.
1525
1626 :param params: Any additional query params
1727 :param raw: Return HTTPResponse object instead of results object
1828 :return: List of quotes
19- :rtype: List[Quote]
2029 """
2130 url = "/v1/marketstatus/upcoming"
2231
23- return self ._get (path = url , params = params , deserializer = MarketHoliday .from_dict , raw = raw )
32+ return self ._get (
33+ path = url , params = params , deserializer = MarketHoliday .from_dict , raw = raw
34+ )
2435
2536 def get_market_status (
26- self ,
27- params : Optional [Dict [str , Any ]] = None ,
28- raw : bool = False
37+ self , params : Optional [Dict [str , Any ]] = None , raw : bool = False
2938 ) -> Union [MarketStatus , HTTPResponse ]:
3039 """
3140 Get the current trading status of the exchanges and overall financial markets.
3241
3342 :param params: Any additional query params
3443 :param raw: Return HTTPResponse object instead of results object
3544 :return: List of quotes
36- :rtype: List[Quote]
3745 """
3846 url = "/v1/marketstatus/now"
3947
40- return self ._get (path = url , params = params , deserializer = MarketStatus .from_dict , raw = raw )
48+ return self ._get (
49+ path = url , params = params , deserializer = MarketStatus .from_dict , raw = raw
50+ )
51+
4152
4253class TickersClient (BaseClient ):
4354 def list_tickers (
@@ -65,7 +76,7 @@ def list_tickers(
6576 Query all ticker symbols which are supported by Polygon.io. This API currently includes Stocks/Equities, Crypto, and Forex.
6677
6778 :param ticker: Specify a ticker symbol. Defaults to empty string which queries all tickers.
68- :param ticker_lt: Timestamp less than
79+ :param ticker_lt: Ticker less than
6980 :param ticker_lte: Ticker less than or equal to
7081 :param ticker_gt: Ticker greater than
7182 :param ticker_gte: Ticker greater than or equal to
@@ -83,7 +94,6 @@ def list_tickers(
8394 :param params: Any additional query params
8495 :param raw: Return raw object instead of results object
8596 :return: List of tickers
86- :rtype: List[Ticker]
8797 """
8898 url = "/v3/reference/tickers"
8999
@@ -109,11 +119,12 @@ def get_ticker_details(
109119 :param params: Any additional query params
110120 :param raw: Return raw object instead of results object
111121 :return: Ticker Details V3
112- :rtype: TickerDetail
113122 """
114123 url = f"/v3/reference/tickers/{ ticker } "
115124
116- return self ._get (path = url , params = params , deserializer = TickerDetails .from_dict , raw = raw )
125+ return self ._get (
126+ path = url , params = params , deserializer = TickerDetails .from_dict , raw = raw
127+ )
117128
118129 def get_ticker_news (
119130 self ,
@@ -141,11 +152,12 @@ def get_ticker_news(
141152 :param params: Any additional query params
142153 :param raw: Return raw object instead of results object
143154 :return: Ticker News
144- :rtype: TickerNews
145155 """
146156 url = "/v2/reference/news"
147157
148- return self ._get (path = url , params = params , deserializer = TickerNews .from_dict , raw = raw )
158+ return self ._get (
159+ path = url , params = params , deserializer = TickerNews .from_dict , raw = raw
160+ )
149161
150162 def get_ticker_types (
151163 self ,
@@ -162,8 +174,60 @@ def get_ticker_types(
162174 :param params: Any additional query params
163175 :param raw: Return raw object instead of results object
164176 :return: Ticker Types
165- :rtype: TickerTypes
166177 """
167178 url = "/v3/reference/tickers/types"
168179
169- return self ._get (path = url , params = params , deserializer = TickerTypes .from_dict , raw = raw )
180+ return self ._get (
181+ path = url , params = params , deserializer = TickerTypes .from_dict , raw = raw
182+ )
183+
184+
185+ class SplitsClient (BaseClient ):
186+ def list_splits (
187+ self ,
188+ ticker : Optional [str ] = None ,
189+ ticker_lt : Optional [str ] = None ,
190+ ticker_lte : Optional [str ] = None ,
191+ ticker_gt : Optional [str ] = None ,
192+ ticker_gte : Optional [str ] = None ,
193+ execution_date : Optional [str ] = None ,
194+ execution_lt : Optional [str ] = None ,
195+ execution_lte : Optional [str ] = None ,
196+ execution_gt : Optional [str ] = None ,
197+ execution_gte : Optional [str ] = None ,
198+ reverse_split : Optional [bool ] = None ,
199+ limit : Optional [int ] = None ,
200+ sort : Optional [Union [str , Sort ]] = None ,
201+ order : Optional [Union [str , Order ]] = None ,
202+ params : Optional [Dict [str , Any ]] = None ,
203+ raw : bool = False ,
204+ ) -> Union [Iterator [Split ], HTTPResponse ]:
205+ """
206+ Get a list of historical stock splits, including the ticker symbol, the execution date, and the factors of the split ratio.
207+
208+ :param ticker: Return the stock splits that contain this ticker.
209+ :param ticker_lt: Ticker less than
210+ :param ticker_lte: Ticker less than or equal to
211+ :param ticker_gt: Ticker greater than
212+ :param ticker_gte: Ticker greater than or equal to
213+ :param execution_date: Query by execution date with the format YYYY-MM-DD.
214+ :param execution_date_lt: Execution date less than
215+ :param execution_date_lte: Execution date less than or equal to
216+ :param execution_date_gt: Execution date greater than
217+ :param execution_date_gte: Execution date greater than or equal to
218+ :param reverse_split: Query for reverse stock splits. A split ratio where split_from is greater than split_to represents a reverse split. By default this filter is not used.
219+ :param limit: Limit the number of results returned, default is 10 and max is 1000.
220+ :param sort: Sort field used for ordering.
221+ :param order: Order results based on the sort field.
222+ :param params: Any additional query params
223+ :param raw: Return raw object instead of results object
224+ :return: List of splits
225+ """
226+ url = "/v3/reference/splits"
227+
228+ return self ._paginate (
229+ path = url ,
230+ params = self ._get_params (self .list_splits , locals ()),
231+ raw = raw ,
232+ deserializer = Split .from_dict ,
233+ )
0 commit comments