pymobiledevice3 5.0.4__py3-none-any.whl → 7.0.6__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.
- misc/understanding_idevice_protocol_layers.md +10 -5
- pymobiledevice3/__main__.py +171 -46
- pymobiledevice3/_version.py +2 -2
- pymobiledevice3/bonjour.py +22 -21
- pymobiledevice3/cli/activation.py +24 -22
- pymobiledevice3/cli/afc.py +49 -41
- pymobiledevice3/cli/amfi.py +13 -18
- pymobiledevice3/cli/apps.py +71 -65
- pymobiledevice3/cli/backup.py +134 -93
- pymobiledevice3/cli/bonjour.py +31 -29
- pymobiledevice3/cli/cli_common.py +175 -232
- pymobiledevice3/cli/companion_proxy.py +12 -12
- pymobiledevice3/cli/crash.py +95 -52
- pymobiledevice3/cli/developer/__init__.py +62 -0
- pymobiledevice3/cli/developer/accessibility/__init__.py +65 -0
- pymobiledevice3/cli/developer/accessibility/settings.py +43 -0
- pymobiledevice3/cli/developer/arbitration.py +50 -0
- pymobiledevice3/cli/developer/condition.py +33 -0
- pymobiledevice3/cli/developer/core_device.py +294 -0
- pymobiledevice3/cli/developer/debugserver.py +244 -0
- pymobiledevice3/cli/developer/dvt/__init__.py +438 -0
- pymobiledevice3/cli/developer/dvt/core_profile_session.py +295 -0
- pymobiledevice3/cli/developer/dvt/simulate_location.py +56 -0
- pymobiledevice3/cli/developer/dvt/sysmon/__init__.py +69 -0
- pymobiledevice3/cli/developer/dvt/sysmon/process.py +188 -0
- pymobiledevice3/cli/developer/fetch_symbols.py +108 -0
- pymobiledevice3/cli/developer/simulate_location.py +51 -0
- pymobiledevice3/cli/diagnostics/__init__.py +75 -0
- pymobiledevice3/cli/diagnostics/battery.py +47 -0
- pymobiledevice3/cli/idam.py +42 -0
- pymobiledevice3/cli/lockdown.py +70 -75
- pymobiledevice3/cli/mounter.py +99 -57
- pymobiledevice3/cli/notification.py +38 -26
- pymobiledevice3/cli/pcap.py +36 -20
- pymobiledevice3/cli/power_assertion.py +15 -16
- pymobiledevice3/cli/processes.py +11 -17
- pymobiledevice3/cli/profile.py +120 -75
- pymobiledevice3/cli/provision.py +27 -26
- pymobiledevice3/cli/remote.py +109 -100
- pymobiledevice3/cli/restore.py +134 -129
- pymobiledevice3/cli/springboard.py +50 -50
- pymobiledevice3/cli/syslog.py +145 -65
- pymobiledevice3/cli/usbmux.py +66 -27
- pymobiledevice3/cli/version.py +2 -5
- pymobiledevice3/cli/webinspector.py +232 -156
- pymobiledevice3/exceptions.py +6 -2
- pymobiledevice3/lockdown.py +5 -1
- pymobiledevice3/lockdown_service_provider.py +5 -0
- pymobiledevice3/remote/remote_service_discovery.py +18 -10
- pymobiledevice3/restore/device.py +28 -4
- pymobiledevice3/restore/restore.py +2 -2
- pymobiledevice3/service_connection.py +15 -12
- pymobiledevice3/services/afc.py +731 -220
- pymobiledevice3/services/device_link.py +45 -31
- pymobiledevice3/services/idam.py +20 -0
- pymobiledevice3/services/lockdown_service.py +12 -9
- pymobiledevice3/services/mobile_config.py +1 -0
- pymobiledevice3/services/mobilebackup2.py +6 -3
- pymobiledevice3/services/os_trace.py +97 -55
- pymobiledevice3/services/remote_fetch_symbols.py +13 -8
- pymobiledevice3/services/screenshot.py +2 -2
- pymobiledevice3/services/web_protocol/alert.py +8 -8
- pymobiledevice3/services/web_protocol/automation_session.py +87 -79
- pymobiledevice3/services/web_protocol/cdp_screencast.py +2 -1
- pymobiledevice3/services/web_protocol/driver.py +71 -70
- pymobiledevice3/services/web_protocol/element.py +58 -56
- pymobiledevice3/services/web_protocol/selenium_api.py +47 -47
- pymobiledevice3/services/web_protocol/session_protocol.py +3 -2
- pymobiledevice3/services/web_protocol/switch_to.py +23 -19
- pymobiledevice3/services/webinspector.py +42 -67
- {pymobiledevice3-5.0.4.dist-info → pymobiledevice3-7.0.6.dist-info}/METADATA +5 -3
- {pymobiledevice3-5.0.4.dist-info → pymobiledevice3-7.0.6.dist-info}/RECORD +76 -61
- pymobiledevice3/cli/completions.py +0 -50
- pymobiledevice3/cli/developer.py +0 -1539
- pymobiledevice3/cli/diagnostics.py +0 -110
- {pymobiledevice3-5.0.4.dist-info → pymobiledevice3-7.0.6.dist-info}/WHEEL +0 -0
- {pymobiledevice3-5.0.4.dist-info → pymobiledevice3-7.0.6.dist-info}/entry_points.txt +0 -0
- {pymobiledevice3-5.0.4.dist-info → pymobiledevice3-7.0.6.dist-info}/licenses/LICENSE +0 -0
- {pymobiledevice3-5.0.4.dist-info → pymobiledevice3-7.0.6.dist-info}/top_level.txt +0 -0
|
@@ -3,12 +3,9 @@ import contextlib
|
|
|
3
3
|
import json
|
|
4
4
|
import logging
|
|
5
5
|
import uuid
|
|
6
|
-
from collections.abc import Coroutine
|
|
7
6
|
from dataclasses import dataclass, fields
|
|
8
7
|
from enum import Enum
|
|
9
|
-
from typing import
|
|
10
|
-
|
|
11
|
-
import nest_asyncio
|
|
8
|
+
from typing import Optional, Union
|
|
12
9
|
|
|
13
10
|
from pymobiledevice3.exceptions import (
|
|
14
11
|
LaunchingApplicationError,
|
|
@@ -122,21 +119,12 @@ class WebinspectorService:
|
|
|
122
119
|
SERVICE_NAME = "com.apple.webinspector"
|
|
123
120
|
RSD_SERVICE_NAME = "com.apple.webinspector.shim.remote"
|
|
124
121
|
|
|
125
|
-
def __init__(self, lockdown: LockdownServiceProvider
|
|
126
|
-
if loop is None:
|
|
127
|
-
try:
|
|
128
|
-
loop = asyncio.get_running_loop()
|
|
129
|
-
except RuntimeError:
|
|
130
|
-
loop = asyncio.new_event_loop()
|
|
131
|
-
asyncio.set_event_loop(loop)
|
|
132
|
-
nest_asyncio.apply(loop)
|
|
133
|
-
|
|
122
|
+
def __init__(self, lockdown: LockdownServiceProvider):
|
|
134
123
|
if isinstance(lockdown, LockdownClient):
|
|
135
124
|
self.service_name = self.SERVICE_NAME
|
|
136
125
|
else:
|
|
137
126
|
self.service_name = self.RSD_SERVICE_NAME
|
|
138
127
|
|
|
139
|
-
self.loop = loop
|
|
140
128
|
self.logger = logging.getLogger(__name__)
|
|
141
129
|
self.lockdown = lockdown
|
|
142
130
|
self.service: Optional[ServiceConnection] = None
|
|
@@ -158,20 +146,20 @@ class WebinspectorService:
|
|
|
158
146
|
}
|
|
159
147
|
self._recv_task: Optional[asyncio.Task] = None
|
|
160
148
|
|
|
161
|
-
def connect(self, timeout: Optional[Union[float, int]] = None):
|
|
162
|
-
self.service = self.
|
|
163
|
-
self.
|
|
149
|
+
async def connect(self, timeout: Optional[Union[float, int]] = None):
|
|
150
|
+
self.service = await self.lockdown.aio_start_lockdown_service(self.service_name)
|
|
151
|
+
await self._report_identifier()
|
|
164
152
|
try:
|
|
165
|
-
self._handle_recv(
|
|
153
|
+
await self._handle_recv(await asyncio.wait_for(self._recv_message(), timeout))
|
|
166
154
|
except asyncio.TimeoutError as e:
|
|
167
155
|
raise WebInspectorNotEnabledError from e
|
|
168
|
-
self._recv_task =
|
|
156
|
+
self._recv_task = asyncio.create_task(self._receiving_task())
|
|
169
157
|
|
|
170
|
-
def close(self):
|
|
158
|
+
async def close(self):
|
|
171
159
|
self._recv_task.cancel()
|
|
172
160
|
with contextlib.suppress(asyncio.CancelledError):
|
|
173
|
-
self.
|
|
174
|
-
self.
|
|
161
|
+
await self._recv_task
|
|
162
|
+
await self.service.aio_close()
|
|
175
163
|
|
|
176
164
|
async def _recv_message(self):
|
|
177
165
|
while True:
|
|
@@ -182,19 +170,19 @@ class WebinspectorService:
|
|
|
182
170
|
|
|
183
171
|
async def _receiving_task(self):
|
|
184
172
|
while True:
|
|
185
|
-
self._handle_recv(await self._recv_message())
|
|
173
|
+
await self._handle_recv(await self._recv_message())
|
|
186
174
|
|
|
187
|
-
def automation_session(self, app: Application) -> AutomationSession:
|
|
175
|
+
async def automation_session(self, app: Application) -> AutomationSession:
|
|
188
176
|
if self.state == "WIRAutomationAvailabilityNotAvailable":
|
|
189
177
|
raise RemoteAutomationNotEnabledError()
|
|
190
178
|
session_id = str(uuid.uuid4()).upper()
|
|
191
|
-
self.
|
|
192
|
-
self.
|
|
193
|
-
page = self.
|
|
194
|
-
self.
|
|
195
|
-
self.
|
|
179
|
+
await self._forward_automation_session_request(session_id, app.id_)
|
|
180
|
+
await self._forward_get_listing(app.id_)
|
|
181
|
+
page = await self._wait_for_page(session_id)
|
|
182
|
+
await self._forward_socket_setup(session_id, app.id_, page.id_)
|
|
183
|
+
await self._forward_get_listing(app.id_)
|
|
196
184
|
while not page.automation_connection_id:
|
|
197
|
-
|
|
185
|
+
await asyncio.sleep(0)
|
|
198
186
|
return AutomationSession(SessionProtocol(self, session_id, app, page))
|
|
199
187
|
|
|
200
188
|
async def inspector_session(self, app: Application, page: Page) -> InspectorSession:
|
|
@@ -204,20 +192,20 @@ class WebinspectorService:
|
|
|
204
192
|
wait_target=page.type_ != WirTypes.JAVASCRIPT,
|
|
205
193
|
)
|
|
206
194
|
|
|
207
|
-
def get_open_pages(self) -> dict:
|
|
195
|
+
async def get_open_pages(self) -> dict:
|
|
208
196
|
apps = {}
|
|
209
|
-
|
|
197
|
+
await asyncio.gather(*[self._forward_get_listing(app) for app in self.connected_application])
|
|
210
198
|
for app in self.connected_application:
|
|
211
199
|
if self.application_pages.get(app, False):
|
|
212
200
|
apps[self.connected_application[app].name] = self.application_pages[app].values()
|
|
213
201
|
return apps
|
|
214
202
|
|
|
215
|
-
def get_open_application_pages(self, timeout: float) -> list[ApplicationPage]:
|
|
203
|
+
async def get_open_application_pages(self, timeout: float) -> list[ApplicationPage]:
|
|
216
204
|
# Query all connected applications
|
|
217
|
-
self.
|
|
205
|
+
await self._get_connected_applications()
|
|
218
206
|
|
|
219
207
|
# Give some time for `webinspectord` to reply with all inspectable applications
|
|
220
|
-
|
|
208
|
+
await asyncio.sleep(timeout)
|
|
221
209
|
|
|
222
210
|
result = []
|
|
223
211
|
for app in self.connected_application:
|
|
@@ -226,11 +214,11 @@ class WebinspectorService:
|
|
|
226
214
|
result.append(ApplicationPage(self.connected_application[app], page))
|
|
227
215
|
return result
|
|
228
216
|
|
|
229
|
-
def open_app(self, bundle: str, timeout: Union[float, int] = 3) -> Application:
|
|
230
|
-
self.
|
|
231
|
-
self.get_open_pages()
|
|
217
|
+
async def open_app(self, bundle: str, timeout: Union[float, int] = 3) -> Application:
|
|
218
|
+
await self._request_application_launch(bundle)
|
|
219
|
+
await self.get_open_pages()
|
|
232
220
|
try:
|
|
233
|
-
return
|
|
221
|
+
return await asyncio.wait_for(self._wait_for_application(bundle), timeout)
|
|
234
222
|
except TimeoutError as e:
|
|
235
223
|
raise LaunchingApplicationError() from e
|
|
236
224
|
|
|
@@ -245,43 +233,29 @@ class WebinspectorService:
|
|
|
245
233
|
for page in self.application_pages[app_id]:
|
|
246
234
|
if page == page_id:
|
|
247
235
|
return self.connected_application[app_id], self.application_pages[app_id][page_id]
|
|
236
|
+
raise KeyError(f"Page with id {page_id} not found")
|
|
248
237
|
|
|
249
|
-
def flush_input(self, duration: Union[float, int] = 0):
|
|
250
|
-
return
|
|
251
|
-
|
|
252
|
-
def await_(self, awaitable: Coroutine) -> Any:
|
|
253
|
-
return self.loop.run_until_complete(awaitable)
|
|
254
|
-
|
|
255
|
-
def _await_with_timeout(self, coro: Coroutine, timeout: Optional[float] = None) -> Any:
|
|
256
|
-
# Create a task explicitly so we're definitely inside a Task
|
|
257
|
-
task = self.loop.create_task(coro)
|
|
258
|
-
done, _pending = self.loop.run_until_complete(asyncio.wait({task}, timeout=timeout))
|
|
259
|
-
if not done:
|
|
260
|
-
task.cancel()
|
|
261
|
-
# Give the task a chance to cancel cleanly
|
|
262
|
-
with contextlib.suppress(asyncio.CancelledError):
|
|
263
|
-
self.loop.run_until_complete(task)
|
|
264
|
-
raise WebInspectorNotEnabledError()
|
|
265
|
-
return task.result()
|
|
238
|
+
async def flush_input(self, duration: Union[float, int] = 0):
|
|
239
|
+
return await asyncio.sleep(duration)
|
|
266
240
|
|
|
267
|
-
def _handle_recv(self, plist):
|
|
268
|
-
self.receive_handlers[plist["__selector"]](plist["__argument"])
|
|
241
|
+
async def _handle_recv(self, plist):
|
|
242
|
+
await self.receive_handlers[plist["__selector"]](plist["__argument"])
|
|
269
243
|
|
|
270
|
-
def _handle_report_current_state(self, arg):
|
|
244
|
+
async def _handle_report_current_state(self, arg):
|
|
271
245
|
self.state = arg["WIRAutomationAvailabilityKey"]
|
|
272
246
|
|
|
273
|
-
def _handle_report_connected_application_list(self, arg):
|
|
247
|
+
async def _handle_report_connected_application_list(self, arg):
|
|
274
248
|
self.connected_application = {}
|
|
275
249
|
for key, application in arg["WIRApplicationDictionaryKey"].items():
|
|
276
250
|
self.connected_application[key] = Application.from_application_dictionary(application)
|
|
277
251
|
|
|
278
252
|
# Immediately also query the application pages
|
|
279
|
-
self.
|
|
253
|
+
await self._forward_get_listing(self.connected_application[key].id_)
|
|
280
254
|
|
|
281
|
-
def _handle_report_connected_driver_list(self, arg):
|
|
255
|
+
async def _handle_report_connected_driver_list(self, arg):
|
|
282
256
|
pass
|
|
283
257
|
|
|
284
|
-
def _handle_application_sent_listing(self, arg):
|
|
258
|
+
async def _handle_application_sent_listing(self, arg):
|
|
285
259
|
if arg["WIRApplicationIdentifierKey"] in self.application_pages:
|
|
286
260
|
# Update existing application pages
|
|
287
261
|
for id_, page in arg["WIRListingKey"].items():
|
|
@@ -296,15 +270,15 @@ class WebinspectorService:
|
|
|
296
270
|
pages[id_] = Page.from_page_dictionary(page)
|
|
297
271
|
self.application_pages[arg["WIRApplicationIdentifierKey"]] = pages
|
|
298
272
|
|
|
299
|
-
def _handle_application_updated(self, arg):
|
|
273
|
+
async def _handle_application_updated(self, arg):
|
|
300
274
|
app = Application.from_application_dictionary(arg)
|
|
301
275
|
self.connected_application[app.id_] = app
|
|
302
276
|
|
|
303
|
-
def _handle_application_connected(self, arg):
|
|
277
|
+
async def _handle_application_connected(self, arg):
|
|
304
278
|
app = Application.from_application_dictionary(arg)
|
|
305
279
|
self.connected_application[app.id_] = app
|
|
306
280
|
|
|
307
|
-
def _handle_application_sent_data(self, arg):
|
|
281
|
+
async def _handle_application_sent_data(self, arg):
|
|
308
282
|
response = json.loads(arg["WIRMessageDataKey"])
|
|
309
283
|
|
|
310
284
|
if "id" in response:
|
|
@@ -312,7 +286,7 @@ class WebinspectorService:
|
|
|
312
286
|
else:
|
|
313
287
|
self.wir_events.append(response)
|
|
314
288
|
|
|
315
|
-
def _handle_application_disconnected(self, arg):
|
|
289
|
+
async def _handle_application_disconnected(self, arg):
|
|
316
290
|
self.connected_application.pop(arg["WIRApplicationIdentifierKey"], None)
|
|
317
291
|
self.application_pages.pop(arg["WIRApplicationIdentifierKey"], None)
|
|
318
292
|
|
|
@@ -386,6 +360,7 @@ class WebinspectorService:
|
|
|
386
360
|
for page in self.application_pages[app_id]:
|
|
387
361
|
if page.type_ == WirTypes.AUTOMATION and page.automation_session_id == session_id:
|
|
388
362
|
return page
|
|
363
|
+
raise KeyError(f"Automation session with id {session_id} not found")
|
|
389
364
|
|
|
390
365
|
async def _wait_for_page(self, session_id: str):
|
|
391
366
|
while True:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pymobiledevice3
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0.6
|
|
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>
|
|
@@ -21,8 +21,8 @@ Requires-Python: >=3.9
|
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
Requires-Dist: construct>=2.9.29
|
|
24
|
+
Requires-Dist: construct-typing>=0.7.0
|
|
24
25
|
Requires-Dist: asn1
|
|
25
|
-
Requires-Dist: click
|
|
26
26
|
Requires-Dist: coloredlogs
|
|
27
27
|
Requires-Dist: IPython
|
|
28
28
|
Requires-Dist: bpylist2>=4.0.1
|
|
@@ -46,7 +46,7 @@ Requires-Dist: wsproto
|
|
|
46
46
|
Requires-Dist: nest_asyncio>=1.5.5
|
|
47
47
|
Requires-Dist: Pillow
|
|
48
48
|
Requires-Dist: inquirer3>=0.6.0
|
|
49
|
-
Requires-Dist: ipsw_parser>=1.
|
|
49
|
+
Requires-Dist: ipsw_parser>=1.5.0
|
|
50
50
|
Requires-Dist: ifaddr
|
|
51
51
|
Requires-Dist: hyperframe
|
|
52
52
|
Requires-Dist: srptools
|
|
@@ -60,6 +60,8 @@ Requires-Dist: sslpsk-pmd3>=1.0.3; python_version < "3.13"
|
|
|
60
60
|
Requires-Dist: python-pcapng>=2.1.1
|
|
61
61
|
Requires-Dist: plumbum
|
|
62
62
|
Requires-Dist: pyimg4>=0.8.8
|
|
63
|
+
Requires-Dist: typer>=0.20.0
|
|
64
|
+
Requires-Dist: typer-injector>=0.2.0
|
|
63
65
|
Provides-Extra: test
|
|
64
66
|
Requires-Dist: pytest; extra == "test"
|
|
65
67
|
Requires-Dist: pytest-asyncio; extra == "test"
|
|
@@ -4,52 +4,66 @@ misc/RemoteXPC.md,sha256=1wfXK_LWKDi-hZlScHffAsD1ZIWjR7bNIA2B82BhW4Y,34110
|
|
|
4
4
|
misc/plist_sniffer.py,sha256=lL6jJ3bBIlj6U-AEUCijkMFyd_B0kB8x_gV2qvu_KuM,1912
|
|
5
5
|
misc/pyinstaller.md,sha256=-j0uoOoaSoUQSpYhLzszT3oqrgEuBz3jXXvMp2Ix0D8,933
|
|
6
6
|
misc/remotexpc_sniffer.py,sha256=EMhJusdbOhFHJCYF2TLtNABAnzAibIeq8hxRu4xaVhA,7979
|
|
7
|
-
misc/understanding_idevice_protocol_layers.md,sha256=
|
|
7
|
+
misc/understanding_idevice_protocol_layers.md,sha256=FMJQ-ik2j9kFLPS15JzDZg62uk1FzxDnfHO6Nf5EM-A,19207
|
|
8
8
|
misc/usbmux_sniff.sh,sha256=iWtbucOEQ9_UEFXk9x-2VNt48Jg5zrPsnUbZ_LfZxwA,212
|
|
9
9
|
pymobiledevice3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
pymobiledevice3/__main__.py,sha256=
|
|
11
|
-
pymobiledevice3/_version.py,sha256=
|
|
12
|
-
pymobiledevice3/bonjour.py,sha256=
|
|
10
|
+
pymobiledevice3/__main__.py,sha256=Ogsyro4MUVVSciEtg8kZufL81AHcjuphItnaL0BT10Q,16386
|
|
11
|
+
pymobiledevice3/_version.py,sha256=BkZN37c4YwoiwmszvapxWzYoniLXefgepLHi-aFamZ8,704
|
|
12
|
+
pymobiledevice3/bonjour.py,sha256=lmx3uCaiolF59AieftmTKqktNod5ZDyJ06oRZdYKHSE,13681
|
|
13
13
|
pymobiledevice3/ca.py,sha256=5_Y4F-zDFX_KeDL-M_TRCKKyrRRb9h1lBE8MGTWv91o,10606
|
|
14
14
|
pymobiledevice3/common.py,sha256=FZzF0BQYV5fCEUPbLo6jbt2Ig9s5YwR8AvX_iR124Ew,329
|
|
15
|
-
pymobiledevice3/exceptions.py,sha256=
|
|
15
|
+
pymobiledevice3/exceptions.py,sha256=hEAAvzGRZ4Ij9IKwu9BaBhKZAM57VEZxfcrDf76eCCA,10892
|
|
16
16
|
pymobiledevice3/irecv.py,sha256=623PDDVXQGPXtNPE-134sp0Gnys7VkWmb0ZQPZ2xrsE,10570
|
|
17
17
|
pymobiledevice3/irecv_devices.py,sha256=Mpp0AZYwFxqtqS9dTPdLZfxnj6UiDf8HbGGrHpsSnIA,44220
|
|
18
|
-
pymobiledevice3/lockdown.py,sha256=
|
|
19
|
-
pymobiledevice3/lockdown_service_provider.py,sha256=
|
|
18
|
+
pymobiledevice3/lockdown.py,sha256=CgT3FApB3SLXbvbL3I7OFN7IkiPpSKjdxA1Zr0I6xIs,39576
|
|
19
|
+
pymobiledevice3/lockdown_service_provider.py,sha256=mj5Hf3fNWdVYYUayKnLO3NWNgvD0xDMAiSIXKDcXCuk,1814
|
|
20
20
|
pymobiledevice3/pair_records.py,sha256=4T32UPcBuN_4e-QFzGLoDoUBg3k7hgQh72Yo3CTi18M,6001
|
|
21
|
-
pymobiledevice3/service_connection.py,sha256=
|
|
21
|
+
pymobiledevice3/service_connection.py,sha256=7-FxkycdgzAMcPqn5j5K4z8Zj5O_EOAj67j9DhkJcOY,15041
|
|
22
22
|
pymobiledevice3/tcp_forwarder.py,sha256=imOTd76bh5bknOMJ4KAnWoe68eL3F3TpYlNM8eR7eXA,8971
|
|
23
23
|
pymobiledevice3/usbmux.py,sha256=GmQTB3V5_6oYErBlZrFRi7XjPKVU1p0RUj147vT9-eg,16835
|
|
24
24
|
pymobiledevice3/utils.py,sha256=Udx6xubsWYtJU9x7R-PrlSHseY438ua9_DPvzHd3XrQ,2210
|
|
25
25
|
pymobiledevice3/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
-
pymobiledevice3/cli/activation.py,sha256=
|
|
27
|
-
pymobiledevice3/cli/afc.py,sha256=
|
|
28
|
-
pymobiledevice3/cli/amfi.py,sha256=
|
|
29
|
-
pymobiledevice3/cli/apps.py,sha256=
|
|
30
|
-
pymobiledevice3/cli/backup.py,sha256=
|
|
31
|
-
pymobiledevice3/cli/bonjour.py,sha256=
|
|
32
|
-
pymobiledevice3/cli/cli_common.py,sha256=
|
|
33
|
-
pymobiledevice3/cli/companion_proxy.py,sha256=
|
|
34
|
-
pymobiledevice3/cli/
|
|
35
|
-
pymobiledevice3/cli/
|
|
36
|
-
pymobiledevice3/cli/
|
|
37
|
-
pymobiledevice3/cli/
|
|
38
|
-
pymobiledevice3/cli/
|
|
39
|
-
pymobiledevice3/cli/
|
|
40
|
-
pymobiledevice3/cli/
|
|
41
|
-
pymobiledevice3/cli/
|
|
42
|
-
pymobiledevice3/cli/
|
|
43
|
-
pymobiledevice3/cli/
|
|
44
|
-
pymobiledevice3/cli/
|
|
45
|
-
pymobiledevice3/cli/
|
|
46
|
-
pymobiledevice3/cli/
|
|
47
|
-
pymobiledevice3/cli/
|
|
48
|
-
pymobiledevice3/cli/
|
|
49
|
-
pymobiledevice3/cli/
|
|
50
|
-
pymobiledevice3/cli/
|
|
51
|
-
pymobiledevice3/cli/
|
|
52
|
-
pymobiledevice3/cli/
|
|
26
|
+
pymobiledevice3/cli/activation.py,sha256=FDqkBa1ew_d_8MLmq8nelF8D1eBcqm9kqTCAH03sTUU,1335
|
|
27
|
+
pymobiledevice3/cli/afc.py,sha256=K9TEy-7p4MdV6XKtO_yiiLJ2M_lOrbjdsBWuSfwSXdw,2042
|
|
28
|
+
pymobiledevice3/cli/amfi.py,sha256=3cpKYYNuyT58ojggsiI3LoBVhbOEvOOncabSK_w3J1c,925
|
|
29
|
+
pymobiledevice3/cli/apps.py,sha256=rieU0xT9y8mdzwkXXif3OIJaxMnDv6rdEUFVFc-ljkk,3518
|
|
30
|
+
pymobiledevice3/cli/backup.py,sha256=Qt-iUARMtdMeFujawN1kpxC39u2q3IKocUDkpCrTFYM,6814
|
|
31
|
+
pymobiledevice3/cli/bonjour.py,sha256=UMPJU1oOu6pnvhM0MKInlXkag70Z9D-wUzLhFWc8WYs,2837
|
|
32
|
+
pymobiledevice3/cli/cli_common.py,sha256=FZJtZgnMZcCg2X2daJBvqOgbhiGbcG5aDFQ_pf59Ugo,9841
|
|
33
|
+
pymobiledevice3/cli/companion_proxy.py,sha256=Zp1PJKE36mNs2lbnmwevDoVC7jTX5FSuQApTcmvEhJg,611
|
|
34
|
+
pymobiledevice3/cli/crash.py,sha256=wss34L3at8qwL_z5ExGabofBbQ99cP_CGJJm8vuF36g,3506
|
|
35
|
+
pymobiledevice3/cli/idam.py,sha256=a_xnURhQlmfnrTGY5KwOIbl9f-1rAjuGG-q6QfOfSE4,1105
|
|
36
|
+
pymobiledevice3/cli/lockdown.py,sha256=GoDnSiX2Ts8XFz3ZIVJLf3HBhiO5SuKBW3zOj63GjbU,6393
|
|
37
|
+
pymobiledevice3/cli/mounter.py,sha256=wKFyn2liZspAVu7GWAfJiA_CyTLmDFeN9mg9YISMK_M,7930
|
|
38
|
+
pymobiledevice3/cli/notification.py,sha256=rHC8z1RFpQpQAnsbqGC2ozqFjzvJ98FXw2WdAPJE0sw,2143
|
|
39
|
+
pymobiledevice3/cli/pcap.py,sha256=50_jpjxC5GRJeD3PnrVnp5CkJhw1ZOM-LKxwsotif1E,2431
|
|
40
|
+
pymobiledevice3/cli/power_assertion.py,sha256=Dwv_ykYpxB8sHsNkN0KTgCP8xL-zpE0m7chBsdBYRHM,817
|
|
41
|
+
pymobiledevice3/cli/processes.py,sha256=iMjASV8LTCVMzDtx-H9vURI6V6FknVzMOtFFxTxsGNA,1027
|
|
42
|
+
pymobiledevice3/cli/profile.py,sha256=FCFsr7t3eRN92bOtinBK37zxG-XuSNdji5CdD_smhvw,7392
|
|
43
|
+
pymobiledevice3/cli/provision.py,sha256=tlJ2n7GdCdDMK5kLguo9Zp7l81PcIdzlS8efYylxAlA,1944
|
|
44
|
+
pymobiledevice3/cli/remote.py,sha256=tjoMjjUg32SPaIdZbwtu2Frno5Ly9is3p_E6FyjWxUU,12711
|
|
45
|
+
pymobiledevice3/cli/restore.py,sha256=j1T9-eZi2AsvQqJ0EKpXuaWPuttoVUPy0xbYYfH6B_s,7485
|
|
46
|
+
pymobiledevice3/cli/springboard.py,sha256=S76Kth2DbqsjGRFVOns40-L4RCqFnuMFuy7bVHbmw9M,3111
|
|
47
|
+
pymobiledevice3/cli/syslog.py,sha256=tqQLecHGcb0v_3Lq54XyEDojdxJSFpvMnQ8B7P_lU58,8945
|
|
48
|
+
pymobiledevice3/cli/usbmux.py,sha256=9HeKkk8cu9RXA_xpB-FgT5lv-12hhb9aeUrgnqV25uE,2906
|
|
49
|
+
pymobiledevice3/cli/version.py,sha256=59NxyLVJWcqNpoKo-XTc5RYGmweuJUmKgKnLwaLzD5o,326
|
|
50
|
+
pymobiledevice3/cli/webinspector.py,sha256=grfwKDAQ1oh7WA_VWCM6qGQzo8osIOY2PjpYXJ1hzCs,17946
|
|
51
|
+
pymobiledevice3/cli/developer/__init__.py,sha256=idQOgVsitt3nfolyhZuA6KHN2j44JNVq-d41I6ychpY,2015
|
|
52
|
+
pymobiledevice3/cli/developer/arbitration.py,sha256=7Eod6-dlSjAMBljbsIGHL_QG9LFbOPIXqpS9Y_4-Q3Y,1576
|
|
53
|
+
pymobiledevice3/cli/developer/condition.py,sha256=lb5BS8lVcgsb2yBgBsN2nK-j2u1_iVm_tBd1pSRHZB0,1294
|
|
54
|
+
pymobiledevice3/cli/developer/core_device.py,sha256=QzMVfghq3fKLI2NQ2Kg7r_zyFIWGCBt7ZS-GTLWDZs4,10895
|
|
55
|
+
pymobiledevice3/cli/developer/debugserver.py,sha256=4_BiZi69i31t6j7gpGEvt9m8Zo0yJsBQH7zQySyr68M,9315
|
|
56
|
+
pymobiledevice3/cli/developer/fetch_symbols.py,sha256=57HzVyUJPXL_I8EiqWArJ2Fczb2yX9y6nDMgjZcADo0,4353
|
|
57
|
+
pymobiledevice3/cli/developer/simulate_location.py,sha256=IVJQPYKUrQcsdpCxf2D2sgy6Nb3mUOFvK-Og_y5lfDM,1555
|
|
58
|
+
pymobiledevice3/cli/developer/accessibility/__init__.py,sha256=VpJSdnkEZhUuJXWy08wqgqObXv1PgZ2Ht4qy-560QRk,2271
|
|
59
|
+
pymobiledevice3/cli/developer/accessibility/settings.py,sha256=QKgQ7XK6LNrlE-1nnWVGL2Mix385Huf-diptgY91apA,1170
|
|
60
|
+
pymobiledevice3/cli/developer/dvt/__init__.py,sha256=DrmpUNrx0xGLJcs6npYoWpbymmvNHo7aaT7ml2HBdXk,15730
|
|
61
|
+
pymobiledevice3/cli/developer/dvt/core_profile_session.py,sha256=Ni6znP0mg-XKLu0aXm8ZZDEKziKokQYMjwbTu2TzFxk,9968
|
|
62
|
+
pymobiledevice3/cli/developer/dvt/simulate_location.py,sha256=QLjjllbjuM205joFlRXdo7cIjvkFdXJ2f5pKzT9sHOY,1816
|
|
63
|
+
pymobiledevice3/cli/developer/dvt/sysmon/__init__.py,sha256=PSTruXzQQLGvVuc1j7aKEafXFYgFMOCuNiMjbtDqKrM,2283
|
|
64
|
+
pymobiledevice3/cli/developer/dvt/sysmon/process.py,sha256=WlnFqoAc3yuk0lM2hxGFP1s_9A_X4w665od5AEgrH3A,6255
|
|
65
|
+
pymobiledevice3/cli/diagnostics/__init__.py,sha256=CH7dccvgEF8X-7HBICpRjkVWZrDpoVkeRsNe83LLeto,2489
|
|
66
|
+
pymobiledevice3/cli/diagnostics/battery.py,sha256=R6Fk-QhIMkgQTVTdbFgd-1LmzJRIpe08GlEjR-Q8Tnw,1453
|
|
53
67
|
pymobiledevice3/osu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
68
|
pymobiledevice3/osu/os_utils.py,sha256=TP4-mTWZig4uwvLV6Ku0z7qrA2OU7ANKzwyCYYWsXhc,3296
|
|
55
69
|
pymobiledevice3/osu/posix_util.py,sha256=dFTYABFQxK2m7eXumVbfAuzrVVoV7-TduRNN0KY_axc,3450
|
|
@@ -58,7 +72,7 @@ pymobiledevice3/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
|
58
72
|
pymobiledevice3/remote/common.py,sha256=epLBlSCw8e8w2XvgsCuZfZYAwzHCQpBZ_S6U-_rl8oE,288
|
|
59
73
|
pymobiledevice3/remote/module_imports.py,sha256=DwExSL1r4kkFIWmXiQpqPo-cGl4duYd33kJGyVckYuA,829
|
|
60
74
|
pymobiledevice3/remote/remote_service.py,sha256=fCyzm4oT_WEorAXVHVLYnIOyTOuMGhX69Co3HkUdRYY,867
|
|
61
|
-
pymobiledevice3/remote/remote_service_discovery.py,sha256=
|
|
75
|
+
pymobiledevice3/remote/remote_service_discovery.py,sha256=lBIGzkeM8zyOP3pRDG2sMZ_9p5gyGpvc2CxurcZ0pwc,7721
|
|
62
76
|
pymobiledevice3/remote/remotexpc.py,sha256=tyGHn-IMDiM7WeGhfKMC1yH-ONEto-zCVpnvhE4i2Yw,8266
|
|
63
77
|
pymobiledevice3/remote/tunnel_service.py,sha256=AmqvIb-0fUT9KzJub3QcMbtHtHuBBDh4ZKHIeAmkyk8,45961
|
|
64
78
|
pymobiledevice3/remote/utils.py,sha256=RPyDYCLqe638FoPIJ7Lcmx05BJqM2PseJe9lc3Al3bM,2550
|
|
@@ -87,50 +101,51 @@ pymobiledevice3/restore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
|
87
101
|
pymobiledevice3/restore/asr.py,sha256=eVzTQ8hDzncfd49z3cB0VUvtgVob-omO5vUY7y2QZFY,4048
|
|
88
102
|
pymobiledevice3/restore/base_restore.py,sha256=7Savyn6TlqWpAG0OhILqb587mpx5yLJeOWljwLhxbVo,5795
|
|
89
103
|
pymobiledevice3/restore/consts.py,sha256=-_CIR3Fb78lGo3VNxtUvBaro5rUqPozHb4KB4ihntis,2167
|
|
90
|
-
pymobiledevice3/restore/device.py,sha256=
|
|
104
|
+
pymobiledevice3/restore/device.py,sha256=1dRRhFbSMONy8SIvXkbghZb6uM2LPJqp9junr1iE7II,3427
|
|
91
105
|
pymobiledevice3/restore/fdr.py,sha256=MwoDBiVmHrY5Duw4ViZnwpUjOx_lAzihi-yTznanKJ8,6182
|
|
92
106
|
pymobiledevice3/restore/ftab.py,sha256=RxjVkB7tHOW_RjHNu0hKt06qJ4HxitsfkW9dyk64Hzk,1509
|
|
93
107
|
pymobiledevice3/restore/img4.py,sha256=gEjULbDVsV6w24NLtOuBQUyU9DEwA3mt0wrcsfll67o,4790
|
|
94
108
|
pymobiledevice3/restore/mbn.py,sha256=xZvpY9ompqQW1NgW31X2eNVK5X4T7H66egjgfai09CU,18981
|
|
95
109
|
pymobiledevice3/restore/recovery.py,sha256=I-2dJvV-7MwiRH14YrZE_qa0gL4BxqE01huvSon_m4Y,17104
|
|
96
|
-
pymobiledevice3/restore/restore.py,sha256=
|
|
110
|
+
pymobiledevice3/restore/restore.py,sha256=jcFY5PYaykzTdzzqx2ww-YmZRJF0lWMnAr9lAbjW3Cg,57700
|
|
97
111
|
pymobiledevice3/restore/restore_options.py,sha256=Qu_Z7JnGSNnSMPw69qu9m--vgXkquo7nxeM-aUqppOU,7354
|
|
98
112
|
pymobiledevice3/restore/restored_client.py,sha256=tv1hyIV7UBDb_OUwj_w6qJsH_x36oBAVHnTS9-t4jh8,3637
|
|
99
113
|
pymobiledevice3/restore/tss.py,sha256=EY8XpUaexHyDTtUCuXQnOgLVIFAikcs9p0ysNSG1Q0U,30818
|
|
100
114
|
pymobiledevice3/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
101
115
|
pymobiledevice3/services/accessibilityaudit.py,sha256=7AvGqfAqvsSULib06mpxP94-P-Zr4SwSZohgmbXLuog,15474
|
|
102
|
-
pymobiledevice3/services/afc.py,sha256=
|
|
116
|
+
pymobiledevice3/services/afc.py,sha256=Y9cF_YdndyMxSZZZlsapUGOVI1IdqAGCiYRyQn1HIvI,55095
|
|
103
117
|
pymobiledevice3/services/amfi.py,sha256=SWGh5UQtf3YhD_4cT8M3dhH1sPE-mnIzkmiZjJ8d2x4,2522
|
|
104
118
|
pymobiledevice3/services/companion.py,sha256=6rvL1KF2-Gflv77rL9txINMoiQplVouL_nnGKNq-Maw,2612
|
|
105
119
|
pymobiledevice3/services/crash_reports.py,sha256=ODsgT3WgpOHIFM-ht9za_-xI9AAh7dKiq50NsRB5q3I,10945
|
|
106
120
|
pymobiledevice3/services/debugserver_applist.py,sha256=Pm65WDKua_zG8veFPp5uemuox6A49gydMlJD6UVvjhA,548
|
|
107
121
|
pymobiledevice3/services/device_arbitration.py,sha256=xdVC8nhpQ0VdsCSzpaUGme7TfZw3rftJZrYnrjfYHj4,1134
|
|
108
|
-
pymobiledevice3/services/device_link.py,sha256=
|
|
122
|
+
pymobiledevice3/services/device_link.py,sha256=TVrNB215eHvc7qMRv5CeyVKZgsEBf66aaEWXzp6VPEE,9542
|
|
109
123
|
pymobiledevice3/services/diagnostics.py,sha256=Azx2g30hio3RQNRJ-5zs94qMUPeV4Qoix9T_Krdp8cU,29909
|
|
110
124
|
pymobiledevice3/services/dtfetchsymbols.py,sha256=xyi5bXxPSrYaZSFx46zkbpDUk2qNEMAWAk0TZnQuquU,1505
|
|
111
125
|
pymobiledevice3/services/file_relay.py,sha256=8VFaqqvKvb21OvUxvSgKaC5av5SyRzwybyxmBnGnpME,1368
|
|
112
126
|
pymobiledevice3/services/heartbeat.py,sha256=X2jGCaJV1b_T1TyqZh09-DaK6zw00M9hmXpXQrZw7kU,1147
|
|
113
127
|
pymobiledevice3/services/house_arrest.py,sha256=mjpojdZ0tiGpKV00BogjM9L85lMHiFonNU7J639m8VA,1655
|
|
128
|
+
pymobiledevice3/services/idam.py,sha256=knkP6EEYh8J0QI36M4ik86t2PFM6_JxabjJagLHV8iI,834
|
|
114
129
|
pymobiledevice3/services/installation_proxy.py,sha256=MIWdB6CYEEeG5eGcciHu2wvtn_vPJ2e5s47biMbkaYA,11619
|
|
115
|
-
pymobiledevice3/services/lockdown_service.py,sha256=
|
|
130
|
+
pymobiledevice3/services/lockdown_service.py,sha256=YRendifSVgXnODHwKhKZRpBKSi7ChSlFZuTJaMzEzP0,1684
|
|
116
131
|
pymobiledevice3/services/misagent.py,sha256=CGh1EhN_f1rV9RhZfP53OBirXdY0elX_nZS-fhMbiPk,1937
|
|
117
132
|
pymobiledevice3/services/mobile_activation.py,sha256=0zvQn2CMmf47--OtDqv3eOK5Ofu-eBw-ab1TxZSrOlY,9230
|
|
118
|
-
pymobiledevice3/services/mobile_config.py,sha256=
|
|
133
|
+
pymobiledevice3/services/mobile_config.py,sha256=2UmdqYNikznxI6bA2lkyIWS3NcHg3pTb5i6yLl8yZAY,18170
|
|
119
134
|
pymobiledevice3/services/mobile_image_mounter.py,sha256=PZEN9O7XtLW9VH1qNTJ19zo_tFZhX68bTX0O-Uy9sck,15034
|
|
120
|
-
pymobiledevice3/services/mobilebackup2.py,sha256=
|
|
135
|
+
pymobiledevice3/services/mobilebackup2.py,sha256=8oEy-GG2UKoy8Kf7rCC-rbTJJgDWM-4rdgWtykNT4eM,18349
|
|
121
136
|
pymobiledevice3/services/notification_proxy.py,sha256=mk4kxLRi6aDTXKOazgldliZG4q0bME7jBcxPyJsSpDw,2125
|
|
122
|
-
pymobiledevice3/services/os_trace.py,sha256=
|
|
137
|
+
pymobiledevice3/services/os_trace.py,sha256=nTODlyWvb10fpqWHDU3m7i9sADIMF0ezfyo9Ql2BZa8,7422
|
|
123
138
|
pymobiledevice3/services/pcapd.py,sha256=Gd6xN9eBHnLIQ5M2LM-y4Z-eCquxVEnSKuyBECwZlRs,11960
|
|
124
139
|
pymobiledevice3/services/power_assertion.py,sha256=hh-9tpPbNctAegsV0IYE3ilikT-o4t758-y3u0Td9wM,1212
|
|
125
140
|
pymobiledevice3/services/preboard.py,sha256=QJ1miS0e2lY9y4sS4GxsMZh-uxKDeDi6upgPTyqTpfs,894
|
|
126
|
-
pymobiledevice3/services/remote_fetch_symbols.py,sha256=
|
|
141
|
+
pymobiledevice3/services/remote_fetch_symbols.py,sha256=dVGCN81ujdL7Ouokh5j7ZMNPu0ypEb1ica4oAcY7OGU,2096
|
|
127
142
|
pymobiledevice3/services/remote_server.py,sha256=8eH4i2mMSxVQzf5mUPJwQnlFpHPH0ahsgVe1ZL2qP7A,20309
|
|
128
143
|
pymobiledevice3/services/restore_service.py,sha256=6wRRf_aQBx7JLLmpS3eDLLleK-2qzxDE9jWzkF-Fb_o,1887
|
|
129
|
-
pymobiledevice3/services/screenshot.py,sha256=
|
|
144
|
+
pymobiledevice3/services/screenshot.py,sha256=OjJIHByT6PDyWrqNQObm6I_SkrjAjguXtyB3OD_l0Rs,1358
|
|
130
145
|
pymobiledevice3/services/simulate_location.py,sha256=Let7iupWt8WNYblhIMTlvY-RZQx7IrCTQ6YTo5VVKhY,1162
|
|
131
146
|
pymobiledevice3/services/springboard.py,sha256=Pn6cyNOTVrFN8_x43pj6cE1fPR7HeJ-vd6stD4K0lBg,2474
|
|
132
147
|
pymobiledevice3/services/syslog.py,sha256=EeV-nOlAyOkGKBUTfFwe-QzaJhnW8XUHWHvRk4BNzxM,1563
|
|
133
|
-
pymobiledevice3/services/webinspector.py,sha256=
|
|
148
|
+
pymobiledevice3/services/webinspector.py,sha256=MgYfjExwBMCkHTqKteW5RfzrKZiqsxIBX5M_0wLTRbU,15803
|
|
134
149
|
pymobiledevice3/services/dvt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
135
150
|
pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py,sha256=PZOhnYkEirqWtU0RUNun0tdjSitDXWxcl4p_P7mBELk,1072
|
|
136
151
|
pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py,sha256=pO6C_CI34kP0IcY3JalZ9SKfmYaraPlk-8YiFJuT4fc,1179
|
|
@@ -151,23 +166,23 @@ pymobiledevice3/services/dvt/instruments/screenshot.py,sha256=JKz8UFWTkroMTIEnXB
|
|
|
151
166
|
pymobiledevice3/services/dvt/instruments/sysmontap.py,sha256=Tscf05j2xNfTKcYsBL1KEXHkrs0I1sS7YAKt-AtlcFU,1594
|
|
152
167
|
pymobiledevice3/services/dvt/testmanaged/xcuitest.py,sha256=nv3wtZi5INXGanIzun-5HLAGccXeOAEDKk8HiMeVFqA,12267
|
|
153
168
|
pymobiledevice3/services/web_protocol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
154
|
-
pymobiledevice3/services/web_protocol/alert.py,sha256=
|
|
155
|
-
pymobiledevice3/services/web_protocol/automation_session.py,sha256=
|
|
156
|
-
pymobiledevice3/services/web_protocol/cdp_screencast.py,sha256=
|
|
169
|
+
pymobiledevice3/services/web_protocol/alert.py,sha256=yN_P-S2XnqIDGRGdpRgdEOBWkqa5P0hcby8W7N7i_I4,878
|
|
170
|
+
pymobiledevice3/services/web_protocol/automation_session.py,sha256=wZkxKM8HdNI-28Zz1i3Lm7n3wWRGmhJEpcUCXVY7pFA,15090
|
|
171
|
+
pymobiledevice3/services/web_protocol/cdp_screencast.py,sha256=3Tj4l85DQauxbHWPctO8mCVpP60uBm-Xi88k2n_kluY,5931
|
|
157
172
|
pymobiledevice3/services/web_protocol/cdp_server.py,sha256=NwwtrBco9iOynJaoXTNM9lamNYZ-t7pLvU1vswKwKsU,2554
|
|
158
173
|
pymobiledevice3/services/web_protocol/cdp_target.py,sha256=dtJ5I59Q--yZ9_0dwDm7BMV4_tbTDiZaqLFWxSlYaxM,32393
|
|
159
|
-
pymobiledevice3/services/web_protocol/driver.py,sha256=
|
|
160
|
-
pymobiledevice3/services/web_protocol/element.py,sha256=
|
|
174
|
+
pymobiledevice3/services/web_protocol/driver.py,sha256=opdQwObQkDE5rh0m4pmfSGEKsVmLZCXg3ow5q7NHGcU,7996
|
|
175
|
+
pymobiledevice3/services/web_protocol/element.py,sha256=bJkxqWgouGwtCN_A3DctNO12xBR-BjT7cL2UQdSSfIg,8874
|
|
161
176
|
pymobiledevice3/services/web_protocol/inspector_session.py,sha256=ep4YWu9Pm9IQfkRZ8AYVUCWDV1-BPRz0DQHKTGwj-JE,10625
|
|
162
|
-
pymobiledevice3/services/web_protocol/selenium_api.py,sha256=
|
|
163
|
-
pymobiledevice3/services/web_protocol/session_protocol.py,sha256=
|
|
164
|
-
pymobiledevice3/services/web_protocol/switch_to.py,sha256=
|
|
177
|
+
pymobiledevice3/services/web_protocol/selenium_api.py,sha256=RmiY260usm7Pa45IQLzx2jO0kC8r0VnxKM8SHJ3-Y_s,3079
|
|
178
|
+
pymobiledevice3/services/web_protocol/session_protocol.py,sha256=CMqFeIjsse0qkFqh8va_AJDkybjurtIjALLSUo7BfR4,1981
|
|
179
|
+
pymobiledevice3/services/web_protocol/switch_to.py,sha256=TCdVrMfsvd18o-vZ0owVrEFYeoGbwF3jZ1iDaPslV9U,2944
|
|
165
180
|
pymobiledevice3/tunneld/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
166
181
|
pymobiledevice3/tunneld/api.py,sha256=Lwl1OdhPTgX6Zqezy8T4dEcXRfaEPwyGNClioTx3fUc,2338
|
|
167
182
|
pymobiledevice3/tunneld/server.py,sha256=dMEZAv_X-76l0vSalpq4x0IVkbE-MNGR77T-u1TiHuE,25752
|
|
168
|
-
pymobiledevice3-
|
|
169
|
-
pymobiledevice3-
|
|
170
|
-
pymobiledevice3-
|
|
171
|
-
pymobiledevice3-
|
|
172
|
-
pymobiledevice3-
|
|
173
|
-
pymobiledevice3-
|
|
183
|
+
pymobiledevice3-7.0.6.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
184
|
+
pymobiledevice3-7.0.6.dist-info/METADATA,sha256=KD769dyOg0i1IpCtnT7n6qhAr0m99LxTRk-xmTnM0ok,17500
|
|
185
|
+
pymobiledevice3-7.0.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
186
|
+
pymobiledevice3-7.0.6.dist-info/entry_points.txt,sha256=jJMlOanHlVwUxcY__JwvKeWPrvBJr_wJyEq4oHIZNKE,66
|
|
187
|
+
pymobiledevice3-7.0.6.dist-info/top_level.txt,sha256=MjZoRqcWPOh5banG-BbDOnKEfsS3kCxqV9cv-nzyg2Q,21
|
|
188
|
+
pymobiledevice3-7.0.6.dist-info/RECORD,,
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from collections import namedtuple
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
|
|
5
|
-
import click
|
|
6
|
-
from plumbum import CommandNotFound, local
|
|
7
|
-
|
|
8
|
-
logger = logging.getLogger(__name__)
|
|
9
|
-
|
|
10
|
-
ShellCompletion = namedtuple("ShellCompletion", ["source", "rc", "path"])
|
|
11
|
-
|
|
12
|
-
COMPLETIONS = [
|
|
13
|
-
ShellCompletion("zsh_source", Path("~/.zshrc").expanduser(), Path("~/.pymobiledevice3.zsh").expanduser()),
|
|
14
|
-
ShellCompletion("bash_source", Path("~/.bashrc").expanduser(), Path("~/.pymobiledevice3.bash").expanduser()),
|
|
15
|
-
ShellCompletion("fish_source", None, Path("~/.config/fish/completions/pymobiledevice3.fish").expanduser()),
|
|
16
|
-
]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
@click.group()
|
|
20
|
-
def cli() -> None:
|
|
21
|
-
pass
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
@cli.command()
|
|
25
|
-
def install_completions() -> None:
|
|
26
|
-
"""
|
|
27
|
-
Install shell completions for the pymobiledevice3 command
|
|
28
|
-
|
|
29
|
-
If supplying an explicit shell script to write, install it there, otherwise install globally.
|
|
30
|
-
"""
|
|
31
|
-
try:
|
|
32
|
-
pymobiledevice3 = local["pymobiledevice3"]
|
|
33
|
-
except CommandNotFound:
|
|
34
|
-
logger.error("pymobiledevice3 main binary could not be found in your path.")
|
|
35
|
-
return
|
|
36
|
-
|
|
37
|
-
for completion in COMPLETIONS:
|
|
38
|
-
with local.env(_PYMOBILEDEVICE3_COMPLETE=completion.source):
|
|
39
|
-
if not completion.path.parent.exists():
|
|
40
|
-
# fish is not installed, skip
|
|
41
|
-
continue
|
|
42
|
-
logger.info(f"Writing shell completions to: {completion.path}")
|
|
43
|
-
completion.path.write_text(pymobiledevice3())
|
|
44
|
-
line = f"source {completion.path}"
|
|
45
|
-
|
|
46
|
-
if not completion.rc.exists() or line in completion.rc.read_text():
|
|
47
|
-
continue
|
|
48
|
-
|
|
49
|
-
logger.info(f"Adding source line to {completion.rc}")
|
|
50
|
-
completion.rc.write_text(f"{completion.rc.read_text()}\n{line}")
|