eulerpool 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. eulerpool/__init__.py +281 -0
  2. eulerpool/_client.py +250 -0
  3. eulerpool/_version.py +3 -0
  4. eulerpool/errors.py +46 -0
  5. eulerpool/py.typed +0 -0
  6. eulerpool/resources/__init__.py +0 -0
  7. eulerpool/resources/_base.py +34 -0
  8. eulerpool/resources/aaq.py +18 -0
  9. eulerpool/resources/alternative.py +116 -0
  10. eulerpool/resources/analytics.py +50 -0
  11. eulerpool/resources/backtest.py +66 -0
  12. eulerpool/resources/bonds.py +36 -0
  13. eulerpool/resources/calendar.py +78 -0
  14. eulerpool/resources/certificates.py +30 -0
  15. eulerpool/resources/charting.py +42 -0
  16. eulerpool/resources/commodity.py +64 -0
  17. eulerpool/resources/crypto.py +30 -0
  18. eulerpool/resources/crypto_extended.py +246 -0
  19. eulerpool/resources/data.py +24 -0
  20. eulerpool/resources/datasets.py +100 -0
  21. eulerpool/resources/deals.py +28 -0
  22. eulerpool/resources/derivatives.py +68 -0
  23. eulerpool/resources/dex.py +54 -0
  24. eulerpool/resources/earning_calls.py +24 -0
  25. eulerpool/resources/ecb.py +34 -0
  26. eulerpool/resources/economic_forecasts.py +28 -0
  27. eulerpool/resources/energy.py +94 -0
  28. eulerpool/resources/equity.py +420 -0
  29. eulerpool/resources/equity_extended.py +150 -0
  30. eulerpool/resources/etf.py +60 -0
  31. eulerpool/resources/fair_value.py +18 -0
  32. eulerpool/resources/fixed_income.py +46 -0
  33. eulerpool/resources/forex.py +24 -0
  34. eulerpool/resources/fundamentals.py +60 -0
  35. eulerpool/resources/funds.py +32 -0
  36. eulerpool/resources/government.py +42 -0
  37. eulerpool/resources/ice_swap.py +18 -0
  38. eulerpool/resources/index.py +34 -0
  39. eulerpool/resources/institutional.py +60 -0
  40. eulerpool/resources/interest_rates.py +34 -0
  41. eulerpool/resources/macro.py +156 -0
  42. eulerpool/resources/market.py +214 -0
  43. eulerpool/resources/mutual_fund.py +42 -0
  44. eulerpool/resources/news.py +18 -0
  45. eulerpool/resources/nft.py +42 -0
  46. eulerpool/resources/partner.py +18 -0
  47. eulerpool/resources/patents.py +24 -0
  48. eulerpool/resources/peer_comparison.py +58 -0
  49. eulerpool/resources/portfolio.py +96 -0
  50. eulerpool/resources/portfolio_risk.py +58 -0
  51. eulerpool/resources/private_markets.py +24 -0
  52. eulerpool/resources/research.py +30 -0
  53. eulerpool/resources/risk_models.py +52 -0
  54. eulerpool/resources/screener.py +46 -0
  55. eulerpool/resources/sentiment.py +60 -0
  56. eulerpool/resources/shipping.py +58 -0
  57. eulerpool/resources/singapore.py +82 -0
  58. eulerpool/resources/transcripts.py +40 -0
  59. eulerpool/resources/trends.py +18 -0
  60. eulerpool/resources/vendor.py +28 -0
  61. eulerpool-1.0.0.dist-info/METADATA +146 -0
  62. eulerpool-1.0.0.dist-info/RECORD +64 -0
  63. eulerpool-1.0.0.dist-info/WHEEL +4 -0
  64. eulerpool-1.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,156 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Optional
4
+ from urllib.parse import quote
5
+
6
+ from ._base import AsyncResource, SyncResource
7
+
8
+
9
+ class Macro(SyncResource):
10
+ def bis_credit_gap(self, **params: Any) -> Any:
11
+ """BIS Credit Gap API"""
12
+ return self._get("/macro/bis/credit-gap", params)
13
+ def bis_debt_securities(self, **params: Any) -> Any:
14
+ """BIS Debt Securities API"""
15
+ return self._get("/macro/bis/debt-securities", params)
16
+ def bis_property_prices(self, **params: Any) -> Any:
17
+ """BIS Property Prices API"""
18
+ return self._get("/macro/bis/property-prices", params)
19
+ def calendar(self, **params: Any) -> Any:
20
+ """Macro Calendar API"""
21
+ return self._get("/macro/calendar", params)
22
+ def calendar_properties(self, **params: Any) -> Any:
23
+ """Macro Calendar properties API"""
24
+ return self._get("/macro/calendar/properties", params)
25
+ def countries(self, **params: Any) -> Any:
26
+ """Available Countries API"""
27
+ return self._get("/macro/countries", params)
28
+ def country(self, country: str, **params: Any) -> Any:
29
+ """Country Indicators API"""
30
+ return self._get(f"/macro/country/{quote(str(country))}", params)
31
+ def country_risk(self, **params: Any) -> Any:
32
+ """Country Risk API"""
33
+ return self._get("/macro/country-risk", params)
34
+ def credit_spreads(self, **params: Any) -> Any:
35
+ """Credit Spreads API"""
36
+ return self._get("/macro/credit-spreads", params)
37
+ def ecb_observations(self, seriesKey: str, **params: Any) -> Any:
38
+ """ECB Observations API"""
39
+ return self._get(f"/macro/ecb/observations/{quote(str(seriesKey))}", params)
40
+ def ecb_series(self, **params: Any) -> Any:
41
+ """ECB Series List API"""
42
+ return self._get("/macro/ecb/series", params)
43
+ def eurostat_observations(self, seriesId: str, **params: Any) -> Any:
44
+ """Eurostat Observations API"""
45
+ return self._get(f"/macro/eurostat/observations/{quote(str(seriesId))}", params)
46
+ def eurostat_series(self, **params: Any) -> Any:
47
+ """Eurostat Series List API"""
48
+ return self._get("/macro/eurostat/series", params)
49
+ def fred_observations(self, seriesId: str, **params: Any) -> Any:
50
+ """FRED Observations API"""
51
+ return self._get(f"/macro/fred/observations/{quote(str(seriesId))}", params)
52
+ def fred_series(self, **params: Any) -> Any:
53
+ """FRED Series List API"""
54
+ return self._get("/macro/fred/series", params)
55
+ def imf_observations(self, seriesId: str, **params: Any) -> Any:
56
+ """IMF Observations API"""
57
+ return self._get(f"/macro/imf/observations/{quote(str(seriesId))}", params)
58
+ def imf_series(self, **params: Any) -> Any:
59
+ """IMF Series List API"""
60
+ return self._get("/macro/imf/series", params)
61
+ def indicator(self, country: str, slug: str, **params: Any) -> Any:
62
+ """Indicator Profile API"""
63
+ return self._get(f"/macro/indicator/{quote(str(country))}/{quote(str(slug))}", params)
64
+ def latest_ecb(self, **params: Any) -> Any:
65
+ """ECB Latest Values API"""
66
+ return self._get("/macro/latest/ecb", params)
67
+ def latest_fred(self, **params: Any) -> Any:
68
+ """FRED Latest Values API"""
69
+ return self._get("/macro/latest/fred", params)
70
+ def oecd(self, **params: Any) -> Any:
71
+ """OECD Indicators API"""
72
+ return self._get("/macro/oecd", params)
73
+ def search(self, **params: Any) -> Any:
74
+ """Macro Data Search API"""
75
+ return self._get("/macro/search", params)
76
+ def worldbank_observations(self, seriesId: str, **params: Any) -> Any:
77
+ """World Bank Observations API"""
78
+ return self._get(f"/macro/worldbank/observations/{quote(str(seriesId))}", params)
79
+ def worldbank_series(self, **params: Any) -> Any:
80
+ """World Bank Series List API"""
81
+ return self._get("/macro/worldbank/series", params)
82
+
83
+
84
+ class AsyncMacro(AsyncResource):
85
+ async def bis_credit_gap(self, **params: Any) -> Any:
86
+ """BIS Credit Gap API"""
87
+ return await self._get("/macro/bis/credit-gap", params)
88
+ async def bis_debt_securities(self, **params: Any) -> Any:
89
+ """BIS Debt Securities API"""
90
+ return await self._get("/macro/bis/debt-securities", params)
91
+ async def bis_property_prices(self, **params: Any) -> Any:
92
+ """BIS Property Prices API"""
93
+ return await self._get("/macro/bis/property-prices", params)
94
+ async def calendar(self, **params: Any) -> Any:
95
+ """Macro Calendar API"""
96
+ return await self._get("/macro/calendar", params)
97
+ async def calendar_properties(self, **params: Any) -> Any:
98
+ """Macro Calendar properties API"""
99
+ return await self._get("/macro/calendar/properties", params)
100
+ async def countries(self, **params: Any) -> Any:
101
+ """Available Countries API"""
102
+ return await self._get("/macro/countries", params)
103
+ async def country(self, country: str, **params: Any) -> Any:
104
+ """Country Indicators API"""
105
+ return await self._get(f"/macro/country/{quote(str(country))}", params)
106
+ async def country_risk(self, **params: Any) -> Any:
107
+ """Country Risk API"""
108
+ return await self._get("/macro/country-risk", params)
109
+ async def credit_spreads(self, **params: Any) -> Any:
110
+ """Credit Spreads API"""
111
+ return await self._get("/macro/credit-spreads", params)
112
+ async def ecb_observations(self, seriesKey: str, **params: Any) -> Any:
113
+ """ECB Observations API"""
114
+ return await self._get(f"/macro/ecb/observations/{quote(str(seriesKey))}", params)
115
+ async def ecb_series(self, **params: Any) -> Any:
116
+ """ECB Series List API"""
117
+ return await self._get("/macro/ecb/series", params)
118
+ async def eurostat_observations(self, seriesId: str, **params: Any) -> Any:
119
+ """Eurostat Observations API"""
120
+ return await self._get(f"/macro/eurostat/observations/{quote(str(seriesId))}", params)
121
+ async def eurostat_series(self, **params: Any) -> Any:
122
+ """Eurostat Series List API"""
123
+ return await self._get("/macro/eurostat/series", params)
124
+ async def fred_observations(self, seriesId: str, **params: Any) -> Any:
125
+ """FRED Observations API"""
126
+ return await self._get(f"/macro/fred/observations/{quote(str(seriesId))}", params)
127
+ async def fred_series(self, **params: Any) -> Any:
128
+ """FRED Series List API"""
129
+ return await self._get("/macro/fred/series", params)
130
+ async def imf_observations(self, seriesId: str, **params: Any) -> Any:
131
+ """IMF Observations API"""
132
+ return await self._get(f"/macro/imf/observations/{quote(str(seriesId))}", params)
133
+ async def imf_series(self, **params: Any) -> Any:
134
+ """IMF Series List API"""
135
+ return await self._get("/macro/imf/series", params)
136
+ async def indicator(self, country: str, slug: str, **params: Any) -> Any:
137
+ """Indicator Profile API"""
138
+ return await self._get(f"/macro/indicator/{quote(str(country))}/{quote(str(slug))}", params)
139
+ async def latest_ecb(self, **params: Any) -> Any:
140
+ """ECB Latest Values API"""
141
+ return await self._get("/macro/latest/ecb", params)
142
+ async def latest_fred(self, **params: Any) -> Any:
143
+ """FRED Latest Values API"""
144
+ return await self._get("/macro/latest/fred", params)
145
+ async def oecd(self, **params: Any) -> Any:
146
+ """OECD Indicators API"""
147
+ return await self._get("/macro/oecd", params)
148
+ async def search(self, **params: Any) -> Any:
149
+ """Macro Data Search API"""
150
+ return await self._get("/macro/search", params)
151
+ async def worldbank_observations(self, seriesId: str, **params: Any) -> Any:
152
+ """World Bank Observations API"""
153
+ return await self._get(f"/macro/worldbank/observations/{quote(str(seriesId))}", params)
154
+ async def worldbank_series(self, **params: Any) -> Any:
155
+ """World Bank Series List API"""
156
+ return await self._get("/macro/worldbank/series", params)
@@ -0,0 +1,214 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Optional
4
+ from urllib.parse import quote
5
+
6
+ from ._base import AsyncResource, SyncResource
7
+
8
+
9
+ class Market(SyncResource):
10
+ def analytics_52week(self, ticker: str, **params: Any) -> Any:
11
+ """52-Week Analytics"""
12
+ return self._get(f"/market/analytics/52week/{quote(str(ticker))}", params)
13
+ def analytics_correlation(self, **params: Any) -> Any:
14
+ """Stock Correlation"""
15
+ return self._get("/market/analytics/correlation", params)
16
+ def analytics_fx_returns(self, identifier: str, **params: Any) -> Any:
17
+ """Currency-Adjusted Returns"""
18
+ return self._get(f"/market/analytics/fx-returns/{quote(str(identifier))}", params)
19
+ def analytics_risk(self, identifier: str, **params: Any) -> Any:
20
+ """Risk & Return Analytics"""
21
+ return self._get(f"/market/analytics/risk/{quote(str(identifier))}", params)
22
+ def breadth(self, **params: Any) -> Any:
23
+ """Market Breadth"""
24
+ return self._get("/market/breadth", params)
25
+ def cboe_indices(self, **params: Any) -> Any:
26
+ """CBOE Indices"""
27
+ return self._get("/market/cboe/indices", params)
28
+ def dark_pool(self, ticker: str, **params: Any) -> Any:
29
+ """Dark Pool Volume"""
30
+ return self._get(f"/market/dark-pool/{quote(str(ticker))}", params)
31
+ def etf_flows(self, ticker: str, **params: Any) -> Any:
32
+ """ETF Fund Flows"""
33
+ return self._get(f"/market/etf-flows/{quote(str(ticker))}", params)
34
+ def exchanges(self, **params: Any) -> Any:
35
+ """Exchanges"""
36
+ return self._get("/market/exchanges", params)
37
+ def fx(self, from_: str, to: str, **params: Any) -> Any:
38
+ """FX Rate Series"""
39
+ return self._get(f"/market/fx/{quote(str(from_))}/{quote(str(to))}", params)
40
+ def holidays(self, exchange: Optional[str] = None, **params: Any) -> Any:
41
+ """Holidays by Exchange"""
42
+ if exchange is not None:
43
+ return self._get(f"/market/holidays/{quote(str(exchange))}", params)
44
+ return self._get("/market/holidays", params)
45
+ def indicators(self, **params: Any) -> Any:
46
+ """Market Indicators"""
47
+ return self._get("/market/indicators", params)
48
+ def l2(self, ticker: str, **params: Any) -> Any:
49
+ """Level 2 Order Book"""
50
+ return self._get(f"/market/l2/{quote(str(ticker))}", params)
51
+ def last_quote(self, ticker: str, **params: Any) -> Any:
52
+ """Last Quote"""
53
+ return self._get(f"/market/last-quote/{quote(str(ticker))}", params)
54
+ def last_trade(self, ticker: str, **params: Any) -> Any:
55
+ """Last Trade"""
56
+ return self._get(f"/market/last-trade/{quote(str(ticker))}", params)
57
+ def market_status(self, **params: Any) -> Any:
58
+ """Market Status"""
59
+ return self._get("/market/market-status", params)
60
+ def most_shorted(self, **params: Any) -> Any:
61
+ """Most Shorted Stocks"""
62
+ return self._get("/market/most-shorted", params)
63
+ def options(self, ticker: str, **params: Any) -> Any:
64
+ """Options Chain"""
65
+ return self._get(f"/market/options/{quote(str(ticker))}", params)
66
+ def options_flow(self, ticker: Optional[str] = None, **params: Any) -> Any:
67
+ """Options Flow by Ticker"""
68
+ if ticker is not None:
69
+ return self._get(f"/market/options-flow/{quote(str(ticker))}", params)
70
+ return self._get("/market/options-flow", params)
71
+ def quotes_bulk(self, body: Any = None, **params: Any) -> Any:
72
+ """Bulk Quotes"""
73
+ if body is None and params:
74
+ body, params = params, None
75
+ elif isinstance(body, dict) and params:
76
+ body = {**body, **params}
77
+ params = None
78
+ if isinstance(body, (list, tuple)):
79
+ body = {"isins": list(body)}
80
+ return self._post("/market/quotes/bulk", body, params)
81
+ def quotes_exchanges(self, identifier: str, **params: Any) -> Any:
82
+ """Multi-Exchange Quotes"""
83
+ return self._get(f"/market/quotes/exchanges/{quote(str(identifier))}", params)
84
+ def quotes_intraday(self, identifier: str, **params: Any) -> Any:
85
+ """Intraday Quotes"""
86
+ return self._get(f"/market/quotes/intraday/{quote(str(identifier))}", params)
87
+ def quotes_latest(self, stocks: Any = None, **params: Any) -> Any:
88
+ """Latest Quotes. Pass tickers to limit the response, e.g. quotes_latest(["AAPL", "MSFT"])."""
89
+ if isinstance(stocks, dict):
90
+ params = {**stocks, **params}
91
+ elif stocks is not None:
92
+ if isinstance(stocks, (list, tuple)):
93
+ stocks = ",".join(str(s) for s in stocks)
94
+ params = {"stocks": stocks, **params}
95
+ return self._get("/market/quotes/latest", params)
96
+ def risk_metrics(self, ticker: str, **params: Any) -> Any:
97
+ """Precomputed Risk Metrics"""
98
+ return self._get(f"/market/risk-metrics/{quote(str(ticker))}", params)
99
+ def sector_performance(self, **params: Any) -> Any:
100
+ """Sector Performance"""
101
+ return self._get("/market/sector-performance", params)
102
+ def top_movers(self, **params: Any) -> Any:
103
+ """Top Gainers & Losers"""
104
+ return self._get("/market/top-movers", params)
105
+ def unusual_move(self, **params: Any) -> Any:
106
+ """Unusual Price Moves"""
107
+ return self._get("/market/unusual-move", params)
108
+ def vix_term_structure(self, **params: Any) -> Any:
109
+ """VIX Term Structure"""
110
+ return self._get("/market/vix/term-structure", params)
111
+
112
+
113
+ class AsyncMarket(AsyncResource):
114
+ async def analytics_52week(self, ticker: str, **params: Any) -> Any:
115
+ """52-Week Analytics"""
116
+ return await self._get(f"/market/analytics/52week/{quote(str(ticker))}", params)
117
+ async def analytics_correlation(self, **params: Any) -> Any:
118
+ """Stock Correlation"""
119
+ return await self._get("/market/analytics/correlation", params)
120
+ async def analytics_fx_returns(self, identifier: str, **params: Any) -> Any:
121
+ """Currency-Adjusted Returns"""
122
+ return await self._get(f"/market/analytics/fx-returns/{quote(str(identifier))}", params)
123
+ async def analytics_risk(self, identifier: str, **params: Any) -> Any:
124
+ """Risk & Return Analytics"""
125
+ return await self._get(f"/market/analytics/risk/{quote(str(identifier))}", params)
126
+ async def breadth(self, **params: Any) -> Any:
127
+ """Market Breadth"""
128
+ return await self._get("/market/breadth", params)
129
+ async def cboe_indices(self, **params: Any) -> Any:
130
+ """CBOE Indices"""
131
+ return await self._get("/market/cboe/indices", params)
132
+ async def dark_pool(self, ticker: str, **params: Any) -> Any:
133
+ """Dark Pool Volume"""
134
+ return await self._get(f"/market/dark-pool/{quote(str(ticker))}", params)
135
+ async def etf_flows(self, ticker: str, **params: Any) -> Any:
136
+ """ETF Fund Flows"""
137
+ return await self._get(f"/market/etf-flows/{quote(str(ticker))}", params)
138
+ async def exchanges(self, **params: Any) -> Any:
139
+ """Exchanges"""
140
+ return await self._get("/market/exchanges", params)
141
+ async def fx(self, from_: str, to: str, **params: Any) -> Any:
142
+ """FX Rate Series"""
143
+ return await self._get(f"/market/fx/{quote(str(from_))}/{quote(str(to))}", params)
144
+ async def holidays(self, exchange: Optional[str] = None, **params: Any) -> Any:
145
+ """Holidays by Exchange"""
146
+ if exchange is not None:
147
+ return await self._get(f"/market/holidays/{quote(str(exchange))}", params)
148
+ return await self._get("/market/holidays", params)
149
+ async def indicators(self, **params: Any) -> Any:
150
+ """Market Indicators"""
151
+ return await self._get("/market/indicators", params)
152
+ async def l2(self, ticker: str, **params: Any) -> Any:
153
+ """Level 2 Order Book"""
154
+ return await self._get(f"/market/l2/{quote(str(ticker))}", params)
155
+ async def last_quote(self, ticker: str, **params: Any) -> Any:
156
+ """Last Quote"""
157
+ return await self._get(f"/market/last-quote/{quote(str(ticker))}", params)
158
+ async def last_trade(self, ticker: str, **params: Any) -> Any:
159
+ """Last Trade"""
160
+ return await self._get(f"/market/last-trade/{quote(str(ticker))}", params)
161
+ async def market_status(self, **params: Any) -> Any:
162
+ """Market Status"""
163
+ return await self._get("/market/market-status", params)
164
+ async def most_shorted(self, **params: Any) -> Any:
165
+ """Most Shorted Stocks"""
166
+ return await self._get("/market/most-shorted", params)
167
+ async def options(self, ticker: str, **params: Any) -> Any:
168
+ """Options Chain"""
169
+ return await self._get(f"/market/options/{quote(str(ticker))}", params)
170
+ async def options_flow(self, ticker: Optional[str] = None, **params: Any) -> Any:
171
+ """Options Flow by Ticker"""
172
+ if ticker is not None:
173
+ return await self._get(f"/market/options-flow/{quote(str(ticker))}", params)
174
+ return await self._get("/market/options-flow", params)
175
+ async def quotes_bulk(self, body: Any = None, **params: Any) -> Any:
176
+ """Bulk Quotes"""
177
+ if body is None and params:
178
+ body, params = params, None
179
+ elif isinstance(body, dict) and params:
180
+ body = {**body, **params}
181
+ params = None
182
+ if isinstance(body, (list, tuple)):
183
+ body = {"isins": list(body)}
184
+ return await self._post("/market/quotes/bulk", body, params)
185
+ async def quotes_exchanges(self, identifier: str, **params: Any) -> Any:
186
+ """Multi-Exchange Quotes"""
187
+ return await self._get(f"/market/quotes/exchanges/{quote(str(identifier))}", params)
188
+ async def quotes_intraday(self, identifier: str, **params: Any) -> Any:
189
+ """Intraday Quotes"""
190
+ return await self._get(f"/market/quotes/intraday/{quote(str(identifier))}", params)
191
+ async def quotes_latest(self, stocks: Any = None, **params: Any) -> Any:
192
+ """Latest Quotes. Pass tickers to limit the response, e.g. quotes_latest(["AAPL", "MSFT"])."""
193
+ if isinstance(stocks, dict):
194
+ params = {**stocks, **params}
195
+ elif stocks is not None:
196
+ if isinstance(stocks, (list, tuple)):
197
+ stocks = ",".join(str(s) for s in stocks)
198
+ params = {"stocks": stocks, **params}
199
+ return await self._get("/market/quotes/latest", params)
200
+ async def risk_metrics(self, ticker: str, **params: Any) -> Any:
201
+ """Precomputed Risk Metrics"""
202
+ return await self._get(f"/market/risk-metrics/{quote(str(ticker))}", params)
203
+ async def sector_performance(self, **params: Any) -> Any:
204
+ """Sector Performance"""
205
+ return await self._get("/market/sector-performance", params)
206
+ async def top_movers(self, **params: Any) -> Any:
207
+ """Top Gainers & Losers"""
208
+ return await self._get("/market/top-movers", params)
209
+ async def unusual_move(self, **params: Any) -> Any:
210
+ """Unusual Price Moves"""
211
+ return await self._get("/market/unusual-move", params)
212
+ async def vix_term_structure(self, **params: Any) -> Any:
213
+ """VIX Term Structure"""
214
+ return await self._get("/market/vix/term-structure", params)
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Optional
4
+ from urllib.parse import quote
5
+
6
+ from ._base import AsyncResource, SyncResource
7
+
8
+
9
+ class MutualFund(SyncResource):
10
+ def countries(self, symbol: str, **params: Any) -> Any:
11
+ """Mutual Fund Countries"""
12
+ return self._get(f"/mutual-fund/countries/{quote(str(symbol))}", params)
13
+ def disclosure(self, symbol: str, **params: Any) -> Any:
14
+ """Fund Disclosure (Quarterly)"""
15
+ return self._get(f"/mutual-fund/disclosure/{quote(str(symbol))}", params)
16
+ def holdings(self, symbol: str, **params: Any) -> Any:
17
+ """Mutual Fund Holdings"""
18
+ return self._get(f"/mutual-fund/holdings/{quote(str(symbol))}", params)
19
+ def profile(self, identifier: str, **params: Any) -> Any:
20
+ """Mutual Fund Profile"""
21
+ return self._get(f"/mutual-fund/profile/{quote(str(identifier))}", params)
22
+ def sectors(self, symbol: str, **params: Any) -> Any:
23
+ """Mutual Fund Sectors"""
24
+ return self._get(f"/mutual-fund/sectors/{quote(str(symbol))}", params)
25
+
26
+
27
+ class AsyncMutualFund(AsyncResource):
28
+ async def countries(self, symbol: str, **params: Any) -> Any:
29
+ """Mutual Fund Countries"""
30
+ return await self._get(f"/mutual-fund/countries/{quote(str(symbol))}", params)
31
+ async def disclosure(self, symbol: str, **params: Any) -> Any:
32
+ """Fund Disclosure (Quarterly)"""
33
+ return await self._get(f"/mutual-fund/disclosure/{quote(str(symbol))}", params)
34
+ async def holdings(self, symbol: str, **params: Any) -> Any:
35
+ """Mutual Fund Holdings"""
36
+ return await self._get(f"/mutual-fund/holdings/{quote(str(symbol))}", params)
37
+ async def profile(self, identifier: str, **params: Any) -> Any:
38
+ """Mutual Fund Profile"""
39
+ return await self._get(f"/mutual-fund/profile/{quote(str(identifier))}", params)
40
+ async def sectors(self, symbol: str, **params: Any) -> Any:
41
+ """Mutual Fund Sectors"""
42
+ return await self._get(f"/mutual-fund/sectors/{quote(str(symbol))}", params)
@@ -0,0 +1,18 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Optional
4
+ from urllib.parse import quote
5
+
6
+ from ._base import AsyncResource, SyncResource
7
+
8
+
9
+ class News(SyncResource):
10
+ def feed(self, **params: Any) -> Any:
11
+ """News Feed RSS XML"""
12
+ return self._get("/news/feed.xml", params)
13
+
14
+
15
+ class AsyncNews(AsyncResource):
16
+ async def feed(self, **params: Any) -> Any:
17
+ """News Feed RSS XML"""
18
+ return await self._get("/news/feed.xml", params)
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Optional
4
+ from urllib.parse import quote
5
+
6
+ from ._base import AsyncResource, SyncResource
7
+
8
+
9
+ class Nft(SyncResource):
10
+ def list(self, **params: Any) -> Any:
11
+ """NFT Collections List API"""
12
+ return self._get("/nft/list", params)
13
+ def market_chart(self, id: str, **params: Any) -> Any:
14
+ """NFT Collection Price History"""
15
+ return self._get(f"/nft/market-chart/{quote(str(id))}", params)
16
+ def markets(self, **params: Any) -> Any:
17
+ """NFT Markets Ranking"""
18
+ return self._get("/nft/markets", params)
19
+ def profile(self, id: str, **params: Any) -> Any:
20
+ """NFT Collection Profile API"""
21
+ return self._get(f"/nft/profile/{quote(str(id))}", params)
22
+ def search(self, query: str, **params: Any) -> Any:
23
+ """NFT Collection Search API"""
24
+ return self._get(f"/nft/search/{quote(str(query))}", params)
25
+
26
+
27
+ class AsyncNft(AsyncResource):
28
+ async def list(self, **params: Any) -> Any:
29
+ """NFT Collections List API"""
30
+ return await self._get("/nft/list", params)
31
+ async def market_chart(self, id: str, **params: Any) -> Any:
32
+ """NFT Collection Price History"""
33
+ return await self._get(f"/nft/market-chart/{quote(str(id))}", params)
34
+ async def markets(self, **params: Any) -> Any:
35
+ """NFT Markets Ranking"""
36
+ return await self._get("/nft/markets", params)
37
+ async def profile(self, id: str, **params: Any) -> Any:
38
+ """NFT Collection Profile API"""
39
+ return await self._get(f"/nft/profile/{quote(str(id))}", params)
40
+ async def search(self, query: str, **params: Any) -> Any:
41
+ """NFT Collection Search API"""
42
+ return await self._get(f"/nft/search/{quote(str(query))}", params)
@@ -0,0 +1,18 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Optional
4
+ from urllib.parse import quote
5
+
6
+ from ._base import AsyncResource, SyncResource
7
+
8
+
9
+ class Partner(SyncResource):
10
+ def alleaktien_fundamentals(self, **params: Any) -> Any:
11
+ """AlleAktien Fundamentals"""
12
+ return self._get("/partner/alleaktien/fundamentals", params)
13
+
14
+
15
+ class AsyncPartner(AsyncResource):
16
+ async def alleaktien_fundamentals(self, **params: Any) -> Any:
17
+ """AlleAktien Fundamentals"""
18
+ return await self._get("/partner/alleaktien/fundamentals", params)
@@ -0,0 +1,24 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Optional
4
+ from urllib.parse import quote
5
+
6
+ from ._base import AsyncResource, SyncResource
7
+
8
+
9
+ class Patents(SyncResource):
10
+ def list(self, ticker: str, **params: Any) -> Any:
11
+ """Company Patents API"""
12
+ return self._get(f"/patents/list/{quote(str(ticker))}", params)
13
+ def stats(self, ticker: str, **params: Any) -> Any:
14
+ """Patent Statistics API"""
15
+ return self._get(f"/patents/stats/{quote(str(ticker))}", params)
16
+
17
+
18
+ class AsyncPatents(AsyncResource):
19
+ async def list(self, ticker: str, **params: Any) -> Any:
20
+ """Company Patents API"""
21
+ return await self._get(f"/patents/list/{quote(str(ticker))}", params)
22
+ async def stats(self, ticker: str, **params: Any) -> Any:
23
+ """Patent Statistics API"""
24
+ return await self._get(f"/patents/stats/{quote(str(ticker))}", params)
@@ -0,0 +1,58 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Optional
4
+ from urllib.parse import quote
5
+
6
+ from ._base import AsyncResource, SyncResource
7
+
8
+
9
+ class PeerComparison(SyncResource):
10
+ def compare(self, body: Any = None, **params: Any) -> Any:
11
+ """Compare Companies"""
12
+ if body is None and params:
13
+ body, params = params, None
14
+ elif isinstance(body, dict) and params:
15
+ body = {**body, **params}
16
+ params = None
17
+ return self._post("/peer-comparison/compare", body, params)
18
+ def financial_benchmarking(self, identifier: str, **params: Any) -> Any:
19
+ """Financial Benchmarking"""
20
+ return self._get(f"/peer-comparison/financial-benchmarking/{quote(str(identifier))}", params)
21
+ def metrics(self, **params: Any) -> Any:
22
+ """Available Metrics"""
23
+ return self._get("/peer-comparison/metrics", params)
24
+ def peers(self, identifier: str, **params: Any) -> Any:
25
+ """Auto-Detect Peers"""
26
+ return self._get(f"/peer-comparison/peers/{quote(str(identifier))}", params)
27
+ def relative_valuation(self, identifier: str, **params: Any) -> Any:
28
+ """Relative Valuation"""
29
+ return self._get(f"/peer-comparison/relative-valuation/{quote(str(identifier))}", params)
30
+ def scatter(self, **params: Any) -> Any:
31
+ """Scatter Plot Data"""
32
+ return self._get("/peer-comparison/scatter", params)
33
+
34
+
35
+ class AsyncPeerComparison(AsyncResource):
36
+ async def compare(self, body: Any = None, **params: Any) -> Any:
37
+ """Compare Companies"""
38
+ if body is None and params:
39
+ body, params = params, None
40
+ elif isinstance(body, dict) and params:
41
+ body = {**body, **params}
42
+ params = None
43
+ return await self._post("/peer-comparison/compare", body, params)
44
+ async def financial_benchmarking(self, identifier: str, **params: Any) -> Any:
45
+ """Financial Benchmarking"""
46
+ return await self._get(f"/peer-comparison/financial-benchmarking/{quote(str(identifier))}", params)
47
+ async def metrics(self, **params: Any) -> Any:
48
+ """Available Metrics"""
49
+ return await self._get("/peer-comparison/metrics", params)
50
+ async def peers(self, identifier: str, **params: Any) -> Any:
51
+ """Auto-Detect Peers"""
52
+ return await self._get(f"/peer-comparison/peers/{quote(str(identifier))}", params)
53
+ async def relative_valuation(self, identifier: str, **params: Any) -> Any:
54
+ """Relative Valuation"""
55
+ return await self._get(f"/peer-comparison/relative-valuation/{quote(str(identifier))}", params)
56
+ async def scatter(self, **params: Any) -> Any:
57
+ """Scatter Plot Data"""
58
+ return await self._get("/peer-comparison/scatter", params)