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.30] - 2025-07-08

Changes in 0.1.30

  • added H in the raw code

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.30.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.30-py3-none-any.whl (73.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: grvt_pysdk-0.1.30.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.30.tar.gz
Algorithm Hash digest
SHA256 8ddac1d1f7f8f7be97e76ef7e9815da0034d1df1312007f59d8a1cd2cad9c60b
MD5 1403ab4734a1a7ab9deeb3748f48fe59
BLAKE2b-256 7466061f1282a850c0037ba76141d9a1bc669459596a8e072955d85ee71788a0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: grvt_pysdk-0.1.30-py3-none-any.whl
  • Upload date:
  • Size: 73.3 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.30-py3-none-any.whl
Algorithm Hash digest
SHA256 f8f52a46828ca25c2a32f085858f89782253bd2c480dd43ff8f057b1fcbc7366
MD5 279352e0a0eb8ce080deafecc082b133
BLAKE2b-256 9580738eafbbb00447ec56da06c66faec3711a71e5e6f94ba6def82c987a3072

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