Changelogs » Bitmex-trio-websocket

PyUp Safety actively tracks 262,873 Python packages for vulnerabilities and notifies you when to upgrade.



* Support multisymbol subscriptions per listener


* Bitmex trio websocket is now based on the [Slurry]( streaming data processing microframework.


* Documentation: Remove link to missing docs. See the readme for documentation.


* Better propagation of connection closure. Before, if the websocket was closed by the remote server for any reason, bitmex_trio_websocket would simply output a log message and take no further action. This is obviously a problem, because the client application now has no way to tell that the connection is closed, other than contrived means, like polling the underlying trio_websocket object periodically. Now, connection closure results in the following:
  * All listen channels will be closed. No reason is given for the closure.
  * Attemts to open new listen channels will cause trio.ClosedResourceError to be raised.
  * It is assumed that closing of listen channels causes the websocket context to exit in the client application. At context exit, the exception that caused the underlying trio_websocket to close is reraised as a notification to the client application.


* Fix: RuntimeError: dictionary changed size during iteration, when listeners added while simultaneously sending a message.


* Add support for custom user defined table keys.


* Fix: Multiple subscriptions to the same channel was not handled properly, resulting in log warnings.
  * Fix: Use pendulum to parse RFC 3339 timestamps


* Warning! Thorough refactoring resulting in major api changes. `BitMEXWebsocket` is now created using the `open_bitmex_websocket` function, which is a standalone async context manager. It returns a BitMEXWebsocket.
  * Deletions are now broadcasted to listeners.


* Fix: Uses aclosing from async_generator library for context management of all async generators to ensure safe garbage collection. Always ensure you context manage async generators. They *will* shoot you in the foot otherwise!
  * Fix: Handle response message from dead mans switch.


* Added optional dead mans switch. See:


* Fixed table storage for insert-only keyless tables, like tradeBin. Uses attributes from partial message instead of the keys list.


* Relaxed python dependency to 3.6


* Checks network argument to BitMEXWebsocket init method is valid.
  * storage.insert() method allows storage to be patched externally.


* Big refactoring.
  * Handles subscriptions individually per channel.
  * Data storage uses sorted containers for search efficiency.


* Documentation fixes.


* Added documentation.


* First release on PyPI.