All notable changes should be documented in this file.
The format is based on Keep a Changelog, and this project adheres to semantic versioning.
- Nothing (yet).
- A
timeoutargument forAPI.query_public()orAPI.query_private(), to set a time-out period for that particular query. (#67) krakenex.API.json_options()to set options to the JSON de-serialiser, to be used on query responses. (#87)- An
examples/json-options.pyexample to demonstrate the above. (#88)
- Updated examples using
pandasto post-v0.17.0 sorting. (#29)
For a detailed list of changes, refer to the same-number releases below.
- Everything network-related now handled by
requests. See its docs if needed. (#11) krakenex.APIclass no longer has aconnattribute for connection manipulation. It has been replaced by asessionattribute, which is arequests.Session. For custom networking setups, directly modifysessionattribute of akrakenex.APIobject.krakenex.APIconstructor no longer acceptsconnargument as a means of re-using an existingkrakenex.Connectionobject. Instead, modifykrakenex.API.sessionif needed, same as above.- If you were previously calling
API.query_private()orAPI.query_public()in atry/exceptblock, be aware that these two may now throw arequests.exceptions.HTTPErrorinstead of the previoushttp.client.HTTPException, if the underlyingConnectionreturns a non-20x status code.
- The remote servers are unstable under high load, which is most of the time. No recovery mechanism is provided for failed queries. (#66)
Most importantly, queries that may seem to have failed due to a 502
HTTP error may in fact reach the trade execution engine, with an
unpredictable delay. See PSA for an example.
After encountering a 502, a subsequent call to
krakenex.API.query_private() will construct a new query, with an
increased nonce. When used with an AddOrder query, this may
have disastrous effects, placing a duplicate order.
To work around this, instead reuse the krakenex.API.response.request
object, which is a requests.PreparedRequest, saved as part of
requests' operation when submitting the first query. This request
can be re-sent using krakenex.API.session.send().
Release candidate. Not recommended for production use.
- Fixed bug with dependencies not getting installed when following installation instructions in a clean virtual environment.
Yanked due to clean-room pip installation failing.
Internal alpha testing release! Not for general use. For that
reason, pip package not provided.
krakenex.API.sessionattribute, which is arequests.Session.krakenex.API.responseattribute, which is arequests.Responseobject for the previous query. It is available whether the query was successful or has failed.
- It is now recommended to install with
pipin avirtualenv. SeeREADMEfor details.
krakenex.Connectionclass. Obsoleted by use ofrequests.Session.krakenex.API.connattribute, which was akrakenex.Connectionobject.krakenex.API.set_connection()method (deprecated sincev1.0.0).
For a detailed list of changes, refer to the same-number releases below.
- If you were previously calling
API.query_private()orAPI.query_public()in atry/exceptblock, be aware that these two may now throw ahttp.client.HTTPException, if the underlyingConnectionreturns a non-20x status code. (#17)
krakenex.API.set_connection()method. Accesskrakenex.API.connattribute directly.
- There is no straightforward way to reset the
krakenex.APIobject's connectionkrakenex.API.conn. (#53)
The recommended workaround for now, assuming k = krakenex.API():
k.conn.close()
k.conn = NoneIf a connection is not closed prior to the reference being removed, the connection may continue to linger, preventing removal of the object by the garbage collector.
Release candidate. Not recommended for production use.
- Minimal Travis CI integration. (#45)
Internal alpha testing release! Not for general use. For that
reason, pip package not provided.
- Cleaned up examples.
Internal alpha testing release! Not for general use. For that
reason, pip package not provided.
- More examples.
- Low-level
Connection._requestnow raiseshttp.client.HTTPExceptionif response doesn't have20xstatus code. This propagates all the way up, toAPI.query_{private,public}. (#17)
- Fix new connection thrashing if one is not provided for reuse (as was described in the docs). (#27)
- Be explicit when using default arguments in functions that have optional ones. (#19)
- Renamed
NEWStoCHANGELOG.
krakenex.API.set_connection()method. Accesskrakenex.API.connattribute directly.
- Properly release key file descriptor after reading in key. (#7)
- Verbose docs, served at
https://python3-krakenex.readthedocs.io/.
- Single-source version and URL - used during setup and in
User-Agent. (#5)
- Ship examples with PyPI package.
- Renamed README and LICENSE according to PyPI recommendations.
- Change versioning scheme to semantic versioning (recommended by PyPI).
- Basic documentation with sphinx.
- Classes sub-classed from
object.
- Core license changed from GPLv3 to LGPLv3. Examples remain at Simplified BSD.
API.set_connection()method to set default connection.
- Fixed
User-Agentstill reporting version0.0.3.
conditional-closeexample.- Examples licensed under the Simplified BSD license.
- Original Python 2 version ported to Python 3.
API.load_key()method to allow loading key/secret pair from file.
- Basic implementation of
KrakenConnectionclass. - Optional
connargument to query methods allows connection reuse.
- Basic
APIclass withquery_{public,private}()methods. - Licensed under GPLv3.