unicorn-fy Change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Discussions about unicorn-fy releases!

How to upgrade to the latest version!

0.17.2.dev (development stage/unreleased/unstable)

Changed

  • README: replaced the lucit.tech “UNICORN Binance WebSocket API” project link with the canonical GitHub repo URL.

  • examples/README.md: removed the lucit.tech chat support link.

  • .github/ISSUE_TEMPLATE/{bug_report,feature_request}.yml: updated the Issue-Guidelines and version-check-script URLs from the old LUCIT-Systems-and-Development GitHub org to oliver-zehentleitner.

  • SECURITY.md: replaced the lucit.tech contact form URL with the GitHub Security Advisories private-reporting URL.

Changed

  • README: reworded the PyPy paragraph. The old sentence (“For the PyPy interpreter we offer packages only from Python version 3.9 and higher”) made sense when we still shipped wheels for pre-3.9 CPython; now that 3.9 is the minimum for everything, it’s just noise. Replaced with “PyPy wheels are available for all supported Python versions.”

  • README: switched all conda references from the legacy lucit channel to conda-forge. Added conda-forge version / downloads / feedstock build badges. Removed the “There is no conda support until migration” placeholders. Install section is now a single conda install -c conda-forge unicorn-fy.

Removed

  • .github/workflows/build_conda.yml: the conda-forge feedstock (conda-forge/unicorn-fy-feedstock) now builds and publishes the conda package; no in-repo build is needed anymore.

0.17.1

Fixed

  • get_latest_version(): handle False return from get_latest_release_info() gracefully instead of crashing with AttributeError when the GitHub API request fails (#69)

0.17.0

Fixed

  • binance_websocket(): handle WS API userData event envelope {"subscriptionId": 0, "event": {...}} introduced by Binance after removing the REST listenKey endpoints for Spot/Margin in February 2026. Unwraps the envelope before the normalisation pipeline so executionReport, outboundAccountPosition and balanceUpdate are processed correctly. (fixes #66)

0.16.2

Added

  • binance_futures_websocket(): support for TRADE_LITE user data stream event (fixes #50)

  • Python 3.14 support

Changed

  • Switched JSON library from ujson to orjson (suite-wide standard)

Fixed

  • binance_websocket() and binance_futures_websocket(): initialize unicorn_fied_data as {} instead of False to prevent TypeError: 'bool' object does not support item assignment when an unrecognized event type is received (fixes #44)

  • binance_websocket() and binance_futures_websocket(): replace explicit event-type whitelist with catch-all wrapping for any payload carrying a top-level 'e' key without a 'data' wrapper (e.g. listenKeyExpired), preventing KeyError: 'data' (fixes #41)

  • binance_websocket(): unicorn_fied contained a method reference instead of the version string when result was not None (missing parentheses on UnicornFy.get_version)

Removed

  • Python 3.8 support (EOL Oct 2024); minimum is now 3.9

  • Live integration tests (TestLiveBinanceCom, TestLiveBinanceComFutures) and UBWA/UBRA dependency from CI

  • binance_org_websocket(): Binance DEX (binance.org) has been discontinued

0.16.1

Added

  • build_wheels.yml:
    CIBW_ARCHS_LINUX: “x86_64 aarch64” CIBW_ARCHS_MACOS: “x86_64 arm64 universal2” CIBW_ARCHS_WINDOWS: “AMD64” CIBW_MUSLLINUX_X86_64_IMAGE: “musllinux_1_1”

0.16.0

Added

  • Python 3.13 support

0.15.0

Added

  • __version__ and made use of it.

Changed

  • Moved from https://github.com/LUCIT-Systems-and-Development/ to https://github.com/oliver-zehentleitner

Removed

  • binance_je_websocket()

  • jex_com_websocket()

0.14.2

Added

  • Since Unicorn-Fy is delivered as a compiled C extension, IDEs such as Pycharm and Visual Code cannot use information about available methods, parameters and their types for autocomplete and other intellisense functions. As a solution, from now on stub files (PYI) will be created in the build process and attached to the packages. The IDEs can automatically obtain the required information from these.

0.14.1

unicorn-fy can now also be installed on all architectures on which there are no precompiled packages from LUCIT. PIP now automatically recognises whether there is a suitable precompiled package and if not, the source is automatically compiled on the target system during the installation process with Cython. Even if you don’t have to do anything special, please note that this process takes some time!

0.14.0

Added

  • Wheels for arm64 (Raspberry Pi)

  • PR “futures account update: handle multi_assets_mode update” https://github.com/oliver-zehentleitner/unicorn-fy/pull/38

  • PR “Updated All Futures Market Streams, Implemented Proper Coin-Futures Handling” https://github.com/oliver-zehentleitner/unicorn-fy/pull/39

0.13.1

  • Building conda packages and distribute them via https://anaconda.org/lucit

0.13.0

Added

  • debug parameter to UnicornFy()

  • Cython and PyPy Wheels support

0.12.2

Codebase equal to 0.12.0, testing azure pipe

0.12.1

Codebase equal to 0.12.0, just preparing conda-forge packaging

0.12.0

Fixed

  • is_update_availabe() typo to is_update_available()

0.11.1

Changed

  • Moved from https://github.com/oliver-zehentleitner to https://github.com/LUCIT-Systems-and-Development/

  • Correctly scope loggers so that it plays nicely with others, logger name is “unicorn_fy”.

Fixed

  • binance_futures_websocket() did not convert bids of depth streams (issue#232)

0.11.0

Adding

  • Implement missing ACCOUNT_UPDATE (binance futures) event (Thx @folktale42 PR#28)

  • Support for Perpetual Coin Futures binance_com_coin_futures_websocket() - NOT READY!!!)

0.10.0

Added

  • Support for ORDER_TRADE_UPDATE, ACCOUNT_CONFIG_UPDATE, MARGIN_CALL and ACCOUNT_UPDATE in binance_futures_websocket() (Thx @StarBalll PR#23 and PR#25

  • unittests for ORDER_TRADE_UPDATE, ACCOUNT_CONFIG_UPDATE and ACCOUNT_UPDATE in binance_futures_websocket()

0.9.0

Added

  • Support for balanceUpdate in binance_websocket() and binance_futures_websocket() PR#19 thx @davivc

0.8.0

Added

  • TRBinance.com

0.7.0

Added

  • Support for listStatus in binance_websocket() issue#19

0.6.0

Added

  • Binance-com-margin

  • Binance-com-isolated_margin

  • Jex.com

0.5.0

Added

  • outboundAccountPosition issue#11 - thanks to @bmschwartz

  • handling for results

Fixed

  • ModuleNotFoundError: No module named 'unicorn_fy.unicorn_fy'; 'unicorn_fy' is not a package PR#10, issue#9

  • thanks to @uggel

0.4.1

Added

  • account_permissions in outboundAccountInfo

0.4.0

Fixed

  • all kind of tickers

  • result msg handling

  • error msg handling

Removed

  • Exception handling to show python error trace

0.3.5

Fixed

  • !miniTicker@arr structure

0.3.4

Fixed

  • !miniTicker@arr structure

0.3.3

Added

  • TypeError exception

0.3.2

Changed

  • ujson instead of stock json

  • exception handling

Added

  • binance.com-futures (copy of binance_websocket() with suggested modification of issue #1)

0.3.1

Changes

  • Moved docs to github pages

0.3.0

Adding

  • binance_us_websocket()

Changes

  • exchange name to return dict

0.2.0

Adding

  • binance_com_websocket()

  • binance_je_websocket()

  • is_update_availabe()

  • get_latest_version()

  • get_version()

  • get_latest_release_info()

Depricated

  • binance_websocket()

0.1.1

Fixed

  • create pypi package

0.1.0

  • Released