A Python interface for the Coinbase Pro API.
Project description
Features
Full support of Coinbase Pro REST API
- Pythonic abstractions for a clean interface
Return values are returned as Python data types instead of all string values:
>>> import coinbasepro as cbp >>> client = cbp.PublicClient() # datetime and Decimal are among the return types in the dict returned # by this call: >>> client.get_product_ticker('BTC-USD') {'trade_id': 2845680, 'price': Decimal('2496.69000000'), 'size': Decimal('0.00100000'), 'time': datetime.datetime(2019, 3, 20, 23, 53, 59, 596000), 'bid': Decimal('2496.69'), 'ask': Decimal('2496.7'), 'volume': Decimal('771.51495215')}
Paginated endpoints are abstracted as generators:
>>> import itertools # get_product_trades is a generator >>> client.get_product_trades('BTC-USD') <generator object PublicClient.get_product_trades.<locals>.<genexpr> at 0x1098d6f68> # Get 2 most recent trades. For many trade requests (>100), multiple # HTTP requests will be made under the hood. >>> list(itertools.islice(client.get_product_trades('BTC-USD'), 2)) [{'time': datetime.datetime(2019, 3, 21, 0, 2, 45, 609000), 'trade_id': 2845779, 'price': Decimal('2463.38000000'), 'size': Decimal('0.00100000'), 'side': 'buy'}, {'time': datetime.datetime(2019, 3, 21, 0, 2, 39, 877000), 'trade_id': 2845778, 'price': Decimal('2463.39000000'), 'size': Decimal('0.00100000'), 'side': 'sell'}]
Warts in the Coinbase REST API are smoothed out:
# CBPro API returns raw candles from this call as tuples, which would # require user to look up value meaning in API docs. This python API # returns candles as a list of dicts, similar to other API endpoints. # Get first candle: >>> client.get_product_historic_rates('BTC-USD')[0] {'time': datetime.datetime(2019, 3, 21, 0, 6), 'low': Decimal('2463.3'), 'high': Decimal('2463.31'), 'open': Decimal('2463.3'), 'close': Decimal('2463.31'), 'volume': Decimal('0.006')}
Python API uses typing available in Python3:
# Example function prototype in API def get_product_ticker(self, product_id: str) -> Dict[str, Any]:
Exceptions to enable easy handling of Coinbase error responses
>>> client.get_product_ticker(product_id='fake_product')
coinbasepro.exceptions.CoinbaseAPIError: NotFound
>>> auth_client = cbp.AuthenticatedClient(key='fake',
secret='fake',
passphrase='fake')
>>> auth_client.get_accounts()
coinbasepro.exceptions.BadRequest: Invalid API Key
# Authenticated client using API key which doesn't have withdrawal
# privileges:
>>> auth_client.withdraw_to_coinbase(0.01, 'BTC', 'fake_acct_id')
coinbasepro.exceptions.InvalidAuthorization: Forbidden
# This call throws a BadRequest exception
>>> auth_client.get_order('invalid_order_num')
coinbasepro.exceptions.BadRequest: Invalid order id
# CoinbaseAPIError is the parent exception for all exceptions the API
# throws, so catching this will catch anything
>>> try:
>>> auth_client.get_order('invalid_order_num')
>>> except cbp.exceptions.CoinbaseAPIError as e:
>>> print('Caught error: {}'.format(e))
Caught error: Invalid order id
Installation
$ pip install coinbasepro
Release History
dev
[Short description of non-trivial change.]
0.1.0 (2019-03-20)
Improvements
Return values are now Pythonic types (i.e Decimal, datetime) instead of all string types.
Python3 typing now used to help with development using this API.
Docstring improvements and changes to match updated interface.
A bit more documentation in the readme.
Bugfixes
Update requests version to >=2.20.0 to address security vulnerability.
0.0.7 (2018-09-09)
Bugfixes
Fix parameter name for get_product_historic_rates.
0.0.6 (2018-08-23)
Improvements
Update parameter validation for get_fills to reflect Coinbase API change.
Bugfixes
Fixed bug where parameters had no effect in get_product_historic_rates.
Fixed bug where product_id parameter had no effect in cancel_all.
0.0.5 (2018-08-21)
Improvements
Add exceptions for Coinbase error responses.
0.0.4 (2018-07-15)
Improvements
Updated stop orders to latest API.
Bugfixes
Fix issue with time in force error checking.
0.0.3 (2018-07-07)
Improvements
Rename deposit and withdraw methods to clarify action.
Bugfixes
Removed margin endpoints - now unsupported.
0.0.2 (2018-07-01)
Improvements
Client request timeout is now configurable.
0.0.1 (2018-06-27)
Hello world.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for coinbasepro-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b55918a04b5e9d1ddf78c8bfac1dd8783694fdf36b68b32379372e077bb7a1e5 |
|
MD5 | eb045bd730f3a7401e1d1293d092766b |
|
BLAKE2b-256 | 5aef9558583153e01c4ae8f5b2f369e8ce31095750da61e73e55055cae87faae |