Paradex Python SDK
Project description
Paradex Python SDK
Paradex Python SDK provides a simple interface to interact with the Paradex REST and WS API.
Examples
L1 + L2 Authentication (Traditional)
from paradex_py import Paradex
from paradex_py.environment import Environment
paradex = Paradex(env=Environment.TESTNET, l1_address="0x...", l1_private_key="0x...")
print(hex(paradex.account.l2_address)) # 0x...
print(hex(paradex.account.l2_public_key)) # 0x...
print(hex(paradex.account.l2_private_key)) # 0x...
L2-Only Authentication (Subkey)
from paradex_py import ParadexSubkey
from paradex_py.environment import Environment
# Use ParadexSubkey for L2-only authentication
paradex = ParadexSubkey(
env=Environment.TESTNET,
l2_private_key="0x...",
l2_address="0x..."
)
print(hex(paradex.account.l2_address)) # 0x...
print(hex(paradex.account.l2_public_key)) # 0x...
print(hex(paradex.account.l2_private_key)) # 0x...
WebSocket Usage
The SDK provides two WebSocket client options:
Option 1: Async Client (Default)
Use the async client when you're comfortable with asyncio and need maximum performance:
async def on_message(ws_channel, message):
print(ws_channel, message)
await paradex.ws_client.connect()
await paradex.ws_client.subscribe(ParadexWebsocketChannel.MARKETS_SUMMARY, callback=on_message)
Option 2: Threaded Client (Synchronous)
Use the threaded client for simpler integration without asyncio knowledge:
from paradex_py.api.ws_client_threaded import ThreadedParadexWebsocketClient
from paradex_py.api.ws_client import ParadexWebsocketChannel
from paradex_py.environment import TESTNET
# Simple synchronous usage - no asyncio required
ws_client = ThreadedParadexWebsocketClient(env=TESTNET)
with ws_client:
ws_client.subscribe(ParadexWebsocketChannel.MARKETS_SUMMARY)
# Blocking call - waits for messages
msg = ws_client.get_updates(timeout=5.0)
if msg:
print(f"Channel: {msg.channel}, Data: {msg.data}")
When to use which:
| Feature | Async Client | Threaded Client |
|---|---|---|
| Asyncio knowledge | Required | Not required |
| Integration | Async codebases | Synchronous codebases |
| Performance | Optimal | Good |
| Complexity | Higher | Lower |
| Runtime subscription | Via callbacks | Via subscribe() anytime |
📖 For complete documentation refer to tradeparadex.github.io/paradex-py
💻 For comprehensive examples refer to following files:
- API (L1+L2): examples/call_rest_api.py
- API (L2-only): examples/subkey_rest_api.py
- WS Async (L1+L2): examples/connect_ws_api.py
- WS Threaded: examples/connect_ws_threaded.py
- WS (L2-only): examples/subkey_ws_api.py
- Transfer: examples/transfer_l2_usdc.py
Development
make install
make check
make test
make build
make clean-build
make publish
make build-and-publish
make docs-test
make docs
make help
Using uv
This project uses uv for managing dependencies and building. Below are instructions for installing uv and the basic workflow for development outside of using make commands.
Installing uv
uv is a fast and modern Python package manager. You can install it using the standalone installer for macOS and Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
For other installation methods, refer to the uv installation documentation.
Basic Workflow with uv
If you prefer not to use make commands, you can directly use uv for development tasks:
- Install dependencies: Sync your environment with the project's dependencies.
uv sync - Run tests: Execute the test suite using
pytestwithin theuvenvironment.uv run pytest
- Build the project: Create a distribution package for the SDK.
uv build
For more detailed information on using uv, refer to the uv documentation.
The CI/CD pipeline will be triggered when a new pull request is opened, code is merged to main, or when new release is created.
Notes
[!WARNING] Experimental SDK, library API is subject to change
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 paradex_py-0.6.1.tar.gz.
File metadata
- Download URL: paradex_py-0.6.1.tar.gz
- Upload date:
- Size: 417.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1333bb10fc3d91a426d8dea45a218e04df3778d5cfb424a095303a3495387c2c
|
|
| MD5 |
2e26ea95452094e1bae50aa0d5e58db0
|
|
| BLAKE2b-256 |
531ecf60cb152f01175995cff803920cfbceaa908f2c59063de6399800d9eb49
|
File details
Details for the file paradex_py-0.6.1-py3-none-any.whl.
File metadata
- Download URL: paradex_py-0.6.1-py3-none-any.whl
- Upload date:
- Size: 138.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a24fc7dd10b1230ad48bab7c5262e117aefd30839a903ff4eee8b3ef19de9b74
|
|
| MD5 |
1580563b9e5a2e6e66288e20b3dfe5c3
|
|
| BLAKE2b-256 |
fc4e0ef7f0aff18a2ab0fecb666c96111f807957d5c608c2a6b6d81c4f7a9205
|