
Product
Socket Now Supports pylock.toml Files
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.
A Python SDK for VALR cryptocurrency exchange APIs.
::
pip install valr-python
You can also install the in-development version with::
pip install https://github.com/jonathanelscpt/valr-python/archive/master.zip
Authenticating to VALR API private resources requires a valid API Key from the VALR exchange <https://www.valr.com/>
_.
To use the synchronous REST API client:
.. code-block:: python
>>> from valr_python import Client
>>> from valr_python.exceptions import IncompleteOrderWarning
>>> from decimal import Decimal
>>>
>>> c = Client(api_key='api_key', api_secret='api_secret')
>>> c.rate_limiting_support = True # honour HTTP 429 "Retry-After" header values
>>> limit_order = {
... "side": "SELL",
... "quantity": Decimal('0.1'),
... "price": Decimal('10000'),
... "pair": "BTCZAR",
... "post_only": True,
... }
>>> try:
... res = c.post_limit_order(**limit_order)
... order_id = res['id']
... print(order_id)
... except IncompleteOrderWarning as w: # HTTP 202 Accepted handling for incomplete orders
... order_id = w.data['id']
... print(order_id)
... except Exception as e:
... print(e)
"558f5e0a-ffd1-46dd-8fae-763d93fa2f25"
The asynchronous REST API client is still in development. Coming soon!
To use the WebSocket API client:
.. code-block:: python
>>> import asyncio
>>> from typing import Dict
>>> from pprint import pprint
>>> from valr_python import WebSocketClient
>>> from valr_python.enum import TradeEvent
>>> from valr_python.enum import WebSocketType
>>>
>>> def pretty_hook(data: Dict):
... pprint(data)
>>>
>>> c = WebSocketClient(api_key='api_key', api_secret='api_secret', currency_pairs=['BTCZAR'],
... ws_type=WebSocketType.TRADE.name,
... trade_subscriptions=[TradeEvent.MARKET_SUMMARY_UPDATE.name],
... hooks={TradeEvent.MARKET_SUMMARY_UPDATE.name: pretty_hook})
>>> loop = asyncio.get_event_loop()
>>> loop.run_until_complete(c.run())
{'currencyPairSymbol': 'BTCZAR',
'data': {'askPrice': '151601',
'baseVolume': '314.7631144',
'bidPrice': '151600',
'changeFromPrevious': '2.14',
'created': '2020-02-06T22:47:03.129Z',
'currencyPairSymbol': 'BTCZAR',
'highPrice': '152440',
'lastTradedPrice': '151600',
'lowPrice': '146765',
'previousClosePrice': '148410',
'quoteVolume': '47167382.04552981'},
'type': 'MARKET_SUMMARY_UPDATE'}
This library leverages :code:websockets
and :code:asyncio
and is thus a coroutine-based API client. Both of
VALR's Account WebSocket connection and Trade WebSocket connection API endpoints are included. Furthermore,
the SDK fully supports VALR's subscription methods for both :code:Account
and :code:Trade
endpoints.
Please see the VALR API documentation <https://docs.valr.com/>
_ for further information.
For each subscription, a hook must be provided to process the WS responses. Failing to do so raises
a :code:HookNotFoundError
exception. For ease of use, several :code:Enum
classes have been implemented
(as showcased above) for client instantiation and hook consumption of API responses. However, client input is
accepted in :code:str
format.
Although not completely minimalistic, please note that the SDK is implemented as a thin client and parsing of API streams response is left up to the application user.
To execute all tests run::
tox
Note, to combine the coverage data from all the tox environments run:
.. list-table:: :widths: 10 90 :stub-columns: 1
- - Windows
- ::
set PYTEST_ADDOPTS=--cov-append
tox
- - Other
- ::
PYTEST_ADDOPTS=--cov-append tox
If this library has helped you or if you would like to support future development, donations are most welcome:
============== ========================================== Cryptocurrency Address ============== ========================================== BTC 38c7QWggrB2HLUJZFmhAC2zh4t8C57c1ec ETH 0x01eD3b58a07c6d005281Db76e6c1AE2bfF2226AD ============== ==========================================
json
with simplejson
for speed improvementsDecimal
support and JSON serialization handlingtyping
support for all API callsIncompleteOrderWarning
on receiving 202 Accepted
response to support
custom handling of incomplete ordersTooManyRequestsWarning
during 429 handlingFAQs
Python SDK for the VALR REST API
We found that valr-python demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.
Security News
Research
Socket uncovered two npm packages that register hidden HTTP endpoints to delete all files on command.
Research
Security News
Malicious Ruby gems typosquat Fastlane plugins to steal Telegram bot tokens, messages, and files, exploiting demand after Vietnam’s Telegram ban.