pymobiledevice3 4.27.4__py3-none-any.whl → 4.27.5__py3-none-any.whl

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.

@@ -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.27.4'
32
- __version_tuple__ = version_tuple = (4, 27, 4)
31
+ __version__ = version = '4.27.5'
32
+ __version_tuple__ = version_tuple = (4, 27, 5)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -277,7 +277,7 @@ class AfcService(LockdownService):
277
277
  except Exception as afc_exception:
278
278
  if not ignore_errors:
279
279
  raise
280
- self.logger.warning("(Ignoring) Error:", afc_exception, "occured during the copy of", src_filename)
280
+ self.logger.warning(f"(Ignoring) Error: {afc_exception} occurred during the copy of {src_filename}")
281
281
 
282
282
  @path_to_str()
283
283
  def exists(self, filename):
@@ -620,7 +620,7 @@ class AfcService(LockdownService):
620
620
  pass
621
621
  return status, data
622
622
 
623
- def _do_operation(self, opcode: afc_opcode_t, data: bytes = b''):
623
+ def _do_operation(self, opcode, data: bytes = b''):
624
624
  self._dispatch_packet(opcode, data)
625
625
  status, data = self._receive_data()
626
626
 
@@ -887,6 +887,7 @@ class AfcShell:
887
887
  progress_bar : --progress_bar
888
888
  Show progress bar
889
889
  """
890
+
890
891
  def log(src, dst):
891
892
  print(f'{src} --> {dst}')
892
893
 
@@ -99,7 +99,7 @@ class CrashReportsManager:
99
99
  self.afc.rm_single(src, force=True)
100
100
 
101
101
  match = None if match is None else re.compile(match)
102
- self.afc.pull(entry, out, match, callback=log, progress_bar=progress_bar)
102
+ self.afc.pull(entry, out, match, callback=log, progress_bar=progress_bar, ignore_errors=True)
103
103
 
104
104
  def flush(self) -> None:
105
105
  """ Trigger com.apple.crashreportmover to flush all products into CrashReports directory """
@@ -4,7 +4,7 @@ import logging
4
4
  import uuid
5
5
  from dataclasses import dataclass, fields
6
6
  from enum import Enum
7
- from typing import Optional, Union
7
+ from typing import Any, Coroutine, Optional, Union
8
8
 
9
9
  import nest_asyncio
10
10
 
@@ -157,7 +157,7 @@ class WebinspectorService:
157
157
  self.service = self.await_(self.lockdown.aio_start_lockdown_service(self.service_name))
158
158
  self.await_(self._report_identifier())
159
159
  try:
160
- self._handle_recv(self.await_(asyncio.wait_for(self._recv_message(), timeout)))
160
+ self._handle_recv(self._await_with_timeout(self._recv_message(), timeout))
161
161
  except asyncio.TimeoutError as e:
162
162
  raise WebInspectorNotEnabledError from e
163
163
  self._recv_task = self.loop.create_task(self._receiving_task())
@@ -225,7 +225,7 @@ class WebinspectorService:
225
225
  self.await_(self._request_application_launch(bundle))
226
226
  self.get_open_pages()
227
227
  try:
228
- return self.await_(asyncio.wait_for(self._wait_for_application(bundle), timeout=timeout))
228
+ return self._await_with_timeout(self._wait_for_application(bundle), timeout)
229
229
  except TimeoutError:
230
230
  raise LaunchingApplicationError()
231
231
 
@@ -244,8 +244,22 @@ class WebinspectorService:
244
244
  def flush_input(self, duration: Union[float, int] = 0):
245
245
  return self.await_(asyncio.sleep(duration))
246
246
 
247
- def await_(self, awaitable):
248
- return self.loop.run_until_complete(asyncio.ensure_future(awaitable, loop=self.loop))
247
+ def await_(self, awaitable: Coroutine) -> Any:
248
+ return self.loop.run_until_complete(awaitable)
249
+
250
+ def _await_with_timeout(self, coro: Coroutine, timeout: float = None) -> Any:
251
+ # Create a task explicitly so we're definitely inside a Task
252
+ task = self.loop.create_task(coro)
253
+ done, pending = self.loop.run_until_complete(asyncio.wait({task}, timeout=timeout))
254
+ if not done:
255
+ task.cancel()
256
+ # Give the task a chance to cancel cleanly
257
+ try:
258
+ self.loop.run_until_complete(task)
259
+ except asyncio.CancelledError:
260
+ pass
261
+ raise WebInspectorNotEnabledError()
262
+ return task.result()
249
263
 
250
264
  def _handle_recv(self, plist):
251
265
  self.receive_handlers[plist['__selector']](plist['__argument'])
@@ -15,6 +15,7 @@ with warnings.catch_warnings():
15
15
  # Ignore: "Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater."
16
16
  warnings.simplefilter('ignore', category=UserWarning)
17
17
  import fastapi
18
+
18
19
  import uvicorn
19
20
  from construct import StreamError
20
21
  from fastapi import FastAPI
@@ -23,7 +24,7 @@ from packaging.version import Version
23
24
  from pymobiledevice3 import usbmux
24
25
  from pymobiledevice3.bonjour import REMOTED_SERVICE_NAMES, browse
25
26
  from pymobiledevice3.exceptions import ConnectionFailedError, ConnectionFailedToUsbmuxdError, DeviceNotFoundError, \
26
- GetProhibitedError, InvalidServiceError, LockdownError, MuxException, PairingError
27
+ GetProhibitedError, IncorrectModeError, InvalidServiceError, LockdownError, MuxException, PairingError
27
28
  from pymobiledevice3.lockdown import create_using_usbmux, get_mobdev2_lockdowns
28
29
  from pymobiledevice3.osu.os_utils import get_os_utils
29
30
  from pymobiledevice3.remote.common import TunnelProtocol
@@ -148,7 +149,7 @@ class TunneldCore:
148
149
  try:
149
150
  service = CoreDeviceTunnelProxy(create_using_usbmux(mux_device.serial))
150
151
  except (MuxException, InvalidServiceError, GetProhibitedError, construct.core.StreamError,
151
- ConnectionAbortedError, DeviceNotFoundError, LockdownError):
152
+ ConnectionAbortedError, DeviceNotFoundError, LockdownError, IncorrectModeError):
152
153
  continue
153
154
  self.tunnel_tasks[task_identifier] = TunnelTask(
154
155
  udid=mux_device.serial,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymobiledevice3
3
- Version: 4.27.4
3
+ Version: 4.27.5
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>
@@ -8,7 +8,7 @@ misc/understanding_idevice_protocol_layers.md,sha256=8tEqRXWOUPoxOJLZVh7C7H9JGCh
8
8
  misc/usbmux_sniff.sh,sha256=iWtbucOEQ9_UEFXk9x-2VNt48Jg5zrPsnUbZ_LfZxwA,212
9
9
  pymobiledevice3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  pymobiledevice3/__main__.py,sha256=1nv18QRgR_FDq5rE95uhdZGOQ6xkPzNDrcMzQQs8ZZ4,11697
11
- pymobiledevice3/_version.py,sha256=kZd1Lfu1YfMYyRyfVzYa9lLoPGYCKckLquTqRZzL7hE,706
11
+ pymobiledevice3/_version.py,sha256=drqBxOP7IVaoCFNTNLbLqRxgVySWqWe06Z2SK5blf6A,706
12
12
  pymobiledevice3/bonjour.py,sha256=-Q_TLBGJ6qW3CX_DgBcz-CXfWSwxWVQ2L64hk6PxnDY,5631
13
13
  pymobiledevice3/ca.py,sha256=mTvWdSjTZw6Eb-22-IZ323GyA1G6CXYmdPedImTjm3A,10542
14
14
  pymobiledevice3/common.py,sha256=-PG6oaUkNFlB3jb7E0finMrX8wqhkS-cuTAfmLvZUmc,329
@@ -98,10 +98,10 @@ pymobiledevice3/restore/restored_client.py,sha256=h_yBZ_e1wfaIzi0f9-R8Ky2x6xFTkv
98
98
  pymobiledevice3/restore/tss.py,sha256=QHq5OTyCn7iIrYhhgOxT5_gpV7wggcy5Faje5160FHQ,29852
99
99
  pymobiledevice3/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
100
  pymobiledevice3/services/accessibilityaudit.py,sha256=PtQujwFLL3E1OgOSUjkKHvgmk2e8Ij2XZIp8JicAphs,15547
101
- pymobiledevice3/services/afc.py,sha256=xbUsUBW8Sue4weuaar5QnjulncyYiBxitZYLNzfif7Y,36539
101
+ pymobiledevice3/services/afc.py,sha256=bENRiozw5qAqMatXeqQZ1JmT8OZBH2R1UmN3hJSrKo4,36527
102
102
  pymobiledevice3/services/amfi.py,sha256=CmH4tbWpwLhfZlX0ukOD7sX8sYhr0exlczQ8tY2NnPw,2511
103
103
  pymobiledevice3/services/companion.py,sha256=uKsIqDHIdMkx6QjRd55NE6w8ksXhT_aN2z2cQAcIif0,2694
104
- pymobiledevice3/services/crash_reports.py,sha256=KXi_LVyvLGt2AXz-t5wI6bS4ybMpZ4ilvDBxorHHXAM,10788
104
+ pymobiledevice3/services/crash_reports.py,sha256=vHIDCjlJTz26X6e2rpxb2K9sASNHlvms_mM2eXglxjU,10808
105
105
  pymobiledevice3/services/debugserver_applist.py,sha256=YE6mWfEb4IiKmdATOCESto1nI-_uovrbqrkByGektLI,548
106
106
  pymobiledevice3/services/device_arbitration.py,sha256=FNcWydgueBqNUVZXwYfRF-EKS3vvQQHQwVzKzc-O8u4,1134
107
107
  pymobiledevice3/services/device_link.py,sha256=KCpHjOBvvzIz87JClMpRmK4fAARftaHHK1cT-YSDcXY,8435
@@ -129,7 +129,7 @@ pymobiledevice3/services/screenshot.py,sha256=sulQnyVGmq_3MJZGQ_GPJYOCj_tmE_d9ZG
129
129
  pymobiledevice3/services/simulate_location.py,sha256=WsnxaHIeRa0-9LkHbfnfOG0I9GK7D7xgksl91hOfCkI,1166
130
130
  pymobiledevice3/services/springboard.py,sha256=-3tqSuRx4p2j-rWRkDl_icvxftyuEkESWANKAS1L97M,2510
131
131
  pymobiledevice3/services/syslog.py,sha256=dccKS8sWgPCGOzK2-3f08gyF9UrN5-iHeqHxtpt6P-0,1563
132
- pymobiledevice3/services/webinspector.py,sha256=MioTJCUZPWUcNCTqzDuNp7J8s_P8bkDGMiKSTD64EB4,15913
132
+ pymobiledevice3/services/webinspector.py,sha256=p-wazgczgVh07dTuPNtYv9RHB6HgwxLrQMFX_dms96k,16488
133
133
  pymobiledevice3/services/dvt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
134
  pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py,sha256=2lhxkZVxV3U3tDKrx2AxX5Ui2QXBoz8_WEY6xbrkkTc,1072
135
135
  pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py,sha256=dsaResRZem1ezLkQNfMXvFJoaE0lsbznhYs7q8BLVAw,1179
@@ -163,10 +163,10 @@ pymobiledevice3/services/web_protocol/session_protocol.py,sha256=7dJkFyivu554K6I
163
163
  pymobiledevice3/services/web_protocol/switch_to.py,sha256=hDddJUEePbRN-8xlllOeGhnYvE4NEnd8JJIlosLMB9c,2880
164
164
  pymobiledevice3/tunneld/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
165
  pymobiledevice3/tunneld/api.py,sha256=EfGKXEWhsMSB__menPmRmL9R6dpazVJDUy7B3pn05MM,2357
166
- pymobiledevice3/tunneld/server.py,sha256=IFgRHBEoM-DXUAz83VhGfP1b0oJbnsxgrZix29t_rk4,22919
167
- pymobiledevice3-4.27.4.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
168
- pymobiledevice3-4.27.4.dist-info/METADATA,sha256=af7BO2wUPogLF9E6Ex_PWDMKYAkMvCD6XzyymAXg6VU,17450
169
- pymobiledevice3-4.27.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
170
- pymobiledevice3-4.27.4.dist-info/entry_points.txt,sha256=jJMlOanHlVwUxcY__JwvKeWPrvBJr_wJyEq4oHIZNKE,66
171
- pymobiledevice3-4.27.4.dist-info/top_level.txt,sha256=MjZoRqcWPOh5banG-BbDOnKEfsS3kCxqV9cv-nzyg2Q,21
172
- pymobiledevice3-4.27.4.dist-info/RECORD,,
166
+ pymobiledevice3/tunneld/server.py,sha256=L_98QatvVuyiXexoHF5rA0V56wC84VLeKhLyiFWwHrc,22960
167
+ pymobiledevice3-4.27.5.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
168
+ pymobiledevice3-4.27.5.dist-info/METADATA,sha256=JkvGLXeRUphXgo-AmCAyHIS3YWJoR9ftkt0hXLAIJWM,17450
169
+ pymobiledevice3-4.27.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
170
+ pymobiledevice3-4.27.5.dist-info/entry_points.txt,sha256=jJMlOanHlVwUxcY__JwvKeWPrvBJr_wJyEq4oHIZNKE,66
171
+ pymobiledevice3-4.27.5.dist-info/top_level.txt,sha256=MjZoRqcWPOh5banG-BbDOnKEfsS3kCxqV9cv-nzyg2Q,21
172
+ pymobiledevice3-4.27.5.dist-info/RECORD,,