github doronz88/pymobiledevice3 v11.42.0

latest releases: v11.43.1, v11.43.0
17 hours ago

Highlights

✨ Error messages that explain themselves

When a command fails, pymobiledevice3 now prints one line saying what went wrong, instead of a raw traceback or a terse developer note. About 280 error messages across the package were rewritten to say what failed, and they keep the device's reply and the identifiers involved. Every exception also describes itself, so library users get the same messages in str(e).

$ pymobiledevice3 lockdown get com.apple.mobile.wireless_lockdown NoSuchKey
ERROR No such value.
INFO Run again with -v for the full traceback (include it when reporting an issue)

Run with -v to see the full traceback, rendered with syntax-highlighted source on a terminal. When pymobiledevice3 receives a reply it does not understand, the message asks you to open an issue with that -v output. The bug report template asks for it too.

For library users: str(e) changes for many exceptions. Notably, lockdown errors no longer read as lockdownd's raw code (MissingValue). The code is now in e.error, and str(e) describes the failure.

🐛 Fixes

  • serve-vnc no longer cancels every task on the event loop when it shuts down. Before, stopping it also killed the caller's in-process tunnel. It also keeps the audio session alive when the device starts out silent.
  • lockdown wifi-connections reports false on a device that never had the setting changed, instead of failing with "No such value".
  • Progress callbacks passed to InstallationProxyService install, uninstall and restore now get their extra arguments unpacked.
  • Pairing errors from lockdownd (passcode required, trust dialog pending, user denied) read as a message instead of a tuple.
  • wda commands stop the XCUITest runner even when the command fails.
  • The interactive device prompt closes the connections to the devices you didn't pick.
  • restore update no longer prints a traceback before its error message.
  • A failed service connection no longer logs "Future exception was never retrieved".

⚠️ Removed serve-web --max-bitrate

The option was never sent to the device, so it had no effect.

🧹 Internal cleanups

These are behavior-preserving simplifications: lockdown accessors are implemented once for both lockdown and RSD, service-name selection is shared, TSS and core-profile-session loops are shared, serve-web's HTTP responses go through one helper, USB RSD discovery is simplified, and unreferenced code is removed. Signing requests and serve-web responses were checked byte for byte against the previous code.

What's Changed

Full Changelog: v11.41.2...v11.42.0

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.