<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/sirEven/dydx-v3-python",
"name": "dydx-v3-python-sir",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "dydx exchange rest api defi ethereum eth",
"author": "dYdX Trading Inc. - sirEven fork",
"author_email": "sir_even@icloud.com",
"download_url": "https://files.pythonhosted.org/packages/35/07/b7b3facaa2c65827b43f410180b487306c7b130d19c254241a7c9a4e05f6/dydx-v3-python-sir-2.1.0.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 - sir_even fork",
"version": "2.1.0",
"project_urls": {
"Homepage": "https://github.com/sirEven/dydx-v3-python"
},
"split_keywords": [
"dydx",
"exchange",
"rest",
"api",
"defi",
"ethereum",
"eth"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6cf678dff4a9dd0a983cc4e1fb521418be45d8d130ec820a1de126627da24055",
"md5": "3e38e8d47953fadefa224b668511031a",
"sha256": "cd593d664555949f90822dc59e09de6f83a8b574ed9e4643e1c73bd26ac91912"
},
"downloads": -1,
"filename": "dydx_v3_python_sir-2.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3e38e8d47953fadefa224b668511031a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 109108,
"upload_time": "2024-10-26T20:57:35",
"upload_time_iso_8601": "2024-10-26T20:57:35.540241Z",
"url": "https://files.pythonhosted.org/packages/6c/f6/78dff4a9dd0a983cc4e1fb521418be45d8d130ec820a1de126627da24055/dydx_v3_python_sir-2.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3507b7b3facaa2c65827b43f410180b487306c7b130d19c254241a7c9a4e05f6",
"md5": "d02a5d510dc0859afb9e4a2130df04f3",
"sha256": "ba47759212e470fa039725892e8dbe48b8e166cdcbb314c11a63b9d7e20ba4da"
},
"downloads": -1,
"filename": "dydx-v3-python-sir-2.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d02a5d510dc0859afb9e4a2130df04f3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 96003,
"upload_time": "2024-10-26T20:57:37",
"upload_time_iso_8601": "2024-10-26T20:57:37.568452Z",
"url": "https://files.pythonhosted.org/packages/35/07/b7b3facaa2c65827b43f410180b487306c7b130d19c254241a7c9a4e05f6/dydx-v3-python-sir-2.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-26 20:57:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sirEven",
"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.4.0"
],
[
"<",
"0.6.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": "dydx-v3-python-sir"
}