Finkovsky SDK — Python
Typed Python client for the Finkovsky API — technical analysis, equity data, Taiwan market, and economic indicators.
pip install finkovsky
Requires Python 3.10+.
Three Ways to Use
1. Agent / LLM tool call (synchronous)
from finkovsky import Client, CreditError, RateLimitError
fk = Client(api_key="sk-...") # or set FINKOVSKY_API_KEY
try:
result = fk.ta.analyze(symbol="AAPL")
print(result)
except CreditError as e:
print(f"out of credits: {e.remaining}/{e.required}")
except RateLimitError as e:
print(f"slow down: retry after {e.retry_after}s")
See examples/agent_tool_wrapping.md for framework-specific wrapping patterns.
2. Notebook / quantitative research
from finkovsky import Client
from finkovsky.pandas import to_dataframe
fk = Client()
df = to_dataframe(fk.tw.ohlcv(symbol="2330", days=90))
df["close"].plot()
Install the pandas extra: pip install 'finkovsky[pandas]'.
3. Async backend service
import asyncio
from finkovsky import AsyncClient
async def main():
async with AsyncClient() as fk:
result = await fk.ta.analyze(symbol="AAPL")
print(result)
asyncio.run(main())
Authentication
Client(api_key="sk-...")— explicit key.Client()— readsFINKOVSKY_API_KEY; raisesAuthErrorif neither is set.Client(api_key="sk-...", base_url="https://staging.example.com")— override for staging/self-hosted deployments.
Error Hierarchy
| Exception | HTTP trigger | Meaning |
|---|---|---|
AuthError |
401, 403, missing key | Credentials need fixing. |
CreditError |
402 | Out of credits; carries remaining / required. |
RateLimitError |
429 | Too many requests; carries retry_after. |
APIError |
other 4xx, 5xx | Carries status_code, body, request_id. |
ValidationError |
client-side | Response could not be parsed into the expected schema. |
Endpoint Reference
All routes are available via client.<namespace>.<method>(...). The generated typed surface lives in src/finkovsky/_facade.py.
Development
cd sdk/python
pip install -e '.[dev]'
./scripts/gen.sh # regenerate from a running API
./scripts/gen.sh --check # drift check
pytest -m "not integration"
License
MIT — same as the parent repository.
Metadata
Release files for finkovsky 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| finkovsky-0.5.0.tar.gz | 69.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| finkovsky-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 289.0 kB
Release files / finkovsky-0.5.0.tar.gz
| Download URL | finkovsky-0.5.0.tar.gz |
|---|---|
| Size | 69.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
06bbc7282ec9f9629abd8cf788b4c58a643d31643f78ac1e99b67865511c8fde
|
|
BLAKE2b-256 checksum How to use checksums |
32ea021a759dfbf17e7ce3709b6bd45c3d89876edde819652ac79b25cb58c5a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|
Release files / finkovsky-0.5.0-py3-none-any.whl
| Download URL | finkovsky-0.5.0-py3-none-any.whl |
|---|---|
| Size | 219.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
059994d915d35b9a0852043c41c4b2431dfc1de6677c6b7017c064a8b562a197
|
|
BLAKE2b-256 checksum How to use checksums |
031f09e9b42cd3ee937eeb6e825197fddd42f5685752e4e6c8e14e47df15122f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|
Security for finkovsky 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.