Thirdwave Python SDK for interacting with blockchain wallet intelligence API
Project description
Python SDK for Thirdwave's API
Python client for interacting with the Thirdwave wallet intelligence API over gRPC
Installation
Install the SDK using pip:
pip install thirdwave-sdk
Usage
Synchronous Client Example
from thirdwave_sdk import ThirdwaveClient
# Initialize the client
thirdwave_client = ThirdwaveClient(api_key="MY-API-KEY")
thirdwave_client.initialize()
# Get a single wallet
wallet_result = thirdwave_client.wallet.get_one("0x0...")
print("Single Wallet Result:", wallet_result)
# Get multiple wallets
wallet_list = ["0x0...", "0x0..."]
for wallet in thirdwave_client.wallet.get_many(wallet_list):
print("Wallet from List:", wallet)
# Close the client
thirdwave_client.close()
Asynchronous Client Usage
import nest_asyncio
import asyncio
from thirdwave_sdk import ThirdwaveAsyncClient
# Apply nest_asyncio to allow nested event loops
nest_asyncio.apply()
async def main():
# Initialize the client
thirdwave_client = ThirdwaveAsyncClient(api_key="MY-API-KEY")
await thirdwave_client.initialize()
# Get a single wallet
wallet_result = await thirdwave_client.wallet.get_one("0x0...")
print("Single Wallet Result:", wallet_result)
# Get multiple wallets
wallet_list = ["0x0...", "0x0..."]
async for wallet in thirdwave_client.wallet.get_many(wallet_list):
print("Wallet from List:", wallet)
# Close the client
await thirdwave_client.close()
# Run the main function
if __name__ == "__main__":
asyncio.run(main())
WalletService
The ThirdwaveClient class utilizes the WalletService to interact with the EVM Wallet service over gRPC. The WalletService provides methods for retrieving wallet information, streaming multiple wallets, and adding a wallet via a gRPC stream.
Attributes
channel: The gRPC channel used to communicate with the EVM Wallet service. api_key: The API key for authenticating requests. stub: The gRPC stub for the EVM Wallet service.
Initialization
init(self, channel, api_key: str) Initializes the WalletService.
Parameters:
- channel: The gRPC channel to the EVM Wallet service.
- api_key (str): The API key to authenticate requests.
Methods:
async get_one(self, address: str | bytes) -> EvmWallet
Retrieves the information for a single wallet by address.
Parameters:
- address (str | bytes): The wallet address in string or bytes format.
Returns:
- EvmWallet: The wallet object containing the details of the wallet.
Raises:
grpc.RpcError: If the gRPC call fails.
async get_many(self, addresses: List[str] | List[bytes]) -> AsyncGenerator[EvmWallet, None]
Streams information for multiple wallets given a list of addresses.
Parameters:
- addresses (List[str] | List[bytes]): A list of wallet addresses in string or bytes format.
Yields:
EvmWallet: The wallet object for each address in the list.
Raises:
grpc.RpcError: If the gRPC call fails.
Dev Prerequisites
Setup virtual environment with direnv or poetry env
You can set up the virtual environment using either direnv or Poetry directly. Alternatively, you can set up a Poetry virtual environment by running make venv.
Setting Up Direnv
- Install
direnv:
Follow the installation instructions for your operating system.
-
Add this to
~/.direnvclayout_poetry() { if [[ ! -f pyproject.toml ]]; then log_error 'No pyproject.toml found. Use `poetry new` or `poetry init` to create one first.' exit 2 fi local VENV=$(dirname $(poetry run which python)) export VIRTUAL_ENV=$(echo "$VENV" | rev | cut -d'/' -f2- | rev) export POETRY_ACTIVE=1 PATH_add "$VENV" }
-
Create
.envrc:Create a
.envrcfile in the root of the project with the following content:layout poetry
Using Poetry to setup a virtual environment
To set up the virtual environment and install dependencies:
poetry env use python3.12
Setup Poetry and Install dependencies with make install
Update protocol buffers to the latest version
First remove existing protos with make clean_proto
make clean_proto
Pull latest proto files and build python stubs
make proto
Generate new proto files with make proto
Ensure that the generated code produced correct import paths, python's grpcio tools are not maintained as well as other languages and often generate code with broken imports
Project details
Release history Release notifications | RSS feed
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 thirdwave_sdk-0.1.2.tar.gz.
File metadata
- Download URL: thirdwave_sdk-0.1.2.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a88eab7cec9f12f8f6af61f02dd89e17ebce98fe8b1faaa203389daba6113189
|
|
| MD5 |
8e41f23e10c57839d54c50a5ac2a8eb4
|
|
| BLAKE2b-256 |
271a9874840efb8e24676b95862fd964676339213d0281d4f26079609c4fcff9
|
File details
Details for the file thirdwave_sdk-0.1.2-py3-none-any.whl.
File metadata
- Download URL: thirdwave_sdk-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
133f1f34e58a8fafde13eb57e69630ca88e7f281561278377de44b001862bce6
|
|
| MD5 |
3703f4bd229029418142d31337d76c35
|
|
| BLAKE2b-256 |
b9526dcf135820ce0a25ead9320a4caadb2ae88c9b8bc16b70445c4685308ba1
|