github doronz88/pymobiledevice3 v9.36.0

latest releases: v11.3.0, v11.2.4, v11.2.3...
one month ago

Highlights

🐛 backup2 no longer refuses backups that fit in APFS purgeable space (macOS)

On macOS, backup2 backup could fail with Not enough disk space even when the backup would fit — while Finder/iTunes backups of the same device to the same disk succeeded. The device gates the backup by asking the host how much space is free (DLMessageGetFreeDiskSpace), and the answer came from shutil.disk_usage().free (statvfs), which on APFS excludes purgeable space: local Time Machine snapshots and evictable iCloud/cache files that macOS reclaims automatically as writes land. When that under-reported number fell below the estimated backup size, the device aborted with NotEnoughDiskSpaceError.

The host now reports the purgeable-aware capacity Apple's own tooling uses (NSURL's NSURLVolumeAvailableCapacityForImportantUsageKey), read via the Objective-C runtime through stdlib ctypes — no new dependency. It reports max(statvfs_free, important_usage), so it can only ever fix the false refusal, never lower the guaranteed number. Non-macOS hosts are unaffected, and any failure degrades gracefully to the original statvfs value.

pymobiledevice3 backup2 backup --full BACKUP_DIR

🐛 restore falls back to recovery mode when usbmuxd is absent

When a device is connected in recovery mode, usbmuxd may not be running and its socket (/var/run/usbmuxd) will not exist, raising a FileNotFoundError. This is now caught and re-raised as ConnectionFailedToUsbmuxdError, letting cli/restore.py fall back to recovery mode as intended.

What's Changed

Full Changelog: v9.35.1...v9.36.0

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.