A Python client for the Drift DEX
Project description
DriftPy
DriftPy is the Python client for the Drift protocol. It allows you to trade and fetch data from Drift using Python.
Read the full SDK documentation here!
Installation
pip install driftpy
Note: requires Python >= 3.10.
SDK Examples
examples/
folder includes more examples of how to use the SDK including how to provide liquidity/become an lp, stake in the insurance fund, etc.
Note on using QuickNode
If you are using QuickNode free plan, you must use AccountSubscriptionConfig("demo")
, and you can only subscribe to 1 perp market and 1 spot market at a time.
Non-QuickNode free RPCs (including the public mainnet-beta url) can use cached
as well.
Example setup for AccountSubscriptionConfig("demo")
:
# This example will listen to perp markets 0 & 1 and spot market 0
# If you are listening to any perp markets, you must listen to spot market 0 or the SDK will break
perp_markets = [0, 1]
spot_market_oracle_infos, perp_market_oracle_infos, spot_market_indexes = get_markets_and_oracles(perp_markets = perp_markets)
oracle_infos = spot_market_oracle_infos + perp_market_oracle_infos
drift_client = DriftClient(
connection,
wallet,
"mainnet",
perp_market_indexes = perp_markets,
spot_market_indexes = spot_market_indexes,
oracle_infos = oracle_infos,
account_subscription = AccountSubscriptionConfig("demo"),
)
await drift_client.subscribe()
If you intend to use AccountSubscriptionConfig("demo)
, you must call get_markets_and_oracles
to get the information you need.
get_markets_and_oracles
will return all the necessary OracleInfo
s and market_indexes
in order to use the SDK.
Development
Setting Up Dev Env
bash setup.sh
Ensure correct python version (using pyenv is recommended):
pyenv install 3.10.11
pyenv global 3.10.11
poetry env use $(pyenv which python)
Install dependencies:
poetry install
To run tests, first ensure you have set up the RPC url, then run pytest
:
export MAINNET_RPC_ENDPOINT="<YOUR_RPC_URL>"
export DEVNET_RPC_ENDPOINT="https://api.devnet.solana.com" # or your own RPC
poetry run pytest -v -s -x tests/ci/*.py
poetry run pytest -v -s tests/math/*.py
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
File details
Details for the file driftpy-0.7.89.tar.gz
.
File metadata
- Download URL: driftpy-0.7.89.tar.gz
- Upload date:
- Size: 143.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.10 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9781abd22dfc4904780fa185887ff3eab18848585ec2a0b95dc279fadb741749 |
|
MD5 | 12a0af68d4f852d53677c0cd26b9043d |
|
BLAKE2b-256 | 57af7f14734a3b272fa0866c1aa81840e9badf971265687ddd2a29b7bea714dc |
File details
Details for the file driftpy-0.7.89-py3-none-any.whl
.
File metadata
- Download URL: driftpy-0.7.89-py3-none-any.whl
- Upload date:
- Size: 176.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.10 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1bb8d1ccd49628e92fc887a17dac8acf682044017c1b1c1d07245765923d2d9 |
|
MD5 | aa9a95a39106f14f14e65901fcc5dd0e |
|
BLAKE2b-256 | ebd686ba854bf0192d08ed75548b8150e053efd20d92f8023d2156abe5ca5e37 |