Stocra.com python sdk
Project description
Stocra Python SDK
Synchronous client
Install
pip install stocra[synchronous]
# or
poetry add stocra --extras synchronous
Usage
from concurrent.futures import ThreadPoolExecutor
from decimal import Decimal
from requests import Session
from requests.adapters import HTTPAdapter
from stocra.synchronous.client import Stocra
from stocra.synchronous.error_handlers import retry_on_too_many_requests, retry_on_service_unavailable
adapter = HTTPAdapter(pool_connections=100, pool_maxsize=100)
session = Session()
session.mount('https://', adapter)
stocra_client = Stocra(
api_key="<api-key>", # optional
session=session, # optional
executor=ThreadPoolExecutor(), # optional
error_handlers=[
retry_on_service_unavailable,
retry_on_too_many_requests,
] # optional
)
# stream new blocks
for block in stocra_client.stream_new_blocks(blockchain="ethereum"):
print(block)
# stream new blocks, load new blocks in the background for faster processing.
# Works only if executor was provided during instantiation.
for block in stocra_client.stream_new_blocks_ahead(blockchain="ethereum"):
print(block)
# stream new transactions
for block, transaction in stocra_client.stream_new_transactions(blockchain="ethereum"):
print(block.height, transaction.hash)
# get one block
block = stocra_client.get_block(blockchain="bitcoin", hash_or_height=57043)
# get one transaction
transaction = stocra_client.get_transaction(
blockchain="bitcoin",
transaction_hash="a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d"
)
# get all transactions in block
transactions = stocra_client.get_all_transactions_of_block(blockchain="bitcoin", block=block)
for transaction in transactions:
print(transaction)
# scale token value
value = stocra_client.scale_token_value(
"ethereum",
"0xa49ded8b4607f958003e0d87d7f2d2f69bcadd41", # USDT
Decimal("34500000000000000000000000") # raw value in token transfer
)
Asynchronous client
Install
pip install stocra[asynchronous]
# or
poetry add stocra --extras asynchronous
Usage
from asyncio import Semaphore
from decimal import Decimal
from aiohttp import ClientSession
from stocra.asynchronous.client import Stocra
from stocra.asynchronous.error_handlers import retry_on_too_many_requests, retry_on_service_unavailable
session = ClientSession()
stocra_client = Stocra(
api_key="<api-key>", # optional
session=session, # optional
semaphore=Semaphore(50), # optional
error_handlers=[
retry_on_service_unavailable,
retry_on_too_many_requests,
] # optional
)
# stream new transactions
async for block, transaction in stocra_client.stream_new_transactions(blockchain="ethereum"):
print(block.height, transaction.hash)
# stream new blocks and always load next 5 blocks in the background.
# useful when you need to parse multiple blocks in short time span
async for block in stocra_client.stream_new_blocks(blockchain="ethereum", n_blocks_ahead=5):
print(block)
# get one block
block = await stocra_client.get_block(
blockchain="bitcoin",
hash_or_height="00000000152340ca42227603908689183edc47355204e7aca59383b0aaac1fd8"
)
# get one transaction
transaction = await stocra_client.get_transaction(
blockchain="bitcoin",
transaction_hash="a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d",
)
# get all transactions in block
transactions = stocra_client.get_all_transactions_of_block(blockchain="bitcoin", block=block)
async for transaction in transactions:
print(transaction)
# scale token value
value = await stocra_client.scale_token_value(
"ethereum",
"0xa49ded8b4607f958003e0d87d7f2d2f69bcadd41", # USDT
Decimal("34500000000000000000000000") # raw value in token transfer
)
Error handlers
Error handlers are functions that are called after a request fails.
They receive single argument, StocraHTTPError
and return boolean indicating whether to retry request (True) or raise (False).
Error handler signature: ErrorHandler = Callable[[StocraHTTPError], Union[bool, Awaitable[bool]]]
No errors handlers are used by default although there are two already defined for both sync and async version:
- synchronous error handlers: stocra.synchronous.error_handlers
- of asynchronous error handlers: stocra.asynchronous.error_handlers
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stocra-0.1.7.tar.gz.
File metadata
- Download URL: stocra-0.1.7.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.5 Linux/5.4.204-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbb6ab5f930486d26c63b24d11d6f85f91e30fb5f31558674a72a93a2e9ed8e3
|
|
| MD5 |
88d9389e9486816ed81bb9c43149083f
|
|
| BLAKE2b-256 |
49c888547272aea9973dddd377dd8aaece56a5d0c3283d42048eb3d28dd5bbbd
|
File details
Details for the file stocra-0.1.7-py3-none-any.whl.
File metadata
- Download URL: stocra-0.1.7-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.5 Linux/5.4.204-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f169c7bdb76090fb81b8a227bd367f703ad55f5814513c4b8ca390fd75e30662
|
|
| MD5 |
21a19fcbe806a4bcf8df17be672f9889
|
|
| BLAKE2b-256 |
3083c7744d420886361109c98b17aa082d3d1676bbcff0e99b7ff9be5887e089
|