Skip to content

Commit 154061d

Browse files
Adds support for ETF Global endpoints (#940)
1 parent d3fd9c5 commit 154061d

File tree

3 files changed

+635
-0
lines changed

3 files changed

+635
-0
lines changed

polygon/rest/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from .financials import FinancialsClient
44
from .benzinga import BenzingaClient
55
from .economy import EconomyClient
6+
from .etf_global import EtfGlobalClient
67
from .tmx import TmxClient
78
from .trades import TradesClient
89
from .quotes import QuotesClient
@@ -32,6 +33,7 @@ class RESTClient(
3233
FinancialsClient,
3334
BenzingaClient,
3435
EconomyClient,
36+
EtfGlobalClient,
3537
TmxClient,
3638
TradesClient,
3739
QuotesClient,

polygon/rest/etf_global.py

Lines changed: 282 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,282 @@
1+
from typing import Optional, Any, Dict, List, Union, Iterator
2+
from urllib3 import HTTPResponse
3+
from datetime import datetime, date
4+
5+
from .base import BaseClient
6+
from .models.etf_global import (
7+
EtfGlobalAnalytics,
8+
EtfGlobalConstituent,
9+
EtfGlobalFundFlow,
10+
EtfGlobalProfile,
11+
EtfGlobalTaxonomy,
12+
)
13+
from .models.common import Sort
14+
from .models.request import RequestOptionBuilder
15+
16+
17+
class EtfGlobalClient(BaseClient):
18+
"""
19+
Client for the ETF Global REST Endpoints
20+
(aligned with the paths from /etf-global/v1/...)
21+
"""
22+
23+
def get_etf_global_analytics(
24+
self,
25+
composite_ticker: Optional[str] = None,
26+
composite_ticker_any_of: Optional[str] = None,
27+
composite_ticker_gt: Optional[str] = None,
28+
composite_ticker_gte: Optional[str] = None,
29+
composite_ticker_lt: Optional[str] = None,
30+
composite_ticker_lte: Optional[str] = None,
31+
processed_date: Optional[Union[str, date]] = None,
32+
processed_date_gt: Optional[Union[str, date]] = None,
33+
processed_date_gte: Optional[Union[str, date]] = None,
34+
processed_date_lt: Optional[Union[str, date]] = None,
35+
processed_date_lte: Optional[Union[str, date]] = None,
36+
effective_date: Optional[Union[str, date]] = None,
37+
effective_date_gt: Optional[Union[str, date]] = None,
38+
effective_date_gte: Optional[Union[str, date]] = None,
39+
effective_date_lt: Optional[Union[str, date]] = None,
40+
effective_date_lte: Optional[Union[str, date]] = None,
41+
risk_total_score: Optional[float] = None,
42+
risk_total_score_gt: Optional[float] = None,
43+
risk_total_score_gte: Optional[float] = None,
44+
risk_total_score_lt: Optional[float] = None,
45+
risk_total_score_lte: Optional[float] = None,
46+
reward_score: Optional[float] = None,
47+
reward_score_gt: Optional[float] = None,
48+
reward_score_gte: Optional[float] = None,
49+
reward_score_lt: Optional[float] = None,
50+
reward_score_lte: Optional[float] = None,
51+
quant_total_score: Optional[float] = None,
52+
quant_total_score_gt: Optional[float] = None,
53+
quant_total_score_gte: Optional[float] = None,
54+
quant_total_score_lt: Optional[float] = None,
55+
quant_total_score_lte: Optional[float] = None,
56+
quant_grade: Optional[str] = None,
57+
quant_grade_any_of: Optional[str] = None,
58+
quant_grade_gt: Optional[str] = None,
59+
quant_grade_gte: Optional[str] = None,
60+
quant_grade_lt: Optional[str] = None,
61+
quant_grade_lte: Optional[str] = None,
62+
quant_composite_technical: Optional[float] = None,
63+
quant_composite_technical_gt: Optional[float] = None,
64+
quant_composite_technical_gte: Optional[float] = None,
65+
quant_composite_technical_lt: Optional[float] = None,
66+
quant_composite_technical_lte: Optional[float] = None,
67+
quant_composite_sentiment: Optional[float] = None,
68+
quant_composite_sentiment_gt: Optional[float] = None,
69+
quant_composite_sentiment_gte: Optional[float] = None,
70+
quant_composite_sentiment_lt: Optional[float] = None,
71+
quant_composite_sentiment_lte: Optional[float] = None,
72+
quant_composite_behavioral: Optional[float] = None,
73+
quant_composite_behavioral_gt: Optional[float] = None,
74+
quant_composite_behavioral_gte: Optional[float] = None,
75+
quant_composite_behavioral_lt: Optional[float] = None,
76+
quant_composite_behavioral_lte: Optional[float] = None,
77+
quant_composite_fundamental: Optional[float] = None,
78+
quant_composite_fundamental_gt: Optional[float] = None,
79+
quant_composite_fundamental_gte: Optional[float] = None,
80+
quant_composite_fundamental_lt: Optional[float] = None,
81+
quant_composite_fundamental_lte: Optional[float] = None,
82+
quant_composite_global: Optional[float] = None,
83+
quant_composite_global_gt: Optional[float] = None,
84+
quant_composite_global_gte: Optional[float] = None,
85+
quant_composite_global_lt: Optional[float] = None,
86+
quant_composite_global_lte: Optional[float] = None,
87+
quant_composite_quality: Optional[float] = None,
88+
quant_composite_quality_gt: Optional[float] = None,
89+
quant_composite_quality_gte: Optional[float] = None,
90+
quant_composite_quality_lt: Optional[float] = None,
91+
quant_composite_quality_lte: Optional[float] = None,
92+
limit: Optional[int] = None,
93+
sort: Optional[Union[str, Sort]] = None,
94+
params: Optional[Dict[str, Any]] = None,
95+
raw: bool = False,
96+
options: Optional[RequestOptionBuilder] = None,
97+
) -> Union[Iterator[EtfGlobalAnalytics], HTTPResponse]:
98+
"""
99+
Endpoint: GET /etf-global/v1/analytics
100+
"""
101+
url = "/etf-global/v1/analytics"
102+
return self._paginate(
103+
path=url,
104+
params=self._get_params(self.get_etf_global_analytics, locals()),
105+
raw=raw,
106+
deserializer=EtfGlobalAnalytics.from_dict,
107+
options=options,
108+
)
109+
110+
def get_etf_global_constituents(
111+
self,
112+
composite_ticker: Optional[str] = None,
113+
composite_ticker_any_of: Optional[str] = None,
114+
composite_ticker_gt: Optional[str] = None,
115+
composite_ticker_gte: Optional[str] = None,
116+
composite_ticker_lt: Optional[str] = None,
117+
composite_ticker_lte: Optional[str] = None,
118+
constituent_ticker: Optional[str] = None,
119+
constituent_ticker_any_of: Optional[str] = None,
120+
constituent_ticker_gt: Optional[str] = None,
121+
constituent_ticker_gte: Optional[str] = None,
122+
constituent_ticker_lt: Optional[str] = None,
123+
constituent_ticker_lte: Optional[str] = None,
124+
effective_date: Optional[Union[str, date]] = None,
125+
effective_date_gt: Optional[Union[str, date]] = None,
126+
effective_date_gte: Optional[Union[str, date]] = None,
127+
effective_date_lt: Optional[Union[str, date]] = None,
128+
effective_date_lte: Optional[Union[str, date]] = None,
129+
processed_date: Optional[Union[str, date]] = None,
130+
processed_date_gt: Optional[Union[str, date]] = None,
131+
processed_date_gte: Optional[Union[str, date]] = None,
132+
processed_date_lt: Optional[Union[str, date]] = None,
133+
processed_date_lte: Optional[Union[str, date]] = None,
134+
us_code: Optional[str] = None,
135+
us_code_any_of: Optional[str] = None,
136+
us_code_gt: Optional[str] = None,
137+
us_code_gte: Optional[str] = None,
138+
us_code_lt: Optional[str] = None,
139+
us_code_lte: Optional[str] = None,
140+
isin: Optional[str] = None,
141+
isin_any_of: Optional[str] = None,
142+
isin_gt: Optional[str] = None,
143+
isin_gte: Optional[str] = None,
144+
isin_lt: Optional[str] = None,
145+
isin_lte: Optional[str] = None,
146+
figi: Optional[str] = None,
147+
figi_any_of: Optional[str] = None,
148+
figi_gt: Optional[str] = None,
149+
figi_gte: Optional[str] = None,
150+
figi_lt: Optional[str] = None,
151+
figi_lte: Optional[str] = None,
152+
sedol: Optional[str] = None,
153+
sedol_any_of: Optional[str] = None,
154+
sedol_gt: Optional[str] = None,
155+
sedol_gte: Optional[str] = None,
156+
sedol_lt: Optional[str] = None,
157+
sedol_lte: Optional[str] = None,
158+
limit: Optional[int] = None,
159+
sort: Optional[Union[str, Sort]] = None,
160+
params: Optional[Dict[str, Any]] = None,
161+
raw: bool = False,
162+
options: Optional[RequestOptionBuilder] = None,
163+
) -> Union[Iterator[EtfGlobalConstituent], HTTPResponse]:
164+
"""
165+
Endpoint: GET /etf-global/v1/constituents
166+
"""
167+
url = "/etf-global/v1/constituents"
168+
return self._paginate(
169+
path=url,
170+
params=self._get_params(self.get_etf_global_constituents, locals()),
171+
raw=raw,
172+
deserializer=EtfGlobalConstituent.from_dict,
173+
options=options,
174+
)
175+
176+
def get_etf_global_fund_flows(
177+
self,
178+
processed_date: Optional[Union[str, date]] = None,
179+
processed_date_gt: Optional[Union[str, date]] = None,
180+
processed_date_gte: Optional[Union[str, date]] = None,
181+
processed_date_lt: Optional[Union[str, date]] = None,
182+
processed_date_lte: Optional[Union[str, date]] = None,
183+
effective_date: Optional[Union[str, date]] = None,
184+
effective_date_gt: Optional[Union[str, date]] = None,
185+
effective_date_gte: Optional[Union[str, date]] = None,
186+
effective_date_lt: Optional[Union[str, date]] = None,
187+
effective_date_lte: Optional[Union[str, date]] = None,
188+
composite_ticker: Optional[str] = None,
189+
composite_ticker_any_of: Optional[str] = None,
190+
composite_ticker_gt: Optional[str] = None,
191+
composite_ticker_gte: Optional[str] = None,
192+
composite_ticker_lt: Optional[str] = None,
193+
composite_ticker_lte: Optional[str] = None,
194+
limit: Optional[int] = None,
195+
sort: Optional[Union[str, Sort]] = None,
196+
params: Optional[Dict[str, Any]] = None,
197+
raw: bool = False,
198+
options: Optional[RequestOptionBuilder] = None,
199+
) -> Union[Iterator[EtfGlobalFundFlow], HTTPResponse]:
200+
"""
201+
Endpoint: GET /etf-global/v1/fund-flows
202+
"""
203+
url = "/etf-global/v1/fund-flows"
204+
return self._paginate(
205+
path=url,
206+
params=self._get_params(self.get_etf_global_fund_flows, locals()),
207+
raw=raw,
208+
deserializer=EtfGlobalFundFlow.from_dict,
209+
options=options,
210+
)
211+
212+
def get_etf_global_profiles(
213+
self,
214+
processed_date: Optional[Union[str, date]] = None,
215+
processed_date_gt: Optional[Union[str, date]] = None,
216+
processed_date_gte: Optional[Union[str, date]] = None,
217+
processed_date_lt: Optional[Union[str, date]] = None,
218+
processed_date_lte: Optional[Union[str, date]] = None,
219+
effective_date: Optional[Union[str, date]] = None,
220+
effective_date_gt: Optional[Union[str, date]] = None,
221+
effective_date_gte: Optional[Union[str, date]] = None,
222+
effective_date_lt: Optional[Union[str, date]] = None,
223+
effective_date_lte: Optional[Union[str, date]] = None,
224+
composite_ticker: Optional[str] = None,
225+
composite_ticker_any_of: Optional[str] = None,
226+
composite_ticker_gt: Optional[str] = None,
227+
composite_ticker_gte: Optional[str] = None,
228+
composite_ticker_lt: Optional[str] = None,
229+
composite_ticker_lte: Optional[str] = None,
230+
limit: Optional[int] = None,
231+
sort: Optional[Union[str, Sort]] = None,
232+
params: Optional[Dict[str, Any]] = None,
233+
raw: bool = False,
234+
options: Optional[RequestOptionBuilder] = None,
235+
) -> Union[Iterator[EtfGlobalProfile], HTTPResponse]:
236+
"""
237+
Endpoint: GET /etf-global/v1/profiles
238+
"""
239+
url = "/etf-global/v1/profiles"
240+
return self._paginate(
241+
path=url,
242+
params=self._get_params(self.get_etf_global_profiles, locals()),
243+
raw=raw,
244+
deserializer=EtfGlobalProfile.from_dict,
245+
options=options,
246+
)
247+
248+
def get_etf_global_taxonomies(
249+
self,
250+
processed_date: Optional[Union[str, date]] = None,
251+
processed_date_gt: Optional[Union[str, date]] = None,
252+
processed_date_gte: Optional[Union[str, date]] = None,
253+
processed_date_lt: Optional[Union[str, date]] = None,
254+
processed_date_lte: Optional[Union[str, date]] = None,
255+
effective_date: Optional[Union[str, date]] = None,
256+
effective_date_gt: Optional[Union[str, date]] = None,
257+
effective_date_gte: Optional[Union[str, date]] = None,
258+
effective_date_lt: Optional[Union[str, date]] = None,
259+
effective_date_lte: Optional[Union[str, date]] = None,
260+
composite_ticker: Optional[str] = None,
261+
composite_ticker_any_of: Optional[str] = None,
262+
composite_ticker_gt: Optional[str] = None,
263+
composite_ticker_gte: Optional[str] = None,
264+
composite_ticker_lt: Optional[str] = None,
265+
composite_ticker_lte: Optional[str] = None,
266+
limit: Optional[int] = None,
267+
sort: Optional[Union[str, Sort]] = None,
268+
params: Optional[Dict[str, Any]] = None,
269+
raw: bool = False,
270+
options: Optional[RequestOptionBuilder] = None,
271+
) -> Union[Iterator[EtfGlobalTaxonomy], HTTPResponse]:
272+
"""
273+
Endpoint: GET /etf-global/v1/taxonomies
274+
"""
275+
url = "/etf-global/v1/taxonomies"
276+
return self._paginate(
277+
path=url,
278+
params=self._get_params(self.get_etf_global_taxonomies, locals()),
279+
raw=raw,
280+
deserializer=EtfGlobalTaxonomy.from_dict,
281+
options=options,
282+
)

0 commit comments

Comments
 (0)