pymobiledevice3 4.26.6__tar.gz → 4.27.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pymobiledevice3 might be problematic. Click here for more details.

Files changed (226) hide show
  1. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/PKG-INFO +1 -1
  2. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/__main__.py +4 -1
  3. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/_version.py +3 -3
  4. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/developer.py +174 -5
  5. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3.egg-info/PKG-INFO +1 -1
  6. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.gitattributes +0 -0
  7. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/FUNDING.yml +0 -0
  8. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  9. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  10. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  11. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/pull_request_template.md +0 -0
  12. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/workflows/codeql.yml +0 -0
  13. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/workflows/generate-executable.py +0 -0
  14. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/workflows/markdown-lint.yml +0 -0
  15. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/workflows/python-app.yml +0 -0
  16. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.github/workflows/python-publish.yml +0 -0
  17. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.gitignore +0 -0
  18. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/.pre-commit-config.yaml +0 -0
  19. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/CODE_OF_CONDUCT.md +0 -0
  20. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/CONTRIBUTING.md +0 -0
  21. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/LICENSE +0 -0
  22. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/README.md +0 -0
  23. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/example.gif +0 -0
  24. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/markdownlint-config.json +0 -0
  25. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/misc/DTServices-14.2.txt +0 -0
  26. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/misc/DTServices-14.5.txt +0 -0
  27. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/misc/RemoteXPC.md +0 -0
  28. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/misc/plist_sniffer.py +0 -0
  29. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/misc/pyinstaller.md +0 -0
  30. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/misc/remotexpc_sniffer.py +0 -0
  31. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/misc/understanding_idevice_protocol_layers.md +0 -0
  32. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/misc/usbmux_sniff.sh +0 -0
  33. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/__init__.py +0 -0
  34. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/bonjour.py +0 -0
  35. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/ca.py +0 -0
  36. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/__init__.py +0 -0
  37. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/activation.py +0 -0
  38. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/afc.py +0 -0
  39. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/amfi.py +0 -0
  40. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/apps.py +0 -0
  41. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/backup.py +0 -0
  42. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/bonjour.py +0 -0
  43. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/cli_common.py +0 -0
  44. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/companion_proxy.py +0 -0
  45. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/completions.py +0 -0
  46. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/crash.py +0 -0
  47. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/diagnostics.py +0 -0
  48. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/lockdown.py +0 -0
  49. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/mounter.py +0 -0
  50. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/notification.py +0 -0
  51. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/pcap.py +0 -0
  52. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/power_assertion.py +0 -0
  53. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/processes.py +0 -0
  54. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/profile.py +0 -0
  55. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/provision.py +0 -0
  56. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/remote.py +0 -0
  57. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/restore.py +0 -0
  58. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/springboard.py +0 -0
  59. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/syslog.py +0 -0
  60. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/usbmux.py +0 -0
  61. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/version.py +0 -0
  62. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/cli/webinspector.py +0 -0
  63. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/common.py +0 -0
  64. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/exceptions.py +0 -0
  65. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/irecv.py +0 -0
  66. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/irecv_devices.py +0 -0
  67. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/lockdown.py +0 -0
  68. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/lockdown_service_provider.py +0 -0
  69. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/osu/__init__.py +0 -0
  70. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/osu/os_utils.py +0 -0
  71. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/osu/posix_util.py +0 -0
  72. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/osu/win_util.py +0 -0
  73. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/pair_records.py +0 -0
  74. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/__init__.py +0 -0
  75. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/common.py +0 -0
  76. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/core_device/__init__.py +0 -0
  77. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/core_device/app_service.py +0 -0
  78. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/core_device/core_device_service.py +0 -0
  79. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/core_device/device_info.py +0 -0
  80. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/core_device/diagnostics_service.py +0 -0
  81. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/core_device/file_service.py +0 -0
  82. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/module_imports.py +0 -0
  83. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/remote_service.py +0 -0
  84. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/remote_service_discovery.py +0 -0
  85. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/remotexpc.py +0 -0
  86. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/tunnel_service.py +0 -0
  87. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/utils.py +0 -0
  88. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/remote/xpc_message.py +0 -0
  89. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/__init__.py +0 -0
  90. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/dsc_uuid_map.json +0 -0
  91. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/dsc_uuid_map.py +0 -0
  92. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/firmware_notifications.py +0 -0
  93. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/notifications.txt +0 -0
  94. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/element_attribute.js +0 -0
  95. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/element_clear.js +0 -0
  96. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/enter_fullscreen.js +0 -0
  97. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/find_nodes.js +0 -0
  98. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/focus.js +0 -0
  99. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/get_attribute.js +0 -0
  100. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/is_displayed.js +0 -0
  101. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/is_editable.js +0 -0
  102. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/resources/webinspector/is_enabled.js +0 -0
  103. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/__init__.py +0 -0
  104. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/asr.py +0 -0
  105. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/base_restore.py +0 -0
  106. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/consts.py +0 -0
  107. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/device.py +0 -0
  108. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/fdr.py +0 -0
  109. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/ftab.py +0 -0
  110. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/img4.py +0 -0
  111. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/recovery.py +0 -0
  112. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/restore.py +0 -0
  113. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/restore_options.py +0 -0
  114. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/restored_client.py +0 -0
  115. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/restore/tss.py +0 -0
  116. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/service_connection.py +0 -0
  117. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/__init__.py +0 -0
  118. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/accessibilityaudit.py +0 -0
  119. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/afc.py +0 -0
  120. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/amfi.py +0 -0
  121. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/companion.py +0 -0
  122. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/crash_reports.py +0 -0
  123. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/debugserver_applist.py +0 -0
  124. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/device_arbitration.py +0 -0
  125. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/device_link.py +0 -0
  126. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/diagnostics.py +0 -0
  127. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dtfetchsymbols.py +0 -0
  128. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/__init__.py +0 -0
  129. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py +0 -0
  130. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py +0 -0
  131. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/__init__.py +0 -0
  132. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/activity_trace_tap.py +0 -0
  133. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/application_listing.py +0 -0
  134. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/condition_inducer.py +0 -0
  135. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/core_profile_session_tap.py +0 -0
  136. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/device_info.py +0 -0
  137. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/energy_monitor.py +0 -0
  138. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/graphics.py +0 -0
  139. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/location_simulation.py +0 -0
  140. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/location_simulation_base.py +0 -0
  141. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/network_monitor.py +0 -0
  142. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/notifications.py +0 -0
  143. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/process_control.py +0 -0
  144. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/screenshot.py +0 -0
  145. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/instruments/sysmontap.py +0 -0
  146. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/dvt/testmanaged/xcuitest.py +0 -0
  147. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/file_relay.py +0 -0
  148. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/heartbeat.py +0 -0
  149. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/house_arrest.py +0 -0
  150. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/installation_proxy.py +0 -0
  151. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/lockdown_service.py +0 -0
  152. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/misagent.py +0 -0
  153. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/mobile_activation.py +0 -0
  154. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/mobile_config.py +0 -0
  155. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/mobile_image_mounter.py +0 -0
  156. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/mobilebackup2.py +0 -0
  157. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/notification_proxy.py +0 -0
  158. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/os_trace.py +0 -0
  159. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/pcapd.py +0 -0
  160. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/power_assertion.py +0 -0
  161. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/preboard.py +0 -0
  162. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/remote_fetch_symbols.py +0 -0
  163. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/remote_server.py +0 -0
  164. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/restore_service.py +0 -0
  165. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/screenshot.py +0 -0
  166. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/simulate_location.py +0 -0
  167. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/springboard.py +0 -0
  168. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/syslog.py +0 -0
  169. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/__init__.py +0 -0
  170. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/alert.py +0 -0
  171. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/automation_session.py +0 -0
  172. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/cdp_screencast.py +0 -0
  173. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/cdp_server.py +0 -0
  174. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/cdp_target.py +0 -0
  175. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/driver.py +0 -0
  176. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/element.py +0 -0
  177. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/inspector_session.py +0 -0
  178. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/selenium_api.py +0 -0
  179. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/session_protocol.py +0 -0
  180. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/web_protocol/switch_to.py +0 -0
  181. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/services/webinspector.py +0 -0
  182. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/tcp_forwarder.py +0 -0
  183. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/tunneld/__init__.py +0 -0
  184. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/tunneld/api.py +0 -0
  185. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/tunneld/server.py +0 -0
  186. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/usbmux.py +0 -0
  187. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3/utils.py +0 -0
  188. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3.egg-info/SOURCES.txt +0 -0
  189. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3.egg-info/dependency_links.txt +0 -0
  190. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3.egg-info/entry_points.txt +0 -0
  191. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3.egg-info/requires.txt +0 -0
  192. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pymobiledevice3.egg-info/top_level.txt +0 -0
  193. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pyproject.toml +0 -0
  194. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/pytest.ini +0 -0
  195. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/requirements.txt +0 -0
  196. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/setup.cfg +0 -0
  197. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/__init__.py +0 -0
  198. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/cli/__init__.py +0 -0
  199. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/cli/test_cli.py +0 -0
  200. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/conftest.py +0 -0
  201. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/__init__.py +0 -0
  202. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/instruments/__init__.py +0 -0
  203. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/instruments/test_core_profile_session.py +0 -0
  204. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/instruments/test_dvt_secure_socket_proxy.py +0 -0
  205. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/instruments/test_fetch_symbols.py +0 -0
  206. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/instruments/test_location.py +0 -0
  207. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/instruments/test_screenshot.py +0 -0
  208. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_accessibility.py +0 -0
  209. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_afc.py +0 -0
  210. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_apps.py +0 -0
  211. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_backup2.py +0 -0
  212. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_bonjour.py +0 -0
  213. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_crash_reports.py +0 -0
  214. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_list_devices.py +0 -0
  215. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_lockdown.py +0 -0
  216. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_pcapd.py +0 -0
  217. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_springboard_services_relay.py +0 -0
  218. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_start_tunnel.py +0 -0
  219. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_syslog_relay.py +0 -0
  220. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_tcp_forwarder.py +0 -0
  221. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_web_protocol/__init__.py +0 -0
  222. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_web_protocol/common.py +0 -0
  223. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_web_protocol/conftest.py +0 -0
  224. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_web_protocol/test_driver.py +0 -0
  225. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_web_protocol/test_element.py +0 -0
  226. {pymobiledevice3-4.26.6 → pymobiledevice3-4.27.0}/tests/services/test_webinspector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymobiledevice3
3
- Version: 4.26.6
3
+ Version: 4.27.0
4
4
  Summary: Pure python3 implementation for working with iDevices (iPhone, etc...)
5
5
  Author-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>
6
6
  Maintainer-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>
@@ -6,6 +6,7 @@ import re
6
6
  import sys
7
7
  import textwrap
8
8
  import traceback
9
+ import warnings
9
10
  from typing import Union
10
11
 
11
12
  import click
@@ -38,7 +39,9 @@ logger = logging.getLogger(__name__)
38
39
 
39
40
  # For issue https://github.com/doronz88/pymobiledevice3/issues/1217, details: https://bugs.python.org/issue37373
40
41
  if sys.platform == 'win32':
41
- asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
42
+ with warnings.catch_warnings():
43
+ warnings.simplefilter('ignore', category=DeprecationWarning)
44
+ asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
42
45
 
43
46
  INVALID_SERVICE_MESSAGE = """Failed to start service. Possible reasons are:
44
47
  - If you were trying to access a developer service (developer subcommand):
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '4.26.6'
32
- __version_tuple__ = version_tuple = (4, 26, 6)
31
+ __version__ = version = '4.27.0'
32
+ __version_tuple__ = version_tuple = (4, 27, 0)
33
33
 
34
- __commit_id__ = commit_id = 'g7b7d9d8a3'
34
+ __commit_id__ = commit_id = 'gf0804b1ec'
@@ -3,9 +3,12 @@ import asyncio
3
3
  import json
4
4
  import logging
5
5
  import os
6
+ import plistlib
6
7
  import posixpath
7
8
  import shlex
8
9
  import signal
10
+ import struct
11
+ import subprocess
9
12
  import sys
10
13
  import time
11
14
  from collections import namedtuple
@@ -17,13 +20,14 @@ from typing import IO, Optional
17
20
  import click
18
21
  from click.exceptions import MissingParameter, UsageError
19
22
  from packaging.version import Version
23
+ from plumbum import local
20
24
  from pykdebugparser.pykdebugparser import PyKdebugParser
21
25
 
22
26
  import pymobiledevice3
23
27
  from pymobiledevice3.cli.cli_common import BASED_INT, Command, RSDCommand, default_json_encoder, print_json, \
24
28
  user_requested_colored_output
25
- from pymobiledevice3.exceptions import CoreDeviceError, DeviceAlreadyInUseError, DvtDirListError, \
26
- ExtractingStackshotError, RSDRequiredError, UnrecognizedSelectorError
29
+ from pymobiledevice3.exceptions import DeviceAlreadyInUseError, DvtDirListError, ExtractingStackshotError, \
30
+ RSDRequiredError, UnrecognizedSelectorError
27
31
  from pymobiledevice3.lockdown import LockdownClient, create_using_usbmux
28
32
  from pymobiledevice3.lockdown_service_provider import LockdownServiceProvider
29
33
  from pymobiledevice3.osu.os_utils import get_os_utils
@@ -52,6 +56,7 @@ from pymobiledevice3.services.dvt.instruments.process_control import ProcessCont
52
56
  from pymobiledevice3.services.dvt.instruments.screenshot import Screenshot
53
57
  from pymobiledevice3.services.dvt.instruments.sysmontap import Sysmontap
54
58
  from pymobiledevice3.services.dvt.testmanaged.xcuitest import XCUITestService
59
+ from pymobiledevice3.services.installation_proxy import InstallationProxyService
55
60
  from pymobiledevice3.services.remote_fetch_symbols import RemoteFetchSymbolsService
56
61
  from pymobiledevice3.services.remote_server import RemoteServer
57
62
  from pymobiledevice3.services.screenshot import ScreenshotService
@@ -126,6 +131,7 @@ def proclist(service_provider: LockdownClient) -> None:
126
131
 
127
132
  print_json(processes)
128
133
 
134
+
129
135
  @dvt.command('is-running-pid', cls=Command)
130
136
  @click.argument('pid', type=click.INT)
131
137
  def is_running_pid(service_provider: LockdownClient, pid: int) -> None:
@@ -133,6 +139,7 @@ def is_running_pid(service_provider: LockdownClient, pid: int) -> None:
133
139
  with DvtSecureSocketProxyService(lockdown=service_provider) as dvt:
134
140
  print_json(DeviceInfo(dvt).is_running_pid(pid))
135
141
 
142
+
136
143
  @dvt.command('memlimitoff', cls=Command)
137
144
  @click.argument('pid', type=click.INT)
138
145
  def memlimitoff(service_provider: LockdownServiceProvider, pid: int) -> None:
@@ -140,6 +147,7 @@ def memlimitoff(service_provider: LockdownServiceProvider, pid: int) -> None:
140
147
  with DvtSecureSocketProxyService(lockdown=service_provider) as dvt:
141
148
  ProcessControl(dvt).disable_memory_limit_for_pid(pid)
142
149
 
150
+
143
151
  @dvt.command('applist', cls=Command)
144
152
  def applist(service_provider: LockdownServiceProvider) -> None:
145
153
  """ Show application list """
@@ -412,7 +420,7 @@ def sysmon_system(service_provider: LockdownClient, fields):
412
420
  'EnabledCPUs': row['EnabledCPUs'],
413
421
  }
414
422
  }
415
- else: # Ignore the first occurrence because first occurrence always gives a incorrect value - 100 or 0
423
+ else: # Ignore the first occurrence because first occurrence always gives a incorrect value - 100 or 0
416
424
  system_usage_seen = True
417
425
 
418
426
  if system and system_usage:
@@ -990,6 +998,165 @@ def debugserver_start_server(service_provider: LockdownClient, local_port: Optio
990
998
  print("local_port is required for iOS < 17.0")
991
999
 
992
1000
 
1001
+ @debugserver.command('lldb', cls=RSDCommand)
1002
+ @click.argument('xcodeproj_path', type=click.Path(exists=True, file_okay=False, dir_okay=True))
1003
+ @click.option('--configuration', default='Debug', help='Usually Release/Debug')
1004
+ @click.option('--lldb-command', default='lldb')
1005
+ @click.option('--launch', is_flag=True, default=False, help='Launch the app after connecting to lldb')
1006
+ @click.option('breakpoints', '-b', '--break', multiple=True, help='Add multiple startup breakpoints')
1007
+ @click.option('user_commands', '--command', '-c', multiple=True, help='Additional commands to run at startup')
1008
+ def debugserver_lldb(
1009
+ service_provider: LockdownServiceProvider,
1010
+ xcodeproj_path: str,
1011
+ configuration: str,
1012
+ lldb_command: str,
1013
+ launch: bool,
1014
+ breakpoints: tuple[str],
1015
+ user_commands: tuple[str],
1016
+ ) -> None:
1017
+ """
1018
+ Automate lldb launch for a given xcodeproj.
1019
+
1020
+ \b
1021
+ This will:
1022
+ - Build the given xcodeproj
1023
+ - Install it
1024
+ - Start a debugserver attached to it
1025
+ - Place breakpoints if given any
1026
+ - Launch the application if requested
1027
+ - Execute any additional commands if requested
1028
+ - Switch to lldb shell
1029
+ """
1030
+ if Version(service_provider.product_version) < Version('17.0'):
1031
+ logger.error('lldb is only supported on iOS >= 17.0')
1032
+ return
1033
+
1034
+ commands = []
1035
+ xcodeproj_path = Path(xcodeproj_path)
1036
+ with local.cwd(xcodeproj_path.parent):
1037
+ logger.info(f'Building {xcodeproj_path} for {configuration} configuration')
1038
+ local['xcodebuild']['-configuration', configuration, 'build']()
1039
+ local_app = list(Path(f'build/{configuration}-iphoneos').glob('*.app'))[0]
1040
+ logger.info(f'Using app: {local_app}')
1041
+
1042
+ info_plist_path = local_app / 'Info.plist'
1043
+ info_plist = plistlib.loads(info_plist_path.read_bytes())
1044
+ bundle_identifier = info_plist['CFBundleIdentifier']
1045
+ logger.info(f'Bundle identifier: {bundle_identifier}')
1046
+
1047
+ commands.append('platform select remote-ios')
1048
+ commands.append(f'target create "{local_app.absolute()}"')
1049
+
1050
+ with InstallationProxyService(create_using_usbmux()) as installation_proxy:
1051
+ logger.info('Installing app')
1052
+ installation_proxy.install_from_local(local_app)
1053
+ remote_path = installation_proxy.get_apps(bundle_identifiers=[bundle_identifier])[bundle_identifier]['Path']
1054
+ logger.info(f'Remote path: {remote_path}')
1055
+
1056
+ commands.append(f'script lldb.target.module[0].SetPlatformFileSpec(lldb.SBFileSpec("{remote_path}"))')
1057
+
1058
+ debugserver_port = service_provider.get_service_port('com.apple.internal.dt.remote.debugproxy')
1059
+
1060
+ # Add connection and launch commands
1061
+ commands.append(f'process connect connect://[{service_provider.service.address[0]}]:{debugserver_port}')
1062
+
1063
+ for breakpoint in breakpoints:
1064
+ commands.append(f'breakpoint set -n "{breakpoint}"')
1065
+
1066
+ if launch:
1067
+ commands.append('process launch')
1068
+
1069
+ # Add user commands
1070
+ commands += user_commands
1071
+
1072
+ logger.info(f'Starting lldb with automated setup and connection')
1073
+
1074
+ # Works only on unix-based systems, so keep these imports here
1075
+ import fcntl
1076
+ import pty
1077
+ import select as select_module
1078
+ import termios
1079
+ import tty
1080
+
1081
+ master, slave = pty.openpty()
1082
+
1083
+ process = None # Initialize process variable for signal handler
1084
+
1085
+ # Copy terminal size from the current terminal to PTY
1086
+ def resize_pty() -> None:
1087
+ """Update PTY size to match current terminal size"""
1088
+ size = struct.unpack('HHHH',
1089
+ fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, struct.pack('HHHH', 0, 0, 0, 0)))
1090
+ fcntl.ioctl(master, termios.TIOCSWINSZ, struct.pack('HHHH', *size))
1091
+ # Send SIGWINCH to the child process to notify it of the resize
1092
+ if process is not None and process.poll() is None:
1093
+ process.send_signal(signal.SIGWINCH)
1094
+
1095
+ # Initial resize
1096
+ resize_pty()
1097
+
1098
+ # Set up signal handler for window resize
1099
+ def handle_sigwinch(signum, frame):
1100
+ resize_pty()
1101
+
1102
+ old_sigwinch_handler = signal.signal(signal.SIGWINCH, handle_sigwinch)
1103
+
1104
+ # Save original terminal settings
1105
+ old_tty = termios.tcgetattr(sys.stdin)
1106
+
1107
+ try:
1108
+ # Set TERM environment variable to enable colors
1109
+ env = os.environ.copy()
1110
+ env['TERM'] = os.environ.get('TERM', 'xterm-256color')
1111
+
1112
+ process = subprocess.Popen(
1113
+ [lldb_command],
1114
+ stdin=slave,
1115
+ stdout=slave,
1116
+ stderr=slave,
1117
+ env=env
1118
+ )
1119
+ os.close(slave)
1120
+
1121
+ # Put terminal in raw mode for proper interaction
1122
+ tty.setraw(sys.stdin.fileno())
1123
+ # Send all commands through stdin
1124
+ for command in commands:
1125
+ os.write(master, (command + '\n').encode())
1126
+
1127
+ # Now redirect stdin from the terminal to lldb so user can interact
1128
+ while True:
1129
+ rlist, _, _ = select_module.select([sys.stdin, master], [], [])
1130
+
1131
+ if sys.stdin in rlist:
1132
+ # User typed something
1133
+ data = os.read(sys.stdin.fileno(), 1024)
1134
+ if not data:
1135
+ break
1136
+ os.write(master, data)
1137
+
1138
+ if master in rlist:
1139
+ # lldb has output
1140
+ try:
1141
+ data = os.read(master, 1024)
1142
+ if not data:
1143
+ break
1144
+ os.write(sys.stdout.fileno(), data)
1145
+ except OSError:
1146
+ break
1147
+ except (KeyboardInterrupt, OSError):
1148
+ pass
1149
+ finally:
1150
+ # Restore terminal settings
1151
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_tty)
1152
+ # Restore original SIGWINCH handler
1153
+ signal.signal(signal.SIGWINCH, old_sigwinch_handler)
1154
+ os.close(master)
1155
+ if process is not None:
1156
+ process.terminate()
1157
+ process.wait()
1158
+
1159
+
993
1160
  @developer.group('arbitration')
994
1161
  def arbitration():
995
1162
  """ Mark/Unmark device as "in-use" """
@@ -1101,7 +1268,8 @@ def core_device_list_directory(
1101
1268
 
1102
1269
 
1103
1270
  async def core_device_read_file_task(
1104
- service_provider: RemoteServiceDiscoveryService, domain: str, path: str, identifier: str, output: Optional[IO]) -> None:
1271
+ service_provider: RemoteServiceDiscoveryService, domain: str, path: str, identifier: str,
1272
+ output: Optional[IO]) -> None:
1105
1273
  async with FileServiceService(service_provider, APPLE_DOMAIN_DICT[domain], identifier) as file_service:
1106
1274
  buf = await file_service.retrieve_file(path)
1107
1275
  if output is not None:
@@ -1116,7 +1284,8 @@ async def core_device_read_file_task(
1116
1284
  @click.option('--identifier', default='')
1117
1285
  @click.option('-o', '--output', type=click.File('wb'))
1118
1286
  def core_device_read_file(
1119
- service_provider: RemoteServiceDiscoveryService, domain: str, path: str, identifier: str, output: Optional[IO]) -> None:
1287
+ service_provider: RemoteServiceDiscoveryService, domain: str, path: str, identifier: str,
1288
+ output: Optional[IO]) -> None:
1120
1289
  """ Read file from given domain-path """
1121
1290
  asyncio.run(core_device_read_file_task(service_provider, domain, path, identifier, output))
1122
1291
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymobiledevice3
3
- Version: 4.26.6
3
+ Version: 4.27.0
4
4
  Summary: Pure python3 implementation for working with iDevices (iPhone, etc...)
5
5
  Author-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>
6
6
  Maintainer-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>