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,150 @@
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 EquityExtended(SyncResource):
10
+ def aaqs(self, identifier: str, **params: Any) -> Any:
11
+ """AAQS (Quality Score) API"""
12
+ return self._get(f"/equity-extended/aaqs/{quote(str(identifier))}", params)
13
+ def aggregate_signals(self, identifier: str, **params: Any) -> Any:
14
+ """Aggregate Technical Signals API"""
15
+ return self._get(f"/equity-extended/aggregate-signals/{quote(str(identifier))}", params)
16
+ def basic_financials(self, identifier: str, **params: Any) -> Any:
17
+ """Basic Financials (Key Ratios) API"""
18
+ return self._get(f"/equity-extended/basic-financials/{quote(str(identifier))}", params)
19
+ def corporate_events(self, ticker: str, **params: Any) -> Any:
20
+ """Corporate Events (8-K) API"""
21
+ return self._get(f"/equity-extended/corporate-events/{quote(str(ticker))}", params)
22
+ def earnings_calendar(self, identifier: str, **params: Any) -> Any:
23
+ """Earnings Calendar API"""
24
+ return self._get(f"/equity-extended/earnings-calendar/{quote(str(identifier))}", params)
25
+ def ebitda_estimates(self, identifier: str, **params: Any) -> Any:
26
+ """EBITDA Estimates API"""
27
+ return self._get(f"/equity-extended/ebitda-estimates/{quote(str(identifier))}", params)
28
+ def financials_reported(self, identifier: str, **params: Any) -> Any:
29
+ """As-Reported Financials API"""
30
+ return self._get(f"/equity-extended/financials-reported/{quote(str(identifier))}", params)
31
+ def index_history(self, symbol: str, **params: Any) -> Any:
32
+ """Index Historical Constituents API"""
33
+ return self._get(f"/equity-extended/index-history/{quote(str(symbol))}", params)
34
+ def isin_changes(self, **params: Any) -> Any:
35
+ """ISIN Change History API"""
36
+ return self._get("/equity-extended/isin-changes", params)
37
+ def market_news(self, **params: Any) -> Any:
38
+ """Market News API"""
39
+ return self._get("/equity-extended/market-news", params)
40
+ def options_chain(self, identifier: str, **params: Any) -> Any:
41
+ """Options Chain API"""
42
+ return self._get(f"/equity-extended/options-chain/{quote(str(identifier))}", params)
43
+ def peers(self, identifier: str, **params: Any) -> Any:
44
+ """Company Peers API"""
45
+ return self._get(f"/equity-extended/peers/{quote(str(identifier))}", params)
46
+ def price_target_history(self, identifier: str, **params: Any) -> Any:
47
+ """Price Target History API"""
48
+ return self._get(f"/equity-extended/price-target-history/{quote(str(identifier))}", params)
49
+ def sec_company(self, ticker: str, **params: Any) -> Any:
50
+ """SEC Company Info API"""
51
+ return self._get(f"/equity-extended/sec-company/{quote(str(ticker))}", params)
52
+ def sec_filings(self, identifier: str, **params: Any) -> Any:
53
+ """SEC Filings API"""
54
+ return self._get(f"/equity-extended/sec-filings/{quote(str(identifier))}", params)
55
+ def short_interest(self, identifier: str, **params: Any) -> Any:
56
+ """Short Interest API"""
57
+ return self._get(f"/equity-extended/short-interest/{quote(str(identifier))}", params)
58
+ def short_volume(self, identifier: str, **params: Any) -> Any:
59
+ """Short Volume API"""
60
+ return self._get(f"/equity-extended/short-volume/{quote(str(identifier))}", params)
61
+ def supply_chain(self, ticker: str, **params: Any) -> Any:
62
+ """Supply Chain Relationships API"""
63
+ return self._get(f"/equity-extended/supply-chain/{quote(str(ticker))}", params)
64
+ def symbol_changes(self, **params: Any) -> Any:
65
+ """Symbol Change History API"""
66
+ return self._get("/equity-extended/symbol-changes", params)
67
+ def tech_indicators(self, identifier: str, **params: Any) -> Any:
68
+ """Technical Indicators Time Series API"""
69
+ return self._get(f"/equity-extended/tech-indicators/{quote(str(identifier))}", params)
70
+ def technical_signals(self, identifier: str, **params: Any) -> Any:
71
+ """Technical Signals API"""
72
+ return self._get(f"/equity-extended/technical-signals/{quote(str(identifier))}", params)
73
+ def xbrl_fact(self, ticker: str, tag: str, **params: Any) -> Any:
74
+ """XBRL Fact Time Series API"""
75
+ return self._get(f"/equity-extended/xbrl/fact/{quote(str(ticker))}/{quote(str(tag))}", params)
76
+ def xbrl_facts(self, ticker: str, **params: Any) -> Any:
77
+ """SEC XBRL Facts API"""
78
+ return self._get(f"/equity-extended/xbrl/facts/{quote(str(ticker))}", params)
79
+
80
+
81
+ class AsyncEquityExtended(AsyncResource):
82
+ async def aaqs(self, identifier: str, **params: Any) -> Any:
83
+ """AAQS (Quality Score) API"""
84
+ return await self._get(f"/equity-extended/aaqs/{quote(str(identifier))}", params)
85
+ async def aggregate_signals(self, identifier: str, **params: Any) -> Any:
86
+ """Aggregate Technical Signals API"""
87
+ return await self._get(f"/equity-extended/aggregate-signals/{quote(str(identifier))}", params)
88
+ async def basic_financials(self, identifier: str, **params: Any) -> Any:
89
+ """Basic Financials (Key Ratios) API"""
90
+ return await self._get(f"/equity-extended/basic-financials/{quote(str(identifier))}", params)
91
+ async def corporate_events(self, ticker: str, **params: Any) -> Any:
92
+ """Corporate Events (8-K) API"""
93
+ return await self._get(f"/equity-extended/corporate-events/{quote(str(ticker))}", params)
94
+ async def earnings_calendar(self, identifier: str, **params: Any) -> Any:
95
+ """Earnings Calendar API"""
96
+ return await self._get(f"/equity-extended/earnings-calendar/{quote(str(identifier))}", params)
97
+ async def ebitda_estimates(self, identifier: str, **params: Any) -> Any:
98
+ """EBITDA Estimates API"""
99
+ return await self._get(f"/equity-extended/ebitda-estimates/{quote(str(identifier))}", params)
100
+ async def financials_reported(self, identifier: str, **params: Any) -> Any:
101
+ """As-Reported Financials API"""
102
+ return await self._get(f"/equity-extended/financials-reported/{quote(str(identifier))}", params)
103
+ async def index_history(self, symbol: str, **params: Any) -> Any:
104
+ """Index Historical Constituents API"""
105
+ return await self._get(f"/equity-extended/index-history/{quote(str(symbol))}", params)
106
+ async def isin_changes(self, **params: Any) -> Any:
107
+ """ISIN Change History API"""
108
+ return await self._get("/equity-extended/isin-changes", params)
109
+ async def market_news(self, **params: Any) -> Any:
110
+ """Market News API"""
111
+ return await self._get("/equity-extended/market-news", params)
112
+ async def options_chain(self, identifier: str, **params: Any) -> Any:
113
+ """Options Chain API"""
114
+ return await self._get(f"/equity-extended/options-chain/{quote(str(identifier))}", params)
115
+ async def peers(self, identifier: str, **params: Any) -> Any:
116
+ """Company Peers API"""
117
+ return await self._get(f"/equity-extended/peers/{quote(str(identifier))}", params)
118
+ async def price_target_history(self, identifier: str, **params: Any) -> Any:
119
+ """Price Target History API"""
120
+ return await self._get(f"/equity-extended/price-target-history/{quote(str(identifier))}", params)
121
+ async def sec_company(self, ticker: str, **params: Any) -> Any:
122
+ """SEC Company Info API"""
123
+ return await self._get(f"/equity-extended/sec-company/{quote(str(ticker))}", params)
124
+ async def sec_filings(self, identifier: str, **params: Any) -> Any:
125
+ """SEC Filings API"""
126
+ return await self._get(f"/equity-extended/sec-filings/{quote(str(identifier))}", params)
127
+ async def short_interest(self, identifier: str, **params: Any) -> Any:
128
+ """Short Interest API"""
129
+ return await self._get(f"/equity-extended/short-interest/{quote(str(identifier))}", params)
130
+ async def short_volume(self, identifier: str, **params: Any) -> Any:
131
+ """Short Volume API"""
132
+ return await self._get(f"/equity-extended/short-volume/{quote(str(identifier))}", params)
133
+ async def supply_chain(self, ticker: str, **params: Any) -> Any:
134
+ """Supply Chain Relationships API"""
135
+ return await self._get(f"/equity-extended/supply-chain/{quote(str(ticker))}", params)
136
+ async def symbol_changes(self, **params: Any) -> Any:
137
+ """Symbol Change History API"""
138
+ return await self._get("/equity-extended/symbol-changes", params)
139
+ async def tech_indicators(self, identifier: str, **params: Any) -> Any:
140
+ """Technical Indicators Time Series API"""
141
+ return await self._get(f"/equity-extended/tech-indicators/{quote(str(identifier))}", params)
142
+ async def technical_signals(self, identifier: str, **params: Any) -> Any:
143
+ """Technical Signals API"""
144
+ return await self._get(f"/equity-extended/technical-signals/{quote(str(identifier))}", params)
145
+ async def xbrl_fact(self, ticker: str, tag: str, **params: Any) -> Any:
146
+ """XBRL Fact Time Series API"""
147
+ return await self._get(f"/equity-extended/xbrl/fact/{quote(str(ticker))}/{quote(str(tag))}", params)
148
+ async def xbrl_facts(self, ticker: str, **params: Any) -> Any:
149
+ """SEC XBRL Facts API"""
150
+ return await self._get(f"/equity-extended/xbrl/facts/{quote(str(ticker))}", params)
@@ -0,0 +1,60 @@
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 Etf(SyncResource):
10
+ def countries(self, identifier: str, **params: Any) -> Any:
11
+ """ETF Countries API"""
12
+ return self._get(f"/etf/countries/{quote(str(identifier))}", params)
13
+ def description(self, identifier: str, **params: Any) -> Any:
14
+ """ETF Description API"""
15
+ return self._get(f"/etf/description/{quote(str(identifier))}", params)
16
+ def flows(self, ticker: str, **params: Any) -> Any:
17
+ """ETF Flows API"""
18
+ return self._get(f"/etf/flows/{quote(str(ticker))}", params)
19
+ def holdings(self, identifier: str, **params: Any) -> Any:
20
+ """ETF Holdings API"""
21
+ return self._get(f"/etf/holdings/{quote(str(identifier))}", params)
22
+ def list(self, start: str, end: str, **params: Any) -> Any:
23
+ """ETF List API"""
24
+ return self._get(f"/etf/list/{quote(str(start))}/{quote(str(end))}", params)
25
+ def profile(self, identifier: str, **params: Any) -> Any:
26
+ """ETF Profile API"""
27
+ return self._get(f"/etf/profile/{quote(str(identifier))}", params)
28
+ def quotes(self, identifier: str, **params: Any) -> Any:
29
+ """ETF Quotes API"""
30
+ return self._get(f"/etf/quotes/{quote(str(identifier))}", params)
31
+ def sectors(self, identifier: str, **params: Any) -> Any:
32
+ """ETF Sectors API"""
33
+ return self._get(f"/etf/sectors/{quote(str(identifier))}", params)
34
+
35
+
36
+ class AsyncEtf(AsyncResource):
37
+ async def countries(self, identifier: str, **params: Any) -> Any:
38
+ """ETF Countries API"""
39
+ return await self._get(f"/etf/countries/{quote(str(identifier))}", params)
40
+ async def description(self, identifier: str, **params: Any) -> Any:
41
+ """ETF Description API"""
42
+ return await self._get(f"/etf/description/{quote(str(identifier))}", params)
43
+ async def flows(self, ticker: str, **params: Any) -> Any:
44
+ """ETF Flows API"""
45
+ return await self._get(f"/etf/flows/{quote(str(ticker))}", params)
46
+ async def holdings(self, identifier: str, **params: Any) -> Any:
47
+ """ETF Holdings API"""
48
+ return await self._get(f"/etf/holdings/{quote(str(identifier))}", params)
49
+ async def list(self, start: str, end: str, **params: Any) -> Any:
50
+ """ETF List API"""
51
+ return await self._get(f"/etf/list/{quote(str(start))}/{quote(str(end))}", params)
52
+ async def profile(self, identifier: str, **params: Any) -> Any:
53
+ """ETF Profile API"""
54
+ return await self._get(f"/etf/profile/{quote(str(identifier))}", params)
55
+ async def quotes(self, identifier: str, **params: Any) -> Any:
56
+ """ETF Quotes API"""
57
+ return await self._get(f"/etf/quotes/{quote(str(identifier))}", params)
58
+ async def sectors(self, identifier: str, **params: Any) -> Any:
59
+ """ETF Sectors API"""
60
+ return await self._get(f"/etf/sectors/{quote(str(identifier))}", 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 FairValue(SyncResource):
10
+ def by_isin(self, identifier: str, **params: Any) -> Any:
11
+ """Fair Value"""
12
+ return self._get(f"/fair-value/by-isin/{quote(str(identifier))}", params)
13
+
14
+
15
+ class AsyncFairValue(AsyncResource):
16
+ async def by_isin(self, identifier: str, **params: Any) -> Any:
17
+ """Fair Value"""
18
+ return await self._get(f"/fair-value/by-isin/{quote(str(identifier))}", params)
@@ -0,0 +1,46 @@
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 FixedIncome(SyncResource):
10
+ def analytics(self, body: Any = None, **params: Any) -> Any:
11
+ """Bond Analytics"""
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("/fixed-income/analytics", body, params)
18
+ def curve_forward(self, **params: Any) -> Any:
19
+ """Forward Curve"""
20
+ return self._get("/fixed-income/curve/forward", params)
21
+ def curve_spot(self, **params: Any) -> Any:
22
+ """Spot Curve"""
23
+ return self._get("/fixed-income/curve/spot", params)
24
+ def default_probabilities(self, **params: Any) -> Any:
25
+ """Implied Default Probabilities"""
26
+ return self._get("/fixed-income/default-probabilities", params)
27
+
28
+
29
+ class AsyncFixedIncome(AsyncResource):
30
+ async def analytics(self, body: Any = None, **params: Any) -> Any:
31
+ """Bond Analytics"""
32
+ if body is None and params:
33
+ body, params = params, None
34
+ elif isinstance(body, dict) and params:
35
+ body = {**body, **params}
36
+ params = None
37
+ return await self._post("/fixed-income/analytics", body, params)
38
+ async def curve_forward(self, **params: Any) -> Any:
39
+ """Forward Curve"""
40
+ return await self._get("/fixed-income/curve/forward", params)
41
+ async def curve_spot(self, **params: Any) -> Any:
42
+ """Spot Curve"""
43
+ return await self._get("/fixed-income/curve/spot", params)
44
+ async def default_probabilities(self, **params: Any) -> Any:
45
+ """Implied Default Probabilities"""
46
+ return await self._get("/fixed-income/default-probabilities", 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 Forex(SyncResource):
10
+ def list(self, **params: Any) -> Any:
11
+ """Forex List API"""
12
+ return self._get("/forex/list", params)
13
+ def rates(self, basecurrency: str, **params: Any) -> Any:
14
+ """Forex Rates API"""
15
+ return self._get(f"/forex/rates/{quote(str(basecurrency))}", params)
16
+
17
+
18
+ class AsyncForex(AsyncResource):
19
+ async def list(self, **params: Any) -> Any:
20
+ """Forex List API"""
21
+ return await self._get("/forex/list", params)
22
+ async def rates(self, basecurrency: str, **params: Any) -> Any:
23
+ """Forex Rates API"""
24
+ return await self._get(f"/forex/rates/{quote(str(basecurrency))}", params)
@@ -0,0 +1,60 @@
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 Fundamentals(SyncResource):
10
+ def annual_report(self, identifier: str, **params: Any) -> Any:
11
+ """Annual Report JSON (10-K)"""
12
+ return self._get(f"/fundamentals/annual-report/{quote(str(identifier))}", params)
13
+ def company(self, identifier: str, **params: Any) -> Any:
14
+ """SEC Company Info"""
15
+ return self._get(f"/fundamentals/company/{quote(str(identifier))}", params)
16
+ def facts_search(self, **params: Any) -> Any:
17
+ """XBRL Tag Search"""
18
+ return self._get("/fundamentals/facts/search", params)
19
+ def financials(self, identifier: str, **params: Any) -> Any:
20
+ """XBRL Financial Facts"""
21
+ return self._get(f"/fundamentals/financials/{quote(str(identifier))}", params)
22
+ def financials_balance_sheet(self, identifier: str, **params: Any) -> Any:
23
+ """Balance Sheet"""
24
+ return self._get(f"/fundamentals/financials/{quote(str(identifier))}/balance-sheet", params)
25
+ def financials_cash_flow(self, identifier: str, **params: Any) -> Any:
26
+ """Cash Flow Statement"""
27
+ return self._get(f"/fundamentals/financials/{quote(str(identifier))}/cash-flow", params)
28
+ def financials_income_statement(self, identifier: str, **params: Any) -> Any:
29
+ """Income Statement"""
30
+ return self._get(f"/fundamentals/financials/{quote(str(identifier))}/income-statement", params)
31
+ def financials_ratios(self, identifier: str, **params: Any) -> Any:
32
+ """Financial Ratios"""
33
+ return self._get(f"/fundamentals/financials/{quote(str(identifier))}/ratios", params)
34
+
35
+
36
+ class AsyncFundamentals(AsyncResource):
37
+ async def annual_report(self, identifier: str, **params: Any) -> Any:
38
+ """Annual Report JSON (10-K)"""
39
+ return await self._get(f"/fundamentals/annual-report/{quote(str(identifier))}", params)
40
+ async def company(self, identifier: str, **params: Any) -> Any:
41
+ """SEC Company Info"""
42
+ return await self._get(f"/fundamentals/company/{quote(str(identifier))}", params)
43
+ async def facts_search(self, **params: Any) -> Any:
44
+ """XBRL Tag Search"""
45
+ return await self._get("/fundamentals/facts/search", params)
46
+ async def financials(self, identifier: str, **params: Any) -> Any:
47
+ """XBRL Financial Facts"""
48
+ return await self._get(f"/fundamentals/financials/{quote(str(identifier))}", params)
49
+ async def financials_balance_sheet(self, identifier: str, **params: Any) -> Any:
50
+ """Balance Sheet"""
51
+ return await self._get(f"/fundamentals/financials/{quote(str(identifier))}/balance-sheet", params)
52
+ async def financials_cash_flow(self, identifier: str, **params: Any) -> Any:
53
+ """Cash Flow Statement"""
54
+ return await self._get(f"/fundamentals/financials/{quote(str(identifier))}/cash-flow", params)
55
+ async def financials_income_statement(self, identifier: str, **params: Any) -> Any:
56
+ """Income Statement"""
57
+ return await self._get(f"/fundamentals/financials/{quote(str(identifier))}/income-statement", params)
58
+ async def financials_ratios(self, identifier: str, **params: Any) -> Any:
59
+ """Financial Ratios"""
60
+ return await self._get(f"/fundamentals/financials/{quote(str(identifier))}/ratios", params)
@@ -0,0 +1,32 @@
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 Funds(SyncResource):
10
+ def form_d(self, cik: Optional[str] = None, **params: Any) -> Any:
11
+ """Form D Filings by CIK"""
12
+ if cik is not None:
13
+ return self._get(f"/funds/form-d/{quote(str(cik))}", params)
14
+ return self._get("/funds/form-d", params)
15
+ def nport(self, cik: Optional[str] = None, **params: Any) -> Any:
16
+ """N-PORT Holdings by CIK"""
17
+ if cik is not None:
18
+ return self._get(f"/funds/nport/{quote(str(cik))}", params)
19
+ return self._get("/funds/nport", params)
20
+
21
+
22
+ class AsyncFunds(AsyncResource):
23
+ async def form_d(self, cik: Optional[str] = None, **params: Any) -> Any:
24
+ """Form D Filings by CIK"""
25
+ if cik is not None:
26
+ return await self._get(f"/funds/form-d/{quote(str(cik))}", params)
27
+ return await self._get("/funds/form-d", params)
28
+ async def nport(self, cik: Optional[str] = None, **params: Any) -> Any:
29
+ """N-PORT Holdings by CIK"""
30
+ if cik is not None:
31
+ return await self._get(f"/funds/nport/{quote(str(cik))}", params)
32
+ return await self._get("/funds/nport", 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 Government(SyncResource):
10
+ def contracts(self, ticker: str, **params: Any) -> Any:
11
+ """Government Contracts API"""
12
+ return self._get(f"/government/contracts/{quote(str(ticker))}", params)
13
+ def stats(self, ticker: str, **params: Any) -> Any:
14
+ """Government Contract Statistics API"""
15
+ return self._get(f"/government/stats/{quote(str(ticker))}", params)
16
+ def treasury_auctions(self, **params: Any) -> Any:
17
+ """Treasury Auction Results API"""
18
+ return self._get("/government/treasury/auctions", params)
19
+ def treasury_debt(self, **params: Any) -> Any:
20
+ """US National Debt API"""
21
+ return self._get("/government/treasury/debt", params)
22
+ def treasury_yields(self, **params: Any) -> Any:
23
+ """Daily Treasury Yield Curve API"""
24
+ return self._get("/government/treasury/yields", params)
25
+
26
+
27
+ class AsyncGovernment(AsyncResource):
28
+ async def contracts(self, ticker: str, **params: Any) -> Any:
29
+ """Government Contracts API"""
30
+ return await self._get(f"/government/contracts/{quote(str(ticker))}", params)
31
+ async def stats(self, ticker: str, **params: Any) -> Any:
32
+ """Government Contract Statistics API"""
33
+ return await self._get(f"/government/stats/{quote(str(ticker))}", params)
34
+ async def treasury_auctions(self, **params: Any) -> Any:
35
+ """Treasury Auction Results API"""
36
+ return await self._get("/government/treasury/auctions", params)
37
+ async def treasury_debt(self, **params: Any) -> Any:
38
+ """US National Debt API"""
39
+ return await self._get("/government/treasury/debt", params)
40
+ async def treasury_yields(self, **params: Any) -> Any:
41
+ """Daily Treasury Yield Curve API"""
42
+ return await self._get("/government/treasury/yields", 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 IceSwap(SyncResource):
10
+ def data(self, code: str, **params: Any) -> Any:
11
+ """ICE-SWAP data api"""
12
+ return self._get(f"/ice-swap/{quote(str(code))}", params)
13
+
14
+
15
+ class AsyncIceSwap(AsyncResource):
16
+ async def data(self, code: str, **params: Any) -> Any:
17
+ """ICE-SWAP data api"""
18
+ return await self._get(f"/ice-swap/{quote(str(code))}", params)
@@ -0,0 +1,34 @@
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 Index(SyncResource):
10
+ def basket(self, body: Any = None, **params: Any) -> Any:
11
+ """Custom Basket Builder"""
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("/index/basket", body, params)
18
+ def constituents(self, id: str, **params: Any) -> Any:
19
+ """Index Constituents"""
20
+ return self._get(f"/index/constituents/{quote(str(id))}", params)
21
+
22
+
23
+ class AsyncIndex(AsyncResource):
24
+ async def basket(self, body: Any = None, **params: Any) -> Any:
25
+ """Custom Basket Builder"""
26
+ if body is None and params:
27
+ body, params = params, None
28
+ elif isinstance(body, dict) and params:
29
+ body = {**body, **params}
30
+ params = None
31
+ return await self._post("/index/basket", body, params)
32
+ async def constituents(self, id: str, **params: Any) -> Any:
33
+ """Index Constituents"""
34
+ return await self._get(f"/index/constituents/{quote(str(id))}", params)
@@ -0,0 +1,60 @@
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 Institutional(SyncResource):
10
+ def form_13f(self, cik: str, **params: Any) -> Any:
11
+ """SEC 13F Holdings by Filer"""
12
+ return self._get(f"/institutional/13f/{quote(str(cik))}", params)
13
+ def form_13f_filers(self, **params: Any) -> Any:
14
+ """Top 13F Filers"""
15
+ return self._get("/institutional/13f-filers", params)
16
+ def form_13f_holders(self, ticker: str, **params: Any) -> Any:
17
+ """SEC 13F Institutional Holders of a Stock"""
18
+ return self._get(f"/institutional/13f-holders/{quote(str(ticker))}", params)
19
+ def fund_holders(self, ticker: str, **params: Any) -> Any:
20
+ """Fund Institutional Holders of a Stock"""
21
+ return self._get(f"/institutional/fund-holders/{quote(str(ticker))}", params)
22
+ def fund_holdings(self, cik: str, **params: Any) -> Any:
23
+ """Fund Institutional Holdings by Filer"""
24
+ return self._get(f"/institutional/fund-holdings/{quote(str(cik))}", params)
25
+ def portfolio(self, cik: str, **params: Any) -> Any:
26
+ """Institutional 13-F Portfolio API"""
27
+ return self._get(f"/institutional/portfolio/{quote(str(cik))}", params)
28
+ def profile(self, cik: str, **params: Any) -> Any:
29
+ """Institutional Investor Profile API"""
30
+ return self._get(f"/institutional/profile/{quote(str(cik))}", params)
31
+ def top_holders(self, **params: Any) -> Any:
32
+ """Top Institutional Holders"""
33
+ return self._get("/institutional/top-holders", params)
34
+
35
+
36
+ class AsyncInstitutional(AsyncResource):
37
+ async def form_13f(self, cik: str, **params: Any) -> Any:
38
+ """SEC 13F Holdings by Filer"""
39
+ return await self._get(f"/institutional/13f/{quote(str(cik))}", params)
40
+ async def form_13f_filers(self, **params: Any) -> Any:
41
+ """Top 13F Filers"""
42
+ return await self._get("/institutional/13f-filers", params)
43
+ async def form_13f_holders(self, ticker: str, **params: Any) -> Any:
44
+ """SEC 13F Institutional Holders of a Stock"""
45
+ return await self._get(f"/institutional/13f-holders/{quote(str(ticker))}", params)
46
+ async def fund_holders(self, ticker: str, **params: Any) -> Any:
47
+ """Fund Institutional Holders of a Stock"""
48
+ return await self._get(f"/institutional/fund-holders/{quote(str(ticker))}", params)
49
+ async def fund_holdings(self, cik: str, **params: Any) -> Any:
50
+ """Fund Institutional Holdings by Filer"""
51
+ return await self._get(f"/institutional/fund-holdings/{quote(str(cik))}", params)
52
+ async def portfolio(self, cik: str, **params: Any) -> Any:
53
+ """Institutional 13-F Portfolio API"""
54
+ return await self._get(f"/institutional/portfolio/{quote(str(cik))}", params)
55
+ async def profile(self, cik: str, **params: Any) -> Any:
56
+ """Institutional Investor Profile API"""
57
+ return await self._get(f"/institutional/profile/{quote(str(cik))}", params)
58
+ async def top_holders(self, **params: Any) -> Any:
59
+ """Top Institutional Holders"""
60
+ return await self._get("/institutional/top-holders", params)
@@ -0,0 +1,34 @@
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 InterestRates(SyncResource):
10
+ def rates(self, series_id: Optional[str] = None, **params: Any) -> Any:
11
+ """FRED interest rate history"""
12
+ if series_id is not None:
13
+ return self._get(f"/interest-rates/rates/{quote(str(series_id))}", params)
14
+ return self._get("/interest-rates/rates", params)
15
+ def spreads(self, **params: Any) -> Any:
16
+ """US Treasury spreads (latest)"""
17
+ return self._get("/interest-rates/spreads", params)
18
+ def yield_curve(self, **params: Any) -> Any:
19
+ """US Treasury yield curve (latest)"""
20
+ return self._get("/interest-rates/yield-curve", params)
21
+
22
+
23
+ class AsyncInterestRates(AsyncResource):
24
+ async def rates(self, series_id: Optional[str] = None, **params: Any) -> Any:
25
+ """FRED interest rate history"""
26
+ if series_id is not None:
27
+ return await self._get(f"/interest-rates/rates/{quote(str(series_id))}", params)
28
+ return await self._get("/interest-rates/rates", params)
29
+ async def spreads(self, **params: Any) -> Any:
30
+ """US Treasury spreads (latest)"""
31
+ return await self._get("/interest-rates/spreads", params)
32
+ async def yield_curve(self, **params: Any) -> Any:
33
+ """US Treasury yield curve (latest)"""
34
+ return await self._get("/interest-rates/yield-curve", params)