Highlights
🏷️ pymobiledevice3 is now a typed package (PEP 561)
The distribution ships a py.typed marker, so type checkers in your project now
consume pymobiledevice3's inline type hints instead of treating every symbol as Any.
You get real autocomplete and type-checking against the API — LockdownClient, the
service wrappers, RSD/tunnel helpers, and more — out of the box.
pip install -U pymobiledevice3
# in your typed project, mypy/pyright now see pymobiledevice3's typesThis is backed by a package-wide typing cleanup: reportMissingTypeArgument,
reportMissingParameterType, the full reportUnknown* family, and reportDeprecated
are now enforced in CI, so the annotations stay honest going forward. The pass also
fixed a handful of latent bugs it surfaced (a missing await in the web-protocol
switch_to, wrong return types, and a DTX decorator that silently erased method types).
📦 Modernized packaging (PEP 621)
Runtime dependencies now live inline in pyproject.toml under [project.dependencies]
instead of a separate requirements.txt, making the project metadata the single source
of truth. Pins and environment markers are unchanged — same resolution, cleaner package.
What's Changed
- d0dcd1e typing: clear reportUnknown* package-wide and enforce it (#1798) (@doronz88)
- fafe546 packaging: adopt PEP 621 inline deps and ship py.typed (PEP 561) (#1800) (@doronz88)
- 98b5e98 typing: enforce reportDeprecated and fix the 7 flagged sites (#1801) (@doronz88)
Full Changelog: v10.0.4...v10.1.0