Skip to main content

GRVT Python SDK

Project description

uv logo pre-commit logo ruff logo bandit logo pytest logo

Docker logo GitHub Actions logo

GRVT Python SDK

CodeQL GitHub CI GitHub license


Table of Contents


What's in the library

GRVT Python SDK library provides Python classes and utility methods for easy access to GRVT API endpoints across all environments.

Environments

  • prod - Production environment.
  • testnet - Testnet environment.
  • staging - Development Integration environment.
  • dev - Development environment.

SDK Library provides two types of classes:

  1. Raw - thin wrapper classes around Rest API.
  2. Ccxt-compatible - classes with ccxt-like methods. Provide access to both Rest API and WebSockets.

Files

Raw access:

  • grvt_raw_base.py - base classes for Rest API access.
  • grvt_raw_env.py - definitions of environments for raw access.
  • grvt_raw_signing.py - utility methods for signing orders.
  • grvt_raw_sync.py - class for raw synchronous calls to Rest API.
  • grvt_raw_async.py - class for raw asynchronous calls to Rest API.

CCXT-compatible access:

  • grvt_ccxt_utils.py - utility methods for signing orders.
  • grvt_ccxt_env.py - definitions of environments for ccxt-like access.
  • grvt_ccxt_base.py - base class for Rest API access.
  • grvt_ccxt.py - class for synchronous calls to Rest API.
  • grvt_ccxt_pro.py - class for asynchronous calls to Rest API.
  • grvt_ccxt_ws.py - class for WebSocket calls.

Installation via pip

pip install grvt-pysdk

Configuration

Setup these environment variables:

export GRVT_PRIVATE_KEY="`Secret Private Key` in API setup"
export GRVT_API_KEY="`API Key` in API setup"
export GRVT_TRADING_ACCOUNT_ID=<`Trading account ID` in API>
export GRVT_ENV="testnet"
export GRVT_END_POINT_VERSION="v1"
export GRVT_WS_STREAM_VERSION="v1"

Usage

Examples of how to use various methods to connect to GRVT API:

  • GRVT CCXT - Example of usage of CCXT-compatible Python class GrvtCcxt with synchronous Rest API calls.
  • GRVT CCXT Pro - Example of usage of CCXT.PRO-compatible Python class GrvtCcxtPro with asynchronous Rest API calls.
  • GRVT CCXT WS - Example of usage of CCXT.PRO-compatible Python class GrvtCcxtWS with asynchronous Rest API calls + Web Socket subscriptions + JSON RPC calls over Web Sockets.
  • GRVT API Sync - Synchronous API client for GRVT
  • GRVT API Async - Asynchronous API client for GRVT

Contributor's guide

Prerequisites

Installation of a source code

  1. Clone the git repository

    git clone https://github.com/grvt-technologies/grvt-pysdk.git
    
  2. Go into the project directory

    cd grvt-pysdk/
    
  3. Checkout working branch

    git checkout <branch>
    
  4. Install dependencies

    make install
    
  5. Enable pre-commit hooks

    pre-commit install
    

Manually run example files

Example files run extensive testing of the SDK API classes and log details about details of using GRVT API.

  1. Change to tests folder

    cd tests/pysdk
    
  2. Run example of using synchronous CCXT-compatible calls to Rest API via grvt_ccxt.py, class GrvtCcxt

    uv run python3 test_grvt_ccxt.py
    
  3. Run example of using asynchronous CCXT-compatible calls to Rest API via grvt_ccxt_pro.py, class GrvtCcxtPro

    uv run python3 test_grvt_ccxt_pro.py
    
  4. Run example of using WebSockets subscriptions and JSON RPC calls via grvt_ccxt_ws.py, class GrvtCcxtWS

    uv run python3 test_grvt_ccxt_ws.py
    

What's in the box ?

uv

uv is an extremely fast Python package and project manager, written in Rust.

pyproject.toml file (pyproject.toml): orchestrate your project and its dependencies uv.lock file (uv.lock): ensure that the package versions are consistent for everyone working on your project

For more configuration options and details, see the configuration docs.

pre-commit

pre-commit is a framework for managing and maintaining multi-language pre-commit hooks.

.pre-commit-config.yaml file (.pre-commit-config.yaml): describes what repositories and hooks are installed

For more configuration options and details, see the configuration docs.

ruff

ruff is an extremely fast Python linter, written in Rust.

Rules are defined in the pyproject.toml.

For more configuration options and details, see the configuration docs.

mypy

mypy is an optional static type checker for Python that aims to combine the benefits of dynamic (or "duck") typing and static typing.

Rules are defined in the pyproject.toml.

For more configuration options and details, see the configuration docs.

bandit

bandit is a tool designed to find common security issues in Python code.

Rules are defined in the pyproject.toml.

For more configuration options and details, see the configuration docs.

docformatter

docformatter is a tool designed to format docstrings to follow PEP 257.

Options are defined in the .pre-commit-config.yaml.


Testing

We are using pytest & pytest-cov to write tests.

To run tests with coverage:

make test
Name                                      Stmts   Miss  Cover
-------------------------------------------------------------
src/pysdk/__init__.py                         0      0   100%
src/pysdk/grvt_ccxt.py                      238     21    91%
src/pysdk/grvt_ccxt_base.py                 196     57    71%
src/pysdk/grvt_ccxt_env.py                   48     12    75%
src/pysdk/grvt_ccxt_logging_selector.py      15      7    53%
src/pysdk/grvt_ccxt_pro.py                  245     69    72%
src/pysdk/grvt_ccxt_test_utils.py            30      4    87%
src/pysdk/grvt_ccxt_types.py                 41      0   100%
src/pysdk/grvt_ccxt_utils.py                237     89    62%
src/pysdk/grvt_ccxt_ws.py                   275    238    13%
src/pysdk/grvt_raw_async.py                 149    109    27%
src/pysdk/grvt_raw_base.py                  154     69    55%
src/pysdk/grvt_raw_env.py                    27      5    81%
src/pysdk/grvt_raw_signing.py                33     17    48%
src/pysdk/grvt_raw_sync.py                  149    109    27%
src/pysdk/grvt_raw_types.py                1031      0   100%
-------------------------------------------------------------
TOTAL                                      2868    806    72%


=================================================================================================== 8 passed in 58.20s ====================================================================================================

Makefile

We are using Makefile to manage the project.

To see the list of commands:

make
  grvt-pysdk git:(main)  make
help                           Show this help
run                            Run the project
test                           Run the tests
precommit                      Run the pre-commit hooks
lint                           Run the linter
format                         Run the formatter
typecheck                      Run the type checker
security                       Run the security checker
clean                          Clean the project
install                        Install the project
build                          Build the project
publish                        Publish the project

Changelog

Changelog

Version [0.1.29] - 2025-06-30

Changes in 0.1.29

  • Added new currencies: HYPE, UNI, MOODENG, LAUNCHCOIN in the raw code
  • Improvements and type fixes in fetch_funding_rate_history() methods of GrvtCcxt and GrvtCcxtPro.

Version [0.1.28] - 2025-06-02

Changes in 0.1.28

  • Renamed currency name AI_16_Z into AI16Z in the raw code to match the exchange currency name.

Version [0.1.27] - 2025-05-19

Changes in 0.1.27

  • GrvtCcxt and GrvtCcxtPro classes:

    • renamed method fetch_balances() to fetch_balance() as defined in ccxt.

Version [0.1.26] - 2025-05-15

Added in 0.1.26

  • GrvtCcxt and GrvtCcxtPro classes:

    • new method describe() - returns a list of public method names
    • new method fetch_balances() - returns dict with balances in ccxt format.
    • constructor parameter order_book_ccxt_format: bool = False . If = True then order book snapshots from fetch_order_book() are in ccxt format.

Fixed in 0.1.26

  • Issues with typing and lynting errors

Version [0.1.25] - 2025-04-25

Fixed in 0.1.25

  • Issues with typing and lynting errors
  • Fixed bug in test_grvt_ccxt.py

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

grvt_pysdk-0.1.29.tar.gz (226.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grvt_pysdk-0.1.29-py3-none-any.whl (73.2 kB view details)

Uploaded Python 3

File details

Details for the file grvt_pysdk-0.1.29.tar.gz.

File metadata

  • Download URL: grvt_pysdk-0.1.29.tar.gz
  • Upload date:
  • Size: 226.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.15

File hashes

Hashes for grvt_pysdk-0.1.29.tar.gz
Algorithm Hash digest
SHA256 d7430701c95a5c2b1d4d473ef490bef1ee923a7b28ee1f7527922258f42287ae
MD5 f750a4d91afb5371d1d8ec6de523f810
BLAKE2b-256 7f792141d688a10541878bb5389e357c8ab64500af39b2cb104e4cd3f4af6999

See more details on using hashes here.

File details

Details for the file grvt_pysdk-0.1.29-py3-none-any.whl.

File metadata

  • Download URL: grvt_pysdk-0.1.29-py3-none-any.whl
  • Upload date:
  • Size: 73.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.15

File hashes

Hashes for grvt_pysdk-0.1.29-py3-none-any.whl
Algorithm Hash digest
SHA256 c6f1cd8c836faaa36ac0923a7a2dae5e3c4dd194b03110e2c988c47d05666795
MD5 8295a1c642b27abcc32e2125db532383
BLAKE2b-256 aa5b3b7fd9698bfb0d8324e3c4712f98792b58e5c8301df55617a9f81dced43b

See more details on using hashes here.

Supported by

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