Skip to main content

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 OracleInfos 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

driftpy-0.7.90.tar.gz (143.2 kB view details)

Uploaded Source

Built Distribution

driftpy-0.7.90-py3-none-any.whl (176.1 kB view details)

Uploaded Python 3

File details

Details for the file driftpy-0.7.90.tar.gz.

File metadata

  • Download URL: driftpy-0.7.90.tar.gz
  • Upload date:
  • Size: 143.2 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

Hashes for driftpy-0.7.90.tar.gz
Algorithm Hash digest
SHA256 3f01ecf8d6ebf8dae68b68cecd0941e03e26cf7552cbc3b011119ba09da997b4
MD5 236d1d36811c8d76c849e2307bb59b75
BLAKE2b-256 5de165d86a3562078f13d6077e1f2a9aab621686ce4b53728fa78977b17b8830

See more details on using hashes here.

File details

Details for the file driftpy-0.7.90-py3-none-any.whl.

File metadata

  • Download URL: driftpy-0.7.90-py3-none-any.whl
  • Upload date:
  • Size: 176.1 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

Hashes for driftpy-0.7.90-py3-none-any.whl
Algorithm Hash digest
SHA256 945df815f735e250a8dab24a6f5f7189fe922798d25ba432a81e4119d4bf5d48
MD5 34e6f4a766b3c8962478b9da2b2bf0fb
BLAKE2b-256 e159678322f58e1e7b5d2eb621a1b0924c47ef8b3af3ec61d017e6d438e8b889

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page