eulerpool 1.0.0__tar.gz

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 (65) hide show
  1. eulerpool-1.0.0/.gitignore +192 -0
  2. eulerpool-1.0.0/LICENSE +21 -0
  3. eulerpool-1.0.0/PKG-INFO +146 -0
  4. eulerpool-1.0.0/README.md +117 -0
  5. eulerpool-1.0.0/eulerpool/__init__.py +281 -0
  6. eulerpool-1.0.0/eulerpool/_client.py +250 -0
  7. eulerpool-1.0.0/eulerpool/_version.py +3 -0
  8. eulerpool-1.0.0/eulerpool/errors.py +46 -0
  9. eulerpool-1.0.0/eulerpool/py.typed +0 -0
  10. eulerpool-1.0.0/eulerpool/resources/__init__.py +0 -0
  11. eulerpool-1.0.0/eulerpool/resources/_base.py +34 -0
  12. eulerpool-1.0.0/eulerpool/resources/aaq.py +18 -0
  13. eulerpool-1.0.0/eulerpool/resources/alternative.py +116 -0
  14. eulerpool-1.0.0/eulerpool/resources/analytics.py +50 -0
  15. eulerpool-1.0.0/eulerpool/resources/backtest.py +66 -0
  16. eulerpool-1.0.0/eulerpool/resources/bonds.py +36 -0
  17. eulerpool-1.0.0/eulerpool/resources/calendar.py +78 -0
  18. eulerpool-1.0.0/eulerpool/resources/certificates.py +30 -0
  19. eulerpool-1.0.0/eulerpool/resources/charting.py +42 -0
  20. eulerpool-1.0.0/eulerpool/resources/commodity.py +64 -0
  21. eulerpool-1.0.0/eulerpool/resources/crypto.py +30 -0
  22. eulerpool-1.0.0/eulerpool/resources/crypto_extended.py +246 -0
  23. eulerpool-1.0.0/eulerpool/resources/data.py +24 -0
  24. eulerpool-1.0.0/eulerpool/resources/datasets.py +100 -0
  25. eulerpool-1.0.0/eulerpool/resources/deals.py +28 -0
  26. eulerpool-1.0.0/eulerpool/resources/derivatives.py +68 -0
  27. eulerpool-1.0.0/eulerpool/resources/dex.py +54 -0
  28. eulerpool-1.0.0/eulerpool/resources/earning_calls.py +24 -0
  29. eulerpool-1.0.0/eulerpool/resources/ecb.py +34 -0
  30. eulerpool-1.0.0/eulerpool/resources/economic_forecasts.py +28 -0
  31. eulerpool-1.0.0/eulerpool/resources/energy.py +94 -0
  32. eulerpool-1.0.0/eulerpool/resources/equity.py +420 -0
  33. eulerpool-1.0.0/eulerpool/resources/equity_extended.py +150 -0
  34. eulerpool-1.0.0/eulerpool/resources/etf.py +60 -0
  35. eulerpool-1.0.0/eulerpool/resources/fair_value.py +18 -0
  36. eulerpool-1.0.0/eulerpool/resources/fixed_income.py +46 -0
  37. eulerpool-1.0.0/eulerpool/resources/forex.py +24 -0
  38. eulerpool-1.0.0/eulerpool/resources/fundamentals.py +60 -0
  39. eulerpool-1.0.0/eulerpool/resources/funds.py +32 -0
  40. eulerpool-1.0.0/eulerpool/resources/government.py +42 -0
  41. eulerpool-1.0.0/eulerpool/resources/ice_swap.py +18 -0
  42. eulerpool-1.0.0/eulerpool/resources/index.py +34 -0
  43. eulerpool-1.0.0/eulerpool/resources/institutional.py +60 -0
  44. eulerpool-1.0.0/eulerpool/resources/interest_rates.py +34 -0
  45. eulerpool-1.0.0/eulerpool/resources/macro.py +156 -0
  46. eulerpool-1.0.0/eulerpool/resources/market.py +214 -0
  47. eulerpool-1.0.0/eulerpool/resources/mutual_fund.py +42 -0
  48. eulerpool-1.0.0/eulerpool/resources/news.py +18 -0
  49. eulerpool-1.0.0/eulerpool/resources/nft.py +42 -0
  50. eulerpool-1.0.0/eulerpool/resources/partner.py +18 -0
  51. eulerpool-1.0.0/eulerpool/resources/patents.py +24 -0
  52. eulerpool-1.0.0/eulerpool/resources/peer_comparison.py +58 -0
  53. eulerpool-1.0.0/eulerpool/resources/portfolio.py +96 -0
  54. eulerpool-1.0.0/eulerpool/resources/portfolio_risk.py +58 -0
  55. eulerpool-1.0.0/eulerpool/resources/private_markets.py +24 -0
  56. eulerpool-1.0.0/eulerpool/resources/research.py +30 -0
  57. eulerpool-1.0.0/eulerpool/resources/risk_models.py +52 -0
  58. eulerpool-1.0.0/eulerpool/resources/screener.py +46 -0
  59. eulerpool-1.0.0/eulerpool/resources/sentiment.py +60 -0
  60. eulerpool-1.0.0/eulerpool/resources/shipping.py +58 -0
  61. eulerpool-1.0.0/eulerpool/resources/singapore.py +82 -0
  62. eulerpool-1.0.0/eulerpool/resources/transcripts.py +40 -0
  63. eulerpool-1.0.0/eulerpool/resources/trends.py +18 -0
  64. eulerpool-1.0.0/eulerpool/resources/vendor.py +28 -0
  65. eulerpool-1.0.0/pyproject.toml +53 -0
@@ -0,0 +1,192 @@
1
+ # Created by .ignore support plugin (hsz.mobi)
2
+ ### Node template
3
+ # Logs
4
+ /logs
5
+ *.log
6
+ save_file.csv
7
+ npm-debug.log*
8
+ yarn-debug.log*
9
+ yarn-error.log*
10
+ #yarn.lock
11
+ package-lock.json
12
+ # Runtime data
13
+ pids
14
+ *.pid
15
+ *.seed
16
+ *.pid.lock
17
+ kubernetes
18
+ output
19
+ public/translations/deMod.json
20
+ public/translations/minified/
21
+ public/translations/min/
22
+ public/translations/slim/
23
+ public/translations/stripped/
24
+ pages/testing.vue
25
+ layouts/blank.vue
26
+ .clinic
27
+ .venv-i18n/
28
+
29
+ # Directory for instrumented libs generated by jscoverage/JSCover
30
+ lib-cov
31
+
32
+ # Coverage directory used by tools like istanbul
33
+ coverage
34
+
35
+ # nyc test coverage
36
+ .nyc_output
37
+
38
+ # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
39
+ .grunt
40
+
41
+ # Bower dependency directory (https://bower.io/)
42
+ bower_components
43
+
44
+ # node-waf configuration
45
+ .lock-wscript
46
+
47
+ # Compiled binary addons (https://nodejs.org/api/addons.html)
48
+ build/Release
49
+
50
+ # Dependency directories
51
+ node_modules/
52
+ jspm_packages/
53
+
54
+ # TypeScript v1 declaration files
55
+ typings/
56
+
57
+ # Optional npm cache directory
58
+ .npm
59
+
60
+ # Optional eslint cache
61
+ .eslintcache
62
+
63
+ # Optional REPL history
64
+ .node_repl_history
65
+
66
+ # Output of 'npm pack'
67
+ *.tgz
68
+
69
+ # Yarn Integrity file
70
+ .yarn-integrity
71
+
72
+ # dotenv environment variables file
73
+ .env
74
+ .env.*
75
+
76
+ # parcel-bundler cache (https://parceljs.org/)
77
+ .cache
78
+
79
+ # next.js build output
80
+ .next
81
+
82
+ # nuxt.js build output
83
+ .nuxt
84
+
85
+ # Nuxt generate
86
+ dist
87
+ quantitativ
88
+ quantitativ-o*
89
+ quantitativ_generated.conf
90
+
91
+ # vuepress build output
92
+ .vuepress/dist
93
+
94
+ # Serverless directories
95
+ .serverless
96
+
97
+ # IDE / Editor
98
+ .idea
99
+
100
+ # Service worker (old workbox build output, not our custom sw.js)
101
+ sw.mjs
102
+
103
+ # macOS
104
+ .DS_Store
105
+
106
+ # Vim swap files
107
+ *.swp
108
+
109
+ # generated
110
+ all-companies.json
111
+ all-routes.json
112
+
113
+ ui-debug.log
114
+ test23022021
115
+ .runtimeconfig.json
116
+
117
+ # yarn 2 # not using zero-installs
118
+
119
+ .yarn/*
120
+ !.yarn/patches
121
+ !.yarn/releases
122
+ !.yarn/plugins
123
+ !.yarn/sdks
124
+ !.yarn/versions
125
+ .pnp.*
126
+ # Elastic Beanstalk Files
127
+ .elasticbeanstalk/*
128
+ !.elasticbeanstalk/*.cfg.yml
129
+ !.elasticbeanstalk/*.global.yml
130
+
131
+ .vscode/*
132
+ functions/
133
+
134
+ .mservice.y*ml
135
+ .output
136
+
137
+ components/testing
138
+
139
+ vite/temp
140
+
141
+ pages/api-docs-demo.vue
142
+ .env*.local
143
+ test-results
144
+
145
+ # Cursor
146
+ .cursor/mcp.json
147
+
148
+ # Python
149
+ __pycache__/
150
+ *.pyc
151
+
152
+ # Supabase
153
+ supabase/.temp/
154
+
155
+ # Persistent caches
156
+ .data/
157
+
158
+ # Cold-email engine PII (scraped addresses, SQLite queue)
159
+ growth/cold-email-engine/.env
160
+ growth/cold-email-engine/*.csv
161
+ growth/cold-email-engine/*.jsonl
162
+ growth/cold-email-engine/*.db
163
+ growth/cold-email-engine/*.db-*
164
+ growth/cold-email-engine/pipeline.log
165
+ growth/cold-email-engine/playstore/node_modules/
166
+ growth/cold-email-engine/resend_emails.json
167
+ growth/cold-email-engine/verification_cache.json
168
+
169
+ # Admin dashboard
170
+ admin/.env
171
+ admin/.nuxt
172
+ admin/.output
173
+ admin/node_modules
174
+
175
+ # GSC / GCP service-account keys (never commit)
176
+ .gsc-service-account.json
177
+ *-service-account.json
178
+ gcp-*.json
179
+
180
+ # One-off local profiling scripts
181
+ /coverage_profile.mjs
182
+ /profile_page.mjs
183
+ /timing_profile.mjs
184
+
185
+ # Debug/scratch artifacts (screenshots, one-off scripts) from agent sessions
186
+ *.tmp.*
187
+ *.tmp_*
188
+ *.tmp/
189
+ /shot_*.png
190
+ growth/data/
191
+ scripts/leadgen/OUT/
192
+ crawl-audit-data/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Eulerpool Research Systems
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,146 @@
1
+ Metadata-Version: 2.5
2
+ Name: eulerpool
3
+ Version: 1.0.0
4
+ Summary: Financial Data API for stocks, ETFs, forex, crypto, bonds, and macro. Official Python SDK from Eulerpool, The Financial Data Company. 100,000+ securities, 375+ endpoints, 100,000 free API calls/month.
5
+ Project-URL: Homepage, https://eulerpool.com/financial-data-api
6
+ Project-URL: Documentation, https://eulerpool.com/financial-data-api/sdks/python
7
+ Project-URL: Repository, https://github.com/eulerpool/eulerpool-python
8
+ Project-URL: Issues, https://github.com/eulerpool/eulerpool-python/issues
9
+ Project-URL: Get API Key, https://eulerpool.com/developers/register
10
+ Author-email: Eulerpool Research Systems <api@eulerpool.com>
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: bonds,crypto,etf,eulerpool,financial-data-api,forex,fundamentals,macro,market-data,sdk,stock-api,stock-market-api,stocks
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: Financial and Insurance Industry
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Office/Business :: Financial
25
+ Classifier: Typing :: Typed
26
+ Requires-Python: >=3.9
27
+ Requires-Dist: httpx>=0.24.0
28
+ Description-Content-Type: text/markdown
29
+
30
+ # Eulerpool SDK for Python
31
+
32
+ Official Python SDK for the [Eulerpool Financial Data API](https://eulerpool.com/developers).
33
+
34
+ ## Installation
35
+
36
+ ```bash
37
+ pip install eulerpool
38
+ ```
39
+
40
+ ## Quick Start
41
+
42
+ ```python
43
+ import eulerpool
44
+
45
+ client = eulerpool.Eulerpool("YOUR_API_KEY")
46
+
47
+ # Get a company profile
48
+ profile = client.equity.profile("US0378331005")
49
+ print(profile)
50
+
51
+ # Get income statement
52
+ income = client.equity.income_statement("US0378331005")
53
+
54
+ # Get ETF holdings
55
+ holdings = client.etf.holdings("IE00B4L5Y983")
56
+
57
+ # Get forex rates
58
+ rates = client.forex.rates("EUR")
59
+
60
+ # Get macro calendar
61
+ calendar = client.macro.calendar()
62
+
63
+ client.close()
64
+ ```
65
+
66
+ ## Context Manager
67
+
68
+ ```python
69
+ with eulerpool.Eulerpool("YOUR_API_KEY") as client:
70
+ profile = client.equity.profile("US0378331005")
71
+ ```
72
+
73
+ ## Async Support
74
+
75
+ ```python
76
+ import asyncio
77
+ import eulerpool
78
+
79
+ async def main():
80
+ async with eulerpool.AsyncEulerpool("YOUR_API_KEY") as client:
81
+ profile = await client.equity.profile("US0378331005")
82
+ income = await client.equity.income_statement("US0378331005")
83
+ print(profile)
84
+
85
+ asyncio.run(main())
86
+ ```
87
+
88
+ ## Authentication
89
+
90
+ Pass your API key when creating the client, or set `EULERPOOL_API_KEY`. By default it is sent as a `?token=` query parameter. To use the `Authorization: Bearer` header instead:
91
+
92
+ ```python
93
+ client = eulerpool.Eulerpool("YOUR_API_KEY", use_auth_header=True)
94
+ ```
95
+
96
+ Get your free API key at [eulerpool.com/developers/register](https://eulerpool.com/developers/register).
97
+
98
+ ## Configuration
99
+
100
+ ```python
101
+ client = eulerpool.Eulerpool(
102
+ "YOUR_API_KEY",
103
+ base_url="https://api.eulerpool.com/api/1", # default
104
+ use_auth_header=False, # default: use ?token= query param
105
+ max_retries=2, # default
106
+ timeout=30.0, # default: 30s
107
+ )
108
+ ```
109
+
110
+ ## Available Resources
111
+
112
+ 53 resources / 400+ methods, generated from the public OpenAPI spec. Common accessors:
113
+
114
+ `equity` `equity_extended` `etf` `macro` `forex` `bonds` `crypto` `crypto_extended` `market` `alternative` `sentiment` `research` `calendar` `screener` `mutual_fund` `commodity` `institutional` `certificates` `earning_calls` `index` `news` `trends` `ice_swap` `fair_value` `aaq` `analytics` `calendar` `charting` `energy` `fundamentals` `government` `shipping` `singapore` `transcripts`
115
+
116
+ Any path also works without a typed method:
117
+
118
+ ```python
119
+ client.get("/equity/profile/AAPL", language="en")
120
+ ```
121
+
122
+ ## Error Handling
123
+
124
+ ```python
125
+ from eulerpool import Eulerpool, AuthenticationError, RateLimitError
126
+
127
+ client = Eulerpool("YOUR_API_KEY")
128
+
129
+ try:
130
+ data = client.equity.profile("US0378331005")
131
+ except AuthenticationError:
132
+ print("Invalid API key")
133
+ except RateLimitError as e:
134
+ print(f"Rate limited. Retry after {e.retry_after}s")
135
+ ```
136
+
137
+ ## Requirements
138
+
139
+ - Python >= 3.9
140
+ - httpx >= 0.24.0
141
+
142
+ Pass the key explicitly or set `EULERPOOL_API_KEY`. Any undocumented path still works via `client.get("/path", **params)`.
143
+
144
+ ## License
145
+
146
+ MIT
@@ -0,0 +1,117 @@
1
+ # Eulerpool SDK for Python
2
+
3
+ Official Python SDK for the [Eulerpool Financial Data API](https://eulerpool.com/developers).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install eulerpool
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```python
14
+ import eulerpool
15
+
16
+ client = eulerpool.Eulerpool("YOUR_API_KEY")
17
+
18
+ # Get a company profile
19
+ profile = client.equity.profile("US0378331005")
20
+ print(profile)
21
+
22
+ # Get income statement
23
+ income = client.equity.income_statement("US0378331005")
24
+
25
+ # Get ETF holdings
26
+ holdings = client.etf.holdings("IE00B4L5Y983")
27
+
28
+ # Get forex rates
29
+ rates = client.forex.rates("EUR")
30
+
31
+ # Get macro calendar
32
+ calendar = client.macro.calendar()
33
+
34
+ client.close()
35
+ ```
36
+
37
+ ## Context Manager
38
+
39
+ ```python
40
+ with eulerpool.Eulerpool("YOUR_API_KEY") as client:
41
+ profile = client.equity.profile("US0378331005")
42
+ ```
43
+
44
+ ## Async Support
45
+
46
+ ```python
47
+ import asyncio
48
+ import eulerpool
49
+
50
+ async def main():
51
+ async with eulerpool.AsyncEulerpool("YOUR_API_KEY") as client:
52
+ profile = await client.equity.profile("US0378331005")
53
+ income = await client.equity.income_statement("US0378331005")
54
+ print(profile)
55
+
56
+ asyncio.run(main())
57
+ ```
58
+
59
+ ## Authentication
60
+
61
+ Pass your API key when creating the client, or set `EULERPOOL_API_KEY`. By default it is sent as a `?token=` query parameter. To use the `Authorization: Bearer` header instead:
62
+
63
+ ```python
64
+ client = eulerpool.Eulerpool("YOUR_API_KEY", use_auth_header=True)
65
+ ```
66
+
67
+ Get your free API key at [eulerpool.com/developers/register](https://eulerpool.com/developers/register).
68
+
69
+ ## Configuration
70
+
71
+ ```python
72
+ client = eulerpool.Eulerpool(
73
+ "YOUR_API_KEY",
74
+ base_url="https://api.eulerpool.com/api/1", # default
75
+ use_auth_header=False, # default: use ?token= query param
76
+ max_retries=2, # default
77
+ timeout=30.0, # default: 30s
78
+ )
79
+ ```
80
+
81
+ ## Available Resources
82
+
83
+ 53 resources / 400+ methods, generated from the public OpenAPI spec. Common accessors:
84
+
85
+ `equity` `equity_extended` `etf` `macro` `forex` `bonds` `crypto` `crypto_extended` `market` `alternative` `sentiment` `research` `calendar` `screener` `mutual_fund` `commodity` `institutional` `certificates` `earning_calls` `index` `news` `trends` `ice_swap` `fair_value` `aaq` `analytics` `calendar` `charting` `energy` `fundamentals` `government` `shipping` `singapore` `transcripts`
86
+
87
+ Any path also works without a typed method:
88
+
89
+ ```python
90
+ client.get("/equity/profile/AAPL", language="en")
91
+ ```
92
+
93
+ ## Error Handling
94
+
95
+ ```python
96
+ from eulerpool import Eulerpool, AuthenticationError, RateLimitError
97
+
98
+ client = Eulerpool("YOUR_API_KEY")
99
+
100
+ try:
101
+ data = client.equity.profile("US0378331005")
102
+ except AuthenticationError:
103
+ print("Invalid API key")
104
+ except RateLimitError as e:
105
+ print(f"Rate limited. Retry after {e.retry_after}s")
106
+ ```
107
+
108
+ ## Requirements
109
+
110
+ - Python >= 3.9
111
+ - httpx >= 0.24.0
112
+
113
+ Pass the key explicitly or set `EULERPOOL_API_KEY`. Any undocumented path still works via `client.get("/path", **params)`.
114
+
115
+ ## License
116
+
117
+ MIT