Skip to content

wftnp 0.1.0

Choose a tag to compare

@binarylogic binarylogic released this 05 Oct 17:17
· 2 commits to master since this release

Initial release of wftnp, a standalone, typed asyncio implementation of WFTNP (Wahoo Direct Connect).

The client discovers services and characteristics, reads and writes opaque bytes, and streams notifications. It manages reconnects and restores subscriptions while never replaying application requests or writes.

  • Explicit deadlines and cancellation behavior; serialized request/response correlation.
  • Read-only health probes and exponential reconnect backoff.
  • Bounded, ordered callback or async-iterator delivery with explicit overflow and callback errors.
  • Optional mDNS discovery; dependency-free core; Python 3.11+; Apache-2.0.

Validation: 87 tests, 96% combined statement/branch coverage, Python 3.11–3.14 on Linux, and Python 3.12 on macOS and Windows. Wheel/source distributions pass strict metadata checks. The installed wheel was tested against KICKR BIKE and KICKR RUN; both supplied notifications and recovered subscriptions after three deliberate socket interruptions.

This release implements the transport protocol. Fitness metric decoding and Home Assistant integration belong above it. Hardware tests were read-only and performed with idle devices; concurrent ROUVY/Zwift operation and long workouts have not been validated. See architecture and hardware observations.

Wheel and source distributions are attached. PyPI publishing is handled by the release workflow.