Skip to content

v9.40.0

Choose a tag to compare

@doronz88 doronz88 released this 22 Jul 14:38
· 337 commits to master since this release
2deb8bb

Highlights

πŸ› Latent runtime bugs fixed

A project-wide static type-checking pass surfaced (and fixed) a number of real, pre-existing bugs:

  • Restore β€” a missing await in the iOS 18+ SE and Rose firmware-personalization paths (the coroutine was used instead of its result); and add_timer_tags passed the parameters dict as its own lookup key, raising unconditionally.
  • Device activation β€” a call to a method that no longer exists (a leftover from the asyncio migration) broke activate/deactivate.
  • Screen streaming β€” stopScreencast called a removed method, and image resizing used Image.ANTIALIAS, which was removed in Pillow 10.
  • Remote discovery β€” get_remoted_devices used a synchronous with on an async-only context manager, so it could never run.
  • Installation β€” upgrade() leaked extra arguments into an unrelated boolean flag.

πŸ” The codebase is now type-checked (pyright, enforced in CI)

The whole package (and its tests) passes pyright in standard mode with zero errors, wired into both a pre-commit hook and a dedicated CI job (pinned to pyright@1.1.411). Type annotations are now honest about nullability and prerequisites β€” Optional-vs-required, raising accessors for connection state, @overloads where a return type depends on an argument β€” which both hardens the library and makes it far more IDE- and contributor-friendly. typing_extensions is now a direct dependency.

What's Changed

Full Changelog: v9.39.0...v9.40.0