jesse-dydx-v3-python


Namejesse-dydx-v3-python JSON
Version 1.0.4 PyPI version JSON
download
home_pagehttps://github.com/jesse-ai/dydx-v3-python
SummarydYdX Python REST API for Limit Orders
upload_time2023-09-24 15:12:28
maintainer
docs_urlNone
authorSaleh Mir
requires_python
licenseApache 2.0
keywords dydx exchange rest api defi ethereum eth
VCS
bugtrack_url
requirements aiohttp cytoolz dateparser ecdsa eth_keys eth-account mpmath requests six sympy web3
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center"><img src="https://dydx.exchange/flat.svg" width="256" /></p>

<div align="center">
  <a href='https://pypi.org/project/dydx-v3-python'>
    <img src='https://img.shields.io/pypi/v/dydx-v3-python.svg' alt='PyPI'/>
  </a>
  <a href='https://github.com/dydxprotocol/dydx-v3-python/blob/master/LICENSE'>
    <img src='https://img.shields.io/github/license/dydxprotocol/dydx-v3-python.svg' alt='License' />
  </a>
</div>
<br>

Python client for dYdX (v3 API).

The library is currently tested against Python versions 2.7, 3.4, 3.5, 3.6, 3.9, and 3.11.

## Installation

The `dydx-v3-python` package is available on [PyPI](https://pypi.org/project/dydx-v3-python). Install with `pip`:

```bash
pip install dydx-v3-python
```

## Getting Started

The `Client` object can be created with different levels of authentication depending on which features are needed. For more complete examples, see the [examples](./examples/) directory, as well as [the integration tests](./integration_tests/).

### Public endpoints

No authentication information is required to access public endpoints.

```python
from dydx3 import Client
from web3 import Web3

#
# Access public API endpoints.
#
public_client = Client(
    host='http://localhost:8080',
)
public_client.public.get_markets()
```

### Private endpoints

One of the following is required:
* `api_key_credentials`
* `eth_private_key`
* `web3`
* `web3_account`
* `web3_provider`

```python
#
# Access private API endpoints, without providing a STARK private key.
#
private_client = Client(
    host='http://localhost:8080',
    api_key_credentials={ 'key': '...', ... },
)
private_client.private.get_orders()
private_client.private.create_order(
    # No STARK key, so signatures are required for orders and withdrawals.
    signature='...',
    # ...
)

#
# Access private API endpoints, with a STARK private key.
#
private_client_with_key = Client(
    host='http://localhost:8080',
    api_key_credentials={ 'key': '...', ... },
    stark_private_key='...',
)
private_client.private.create_order(
    # Order will be signed using the provided STARK private key.
    # ...
)
```

### Onboarding and API key management endpoints

One of the following is required:
* `eth_private_key`
* `web3`
* `web3_account`
* `web3_provider`

```python
#
# Onboard a new user or manage API keys, without providing private keys.
#
web3_client = Client(
    host='http://localhost:8080',
    web3_provider=Web3.HTTPProvider('http://localhost:8545'),
)
web3_client.onboarding.create_user(
    stark_public_key='...',
    ethereum_address='...',
)
web3_client.eth_private.create_api_key(
    ethereum_address='...',
)

#
# Onboard a new user or manage API keys, with private keys.
#
web3_client_with_keys = Client(
    host='http://localhost:8080',
    stark_private_key='...',
    eth_private_key='...',
)
web3_client_with_keys.onboarding.create_user()
web3_client_with_keys.eth_private.create_api_key()
```

### Using the C++ Library for STARK Signing

By default, STARK curve operations such as signing and verification will use the Python native implementation. These operations occur whenever placing an order or requesting a withdrawal. To use the C++ implementation, initialize the client object with `crypto_c_exports_path`:

```python
client = Client(
    crypto_c_exports_path='./libcrypto_c_exports.so',
    ...
)
```

The path should point to a C++ shared library file, built from Starkware's `crypto-cpp` library ([CMake target](https://github.com/starkware-libs/crypto-cpp/blob/601de408bee9f897315b8a5cb0c88e2450a91282/src/starkware/crypto/ffi/CMakeLists.txt#L3)) for the particular platform (e.g. Linux, etc.) that you are running your trading program on.

## Running tests

If you want to run tests when developing the library locally, clone the repo and run:

```
pip install -r requirements.txt
docker-compose up # In a separate terminal
V3_API_HOST=<api-host> tox
```

NOTE: `api-host` should be `https://api.stage.dydx.exchange` to test in staging.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jesse-ai/dydx-v3-python",
    "name": "jesse-dydx-v3-python",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "dydx exchange rest api defi ethereum eth",
    "author": "Saleh Mir",
    "author_email": "saleh@jesse.trade",
    "download_url": "https://files.pythonhosted.org/packages/53/6b/b5dd069d026fddc11cdf379494000db1fbd0207bca63c50352c91aec411b/jesse-dydx-v3-python-1.0.4.tar.gz",
    "platform": null,
    "description": "<p align=\"center\"><img src=\"https://dydx.exchange/flat.svg\" width=\"256\" /></p>\n\n<div align=\"center\">\n  <a href='https://pypi.org/project/dydx-v3-python'>\n    <img src='https://img.shields.io/pypi/v/dydx-v3-python.svg' alt='PyPI'/>\n  </a>\n  <a href='https://github.com/dydxprotocol/dydx-v3-python/blob/master/LICENSE'>\n    <img src='https://img.shields.io/github/license/dydxprotocol/dydx-v3-python.svg' alt='License' />\n  </a>\n</div>\n<br>\n\nPython client for dYdX (v3 API).\n\nThe library is currently tested against Python versions 2.7, 3.4, 3.5, 3.6, 3.9, and 3.11.\n\n## Installation\n\nThe `dydx-v3-python` package is available on [PyPI](https://pypi.org/project/dydx-v3-python). Install with `pip`:\n\n```bash\npip install dydx-v3-python\n```\n\n## Getting Started\n\nThe `Client` object can be created with different levels of authentication depending on which features are needed. For more complete examples, see the [examples](./examples/) directory, as well as [the integration tests](./integration_tests/).\n\n### Public endpoints\n\nNo authentication information is required to access public endpoints.\n\n```python\nfrom dydx3 import Client\nfrom web3 import Web3\n\n#\n# Access public API endpoints.\n#\npublic_client = Client(\n    host='http://localhost:8080',\n)\npublic_client.public.get_markets()\n```\n\n### Private endpoints\n\nOne of the following is required:\n* `api_key_credentials`\n* `eth_private_key`\n* `web3`\n* `web3_account`\n* `web3_provider`\n\n```python\n#\n# Access private API endpoints, without providing a STARK private key.\n#\nprivate_client = Client(\n    host='http://localhost:8080',\n    api_key_credentials={ 'key': '...', ... },\n)\nprivate_client.private.get_orders()\nprivate_client.private.create_order(\n    # No STARK key, so signatures are required for orders and withdrawals.\n    signature='...',\n    # ...\n)\n\n#\n# Access private API endpoints, with a STARK private key.\n#\nprivate_client_with_key = Client(\n    host='http://localhost:8080',\n    api_key_credentials={ 'key': '...', ... },\n    stark_private_key='...',\n)\nprivate_client.private.create_order(\n    # Order will be signed using the provided STARK private key.\n    # ...\n)\n```\n\n### Onboarding and API key management endpoints\n\nOne of the following is required:\n* `eth_private_key`\n* `web3`\n* `web3_account`\n* `web3_provider`\n\n```python\n#\n# Onboard a new user or manage API keys, without providing private keys.\n#\nweb3_client = Client(\n    host='http://localhost:8080',\n    web3_provider=Web3.HTTPProvider('http://localhost:8545'),\n)\nweb3_client.onboarding.create_user(\n    stark_public_key='...',\n    ethereum_address='...',\n)\nweb3_client.eth_private.create_api_key(\n    ethereum_address='...',\n)\n\n#\n# Onboard a new user or manage API keys, with private keys.\n#\nweb3_client_with_keys = Client(\n    host='http://localhost:8080',\n    stark_private_key='...',\n    eth_private_key='...',\n)\nweb3_client_with_keys.onboarding.create_user()\nweb3_client_with_keys.eth_private.create_api_key()\n```\n\n### Using the C++ Library for STARK Signing\n\nBy default, STARK curve operations such as signing and verification will use the Python native implementation. These operations occur whenever placing an order or requesting a withdrawal. To use the C++ implementation, initialize the client object with `crypto_c_exports_path`:\n\n```python\nclient = Client(\n    crypto_c_exports_path='./libcrypto_c_exports.so',\n    ...\n)\n```\n\nThe path should point to a C++ shared library file, built from Starkware's `crypto-cpp` library ([CMake target](https://github.com/starkware-libs/crypto-cpp/blob/601de408bee9f897315b8a5cb0c88e2450a91282/src/starkware/crypto/ffi/CMakeLists.txt#L3)) for the particular platform (e.g. Linux, etc.) that you are running your trading program on.\n\n## Running tests\n\nIf you want to run tests when developing the library locally, clone the repo and run:\n\n```\npip install -r requirements.txt\ndocker-compose up # In a separate terminal\nV3_API_HOST=<api-host> tox\n```\n\nNOTE: `api-host` should be `https://api.stage.dydx.exchange` to test in staging.\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "dYdX Python REST API for Limit Orders",
    "version": "1.0.4",
    "project_urls": {
        "Homepage": "https://github.com/jesse-ai/dydx-v3-python"
    },
    "split_keywords": [
        "dydx",
        "exchange",
        "rest",
        "api",
        "defi",
        "ethereum",
        "eth"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3052898d1bb761bcaa8ae49f8adcd768f08914831c80335466c27511cea9d568",
                "md5": "fb70469b24a1021f96cd11bed2b02867",
                "sha256": "da8bf72d448cd3c5ae57cbfdfcc91acef573650e57a26caf395d6cb32b7d1817"
            },
            "downloads": -1,
            "filename": "jesse_dydx_v3_python-1.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fb70469b24a1021f96cd11bed2b02867",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 109068,
            "upload_time": "2023-09-24T15:12:26",
            "upload_time_iso_8601": "2023-09-24T15:12:26.448980Z",
            "url": "https://files.pythonhosted.org/packages/30/52/898d1bb761bcaa8ae49f8adcd768f08914831c80335466c27511cea9d568/jesse_dydx_v3_python-1.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "536bb5dd069d026fddc11cdf379494000db1fbd0207bca63c50352c91aec411b",
                "md5": "40da5a58194f2e42a2be189b5dac3011",
                "sha256": "5d7a1bf295aa3e14fdb8c597405b557e3f3abce79f91f00854aef21b663ca1a1"
            },
            "downloads": -1,
            "filename": "jesse-dydx-v3-python-1.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "40da5a58194f2e42a2be189b5dac3011",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 95594,
            "upload_time": "2023-09-24T15:12:28",
            "upload_time_iso_8601": "2023-09-24T15:12:28.781033Z",
            "url": "https://files.pythonhosted.org/packages/53/6b/b5dd069d026fddc11cdf379494000db1fbd0207bca63c50352c91aec411b/jesse-dydx-v3-python-1.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-24 15:12:28",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jesse-ai",
    "github_project": "dydx-v3-python",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "aiohttp",
            "specs": [
                [
                    ">=",
                    "3.8.1"
                ]
            ]
        },
        {
            "name": "cytoolz",
            "specs": [
                [
                    "==",
                    "0.12.1"
                ]
            ]
        },
        {
            "name": "dateparser",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "ecdsa",
            "specs": [
                [
                    ">=",
                    "0.16.0"
                ]
            ]
        },
        {
            "name": "eth_keys",
            "specs": []
        },
        {
            "name": "eth-account",
            "specs": [
                [
                    "<",
                    "0.6.0"
                ],
                [
                    ">=",
                    "0.4.0"
                ]
            ]
        },
        {
            "name": "mpmath",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.22.0"
                ],
                [
                    "<",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.14"
                ]
            ]
        },
        {
            "name": "sympy",
            "specs": [
                [
                    "==",
                    "1.6"
                ]
            ]
        },
        {
            "name": "web3",
            "specs": [
                [
                    "<",
                    "6.0.0"
                ],
                [
                    ">=",
                    "5.0.0"
                ]
            ]
        }
    ],
    "tox": true,
    "lcname": "jesse-dydx-v3-python"
}
        
Elapsed time: 0.12179s