pymobiledevice3 6.1.1__tar.gz → 6.1.2__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.
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/PKG-INFO +1 -1
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/_version.py +3 -3
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/service_connection.py +10 -10
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/device_link.py +45 -31
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3.egg-info/PKG-INFO +1 -1
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3.egg-info/SOURCES.txt +1 -0
- pymobiledevice3-6.1.2/tests/services/test_house_arrest.py +26 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.gitattributes +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/FUNDING.yml +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/pull_request_template.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/workflows/codeql.yml +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/workflows/generate-executable.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/workflows/markdown-lint.yml +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/workflows/python-app.yml +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.github/workflows/python-publish.yml +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.gitignore +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/.pre-commit-config.yaml +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/CODE_OF_CONDUCT.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/CONTRIBUTING.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/LICENSE +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/README.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/example.gif +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/markdownlint-config.json +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/DTServices-14.2.txt +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/DTServices-14.5.txt +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/RemoteXPC.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/plist_sniffer.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/pyinstaller.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/remotexpc_sniffer.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/understanding_idevice_protocol_layers.md +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/usbmux_sniff.sh +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/__main__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/bonjour.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/ca.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/activation.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/afc.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/amfi.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/apps.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/backup.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/bonjour.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/cli_common.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/companion_proxy.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/completions.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/crash.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/developer.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/diagnostics.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/idam.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/lockdown.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/mounter.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/notification.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/pcap.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/power_assertion.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/processes.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/profile.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/provision.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/remote.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/restore.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/springboard.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/syslog.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/usbmux.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/version.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/cli/webinspector.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/common.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/exceptions.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/irecv.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/irecv_devices.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/lockdown.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/lockdown_service_provider.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/osu/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/osu/os_utils.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/osu/posix_util.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/osu/win_util.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/pair_records.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/common.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/app_service.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/core_device_service.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/device_info.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/diagnostics_service.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/file_service.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/module_imports.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/remote_service.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/remote_service_discovery.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/remotexpc.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/tunnel_service.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/utils.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/xpc_message.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/dsc_uuid_map.json +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/dsc_uuid_map.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/firmware_notifications.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/notifications.txt +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/element_attribute.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/element_clear.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/enter_fullscreen.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/find_nodes.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/focus.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/get_attribute.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/is_displayed.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/is_editable.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/is_enabled.js +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/asr.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/base_restore.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/consts.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/device.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/fdr.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/ftab.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/img4.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/mbn.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/recovery.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/restore.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/restore_options.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/restored_client.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/restore/tss.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/accessibilityaudit.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/afc.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/amfi.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/companion.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/crash_reports.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/debugserver_applist.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/device_arbitration.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/diagnostics.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dtfetchsymbols.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/activity_trace_tap.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/application_listing.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/condition_inducer.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/core_profile_session_tap.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/device_info.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/energy_monitor.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/graphics.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/location_simulation.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/location_simulation_base.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/network_monitor.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/notifications.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/process_control.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/screenshot.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/instruments/sysmontap.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/dvt/testmanaged/xcuitest.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/file_relay.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/heartbeat.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/house_arrest.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/idam.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/installation_proxy.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/lockdown_service.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/misagent.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/mobile_activation.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/mobile_config.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/mobile_image_mounter.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/mobilebackup2.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/notification_proxy.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/os_trace.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/pcapd.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/power_assertion.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/preboard.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/remote_fetch_symbols.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/remote_server.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/restore_service.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/screenshot.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/simulate_location.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/springboard.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/syslog.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/alert.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/automation_session.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/cdp_screencast.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/cdp_server.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/cdp_target.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/driver.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/element.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/inspector_session.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/selenium_api.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/session_protocol.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/web_protocol/switch_to.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/webinspector.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/tcp_forwarder.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/tunneld/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/tunneld/api.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/tunneld/server.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/usbmux.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/utils.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3.egg-info/dependency_links.txt +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3.egg-info/entry_points.txt +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3.egg-info/requires.txt +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3.egg-info/top_level.txt +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pyproject.toml +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pytest.ini +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/requirements.txt +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/setup.cfg +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/cli/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/cli/test_cli.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/conftest.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/instruments/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/instruments/test_core_profile_session.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/instruments/test_dvt_secure_socket_proxy.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/instruments/test_fetch_symbols.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/instruments/test_location.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/instruments/test_screenshot.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_accessibility.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_afc.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_apps.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_backup2.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_bonjour.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_crash_reports.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_list_devices.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_lockdown.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_pcapd.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_springboard_services_relay.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_start_tunnel.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_syslog_relay.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_tcp_forwarder.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_web_protocol/__init__.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_web_protocol/common.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_web_protocol/conftest.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_web_protocol/test_driver.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_web_protocol/test_element.py +0 -0
- {pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/tests/services/test_webinspector.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pymobiledevice3
|
|
3
|
-
Version: 6.1.
|
|
3
|
+
Version: 6.1.2
|
|
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>
|
|
@@ -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 = '6.1.
|
|
32
|
-
__version_tuple__ = version_tuple = (6, 1,
|
|
31
|
+
__version__ = version = '6.1.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (6, 1, 2)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'gc81d511cb'
|
|
@@ -8,7 +8,7 @@ import struct
|
|
|
8
8
|
import time
|
|
9
9
|
import xml
|
|
10
10
|
from enum import Enum
|
|
11
|
-
from typing import Any, Optional
|
|
11
|
+
from typing import Any, Optional, Union
|
|
12
12
|
|
|
13
13
|
import IPython
|
|
14
14
|
from pygments import formatters, highlight, lexers
|
|
@@ -282,29 +282,29 @@ class ServiceConnection:
|
|
|
282
282
|
msg = b"".join([hdr, data])
|
|
283
283
|
return self.sendall(msg)
|
|
284
284
|
|
|
285
|
-
def recv_plist(self, endianity: str = ">") -> dict:
|
|
285
|
+
def recv_plist(self, endianity: str = ">") -> Union[dict, list]:
|
|
286
286
|
"""
|
|
287
|
-
Receive a plist from the socket and parse it into a
|
|
287
|
+
Receive a plist from the socket and parse it into a native type.
|
|
288
288
|
|
|
289
289
|
:param endianity: The byte order ('>' for big-endian, '<' for little-endian).
|
|
290
|
-
:return: The received plist as a
|
|
290
|
+
:return: The received plist as a native type.
|
|
291
291
|
"""
|
|
292
292
|
return parse_plist(self.recv_prefixed(endianity=endianity))
|
|
293
293
|
|
|
294
294
|
async def aio_recv_plist(self, endianity: str = ">") -> dict:
|
|
295
295
|
"""
|
|
296
|
-
Asynchronously receive a plist from the socket and parse it into a
|
|
296
|
+
Asynchronously receive a plist from the socket and parse it into a native type.
|
|
297
297
|
|
|
298
298
|
:param endianity: The byte order ('>' for big-endian, '<' for little-endian).
|
|
299
|
-
:return: The received plist as a
|
|
299
|
+
:return: The received plist as a native type.
|
|
300
300
|
"""
|
|
301
301
|
return parse_plist(await self.aio_recv_prefixed(endianity))
|
|
302
302
|
|
|
303
|
-
def send_plist(self, d: dict, endianity: str = ">", fmt: Enum = plistlib.FMT_XML) -> None:
|
|
303
|
+
def send_plist(self, d: Union[dict, list], endianity: str = ">", fmt: Enum = plistlib.FMT_XML) -> None:
|
|
304
304
|
"""
|
|
305
|
-
Send a
|
|
305
|
+
Send a native type as a plist to the socket.
|
|
306
306
|
|
|
307
|
-
:param d: The
|
|
307
|
+
:param d: The native type to send.
|
|
308
308
|
:param endianity: The byte order ('>' for big-endian, '<' for little-endian).
|
|
309
309
|
:param fmt: The plist format (e.g., plistlib.FMT_XML).
|
|
310
310
|
"""
|
|
@@ -319,7 +319,7 @@ class ServiceConnection:
|
|
|
319
319
|
self.writer.write(payload)
|
|
320
320
|
await self.writer.drain()
|
|
321
321
|
|
|
322
|
-
async def aio_send_plist(self, d: dict, endianity: str = ">", fmt: Enum = plistlib.FMT_XML) -> None:
|
|
322
|
+
async def aio_send_plist(self, d: Union[dict, list], endianity: str = ">", fmt: Enum = plistlib.FMT_XML) -> None:
|
|
323
323
|
"""
|
|
324
324
|
Asynchronously send a dictionary as a plist to the socket.
|
|
325
325
|
|
|
@@ -3,9 +3,12 @@ import datetime
|
|
|
3
3
|
import shutil
|
|
4
4
|
import struct
|
|
5
5
|
import warnings
|
|
6
|
+
from collections.abc import Iterable, Mapping, Sequence
|
|
6
7
|
from pathlib import Path
|
|
8
|
+
from typing import Any, Callable, Optional, cast
|
|
7
9
|
|
|
8
10
|
from pymobiledevice3.exceptions import NotEnoughDiskSpaceError, PyMobileDevice3Exception
|
|
11
|
+
from pymobiledevice3.service_connection import ServiceConnection
|
|
9
12
|
|
|
10
13
|
SIZE_FORMAT = ">I"
|
|
11
14
|
CODE_FORMAT = ">B"
|
|
@@ -26,12 +29,16 @@ ERRNO_TO_DEVICE_ERROR = {
|
|
|
26
29
|
28: -15,
|
|
27
30
|
}
|
|
28
31
|
|
|
32
|
+
DLMessage = Sequence[Any]
|
|
33
|
+
ProgressCallback = Callable[[Any], None]
|
|
34
|
+
DLHandler = Callable[[DLMessage], None]
|
|
35
|
+
|
|
29
36
|
|
|
30
37
|
class DeviceLink:
|
|
31
|
-
def __init__(self, service, root_path: Path):
|
|
32
|
-
self.service = service
|
|
33
|
-
self.root_path = root_path
|
|
34
|
-
self._dl_handlers = {
|
|
38
|
+
def __init__(self, service: ServiceConnection, root_path: Path) -> None:
|
|
39
|
+
self.service: ServiceConnection = service
|
|
40
|
+
self.root_path: Path = root_path
|
|
41
|
+
self._dl_handlers: dict[str, DLHandler] = {
|
|
35
42
|
"DLMessageCreateDirectory": self.create_directory,
|
|
36
43
|
"DLMessageUploadFiles": self.upload_files,
|
|
37
44
|
"DLMessageGetFreeDiskSpace": self.get_free_disk_space,
|
|
@@ -43,7 +50,12 @@ class DeviceLink:
|
|
|
43
50
|
"DLMessagePurgeDiskSpace": self.purge_disk_space,
|
|
44
51
|
}
|
|
45
52
|
|
|
46
|
-
def dl_loop(self, progress_callback=
|
|
53
|
+
def dl_loop(self, progress_callback: Optional[ProgressCallback] = None) -> Any:
|
|
54
|
+
def _noop(_: Any) -> None:
|
|
55
|
+
return None
|
|
56
|
+
|
|
57
|
+
callback: ProgressCallback = progress_callback if progress_callback is not None else _noop
|
|
58
|
+
|
|
47
59
|
while True:
|
|
48
60
|
message = self.receive_message()
|
|
49
61
|
command = message[0]
|
|
@@ -55,9 +67,9 @@ class DeviceLink:
|
|
|
55
67
|
"DLMessageRemoveFiles",
|
|
56
68
|
"DLMessageRemoveItems",
|
|
57
69
|
):
|
|
58
|
-
|
|
70
|
+
callback(message[3])
|
|
59
71
|
elif command == "DLMessageUploadFiles":
|
|
60
|
-
|
|
72
|
+
callback(message[2])
|
|
61
73
|
|
|
62
74
|
if command == "DLMessageProcessMessage":
|
|
63
75
|
if not message[1]["ErrorCode"]:
|
|
@@ -66,7 +78,7 @@ class DeviceLink:
|
|
|
66
78
|
raise PyMobileDevice3Exception(f"Device link error: {message[1]}")
|
|
67
79
|
self._dl_handlers[command](message)
|
|
68
80
|
|
|
69
|
-
def version_exchange(self):
|
|
81
|
+
def version_exchange(self) -> None:
|
|
70
82
|
dl_message_version_exchange = self.receive_message()
|
|
71
83
|
version_major = dl_message_version_exchange[1]
|
|
72
84
|
self.service.send_plist(["DLMessageVersionExchange", "DLVersionsOk", version_major])
|
|
@@ -74,12 +86,13 @@ class DeviceLink:
|
|
|
74
86
|
if dl_message_device_ready[0] != "DLMessageDeviceReady":
|
|
75
87
|
raise PyMobileDevice3Exception("Device link didn't return ready state")
|
|
76
88
|
|
|
77
|
-
def send_process_message(self, message):
|
|
89
|
+
def send_process_message(self, message: Mapping[str, Any]) -> None:
|
|
78
90
|
self.service.send_plist(["DLMessageProcessMessage", message])
|
|
79
91
|
|
|
80
|
-
def download_files(self, message):
|
|
81
|
-
status = {}
|
|
82
|
-
|
|
92
|
+
def download_files(self, message: DLMessage) -> None:
|
|
93
|
+
status: dict[str, dict[str, Any]] = {}
|
|
94
|
+
files = cast(Iterable[str], message[1])
|
|
95
|
+
for file in files:
|
|
83
96
|
self.service.sendall(struct.pack(SIZE_FORMAT, len(file)))
|
|
84
97
|
self.service.sendall(file.encode())
|
|
85
98
|
|
|
@@ -114,9 +127,9 @@ class DeviceLink:
|
|
|
114
127
|
else:
|
|
115
128
|
self.status_response(0)
|
|
116
129
|
|
|
117
|
-
def contents_of_directory(self, message):
|
|
130
|
+
def contents_of_directory(self, message: DLMessage) -> None:
|
|
118
131
|
data = {}
|
|
119
|
-
path = self.root_path / message[1]
|
|
132
|
+
path = self.root_path / cast(str, message[1])
|
|
120
133
|
for file in path.iterdir():
|
|
121
134
|
ftype = "DLFileTypeUnknown"
|
|
122
135
|
if file.is_dir():
|
|
@@ -132,7 +145,7 @@ class DeviceLink:
|
|
|
132
145
|
}
|
|
133
146
|
self.status_response(0, status_dict=data)
|
|
134
147
|
|
|
135
|
-
def upload_files(self,
|
|
148
|
+
def upload_files(self, _message: DLMessage) -> None:
|
|
136
149
|
while True:
|
|
137
150
|
device_name = self._prefixed_recv()
|
|
138
151
|
if not device_name:
|
|
@@ -158,20 +171,21 @@ class DeviceLink:
|
|
|
158
171
|
assert code == CODE_SUCCESS
|
|
159
172
|
self.status_response(0)
|
|
160
173
|
|
|
161
|
-
def get_free_disk_space(self,
|
|
174
|
+
def get_free_disk_space(self, _message: DLMessage) -> None:
|
|
162
175
|
freespace = shutil.disk_usage(self.root_path).free
|
|
163
176
|
self.status_response(0, status_dict=freespace)
|
|
164
177
|
|
|
165
|
-
def move_items(self, message):
|
|
166
|
-
|
|
178
|
+
def move_items(self, message: DLMessage) -> None:
|
|
179
|
+
items = cast(Mapping[str, str], message[1])
|
|
180
|
+
for src, dst in items.items():
|
|
167
181
|
dest = self.root_path / dst
|
|
168
182
|
dest.parent.mkdir(parents=True, exist_ok=True)
|
|
169
183
|
shutil.move(self.root_path / src, dest)
|
|
170
184
|
self.status_response(0)
|
|
171
185
|
|
|
172
|
-
def copy_item(self, message):
|
|
173
|
-
src = self.root_path / message[1]
|
|
174
|
-
dest = self.root_path / message[2]
|
|
186
|
+
def copy_item(self, message: DLMessage) -> None:
|
|
187
|
+
src = self.root_path / cast(str, message[1])
|
|
188
|
+
dest = self.root_path / cast(str, message[2])
|
|
175
189
|
dest.parent.mkdir(parents=True, exist_ok=True)
|
|
176
190
|
if src.is_dir():
|
|
177
191
|
shutil.copytree(src, dest)
|
|
@@ -179,11 +193,11 @@ class DeviceLink:
|
|
|
179
193
|
shutil.copy(src, dest)
|
|
180
194
|
self.status_response(0)
|
|
181
195
|
|
|
182
|
-
def purge_disk_space(self,
|
|
196
|
+
def purge_disk_space(self, _message: DLMessage) -> None:
|
|
183
197
|
raise NotEnoughDiskSpaceError()
|
|
184
198
|
|
|
185
|
-
def remove_items(self, message):
|
|
186
|
-
for path in message[1]:
|
|
199
|
+
def remove_items(self, message: DLMessage) -> None:
|
|
200
|
+
for path in cast(Iterable[str], message[1]):
|
|
187
201
|
rm_path = self.root_path / path
|
|
188
202
|
if rm_path.is_dir():
|
|
189
203
|
shutil.rmtree(rm_path)
|
|
@@ -191,12 +205,12 @@ class DeviceLink:
|
|
|
191
205
|
rm_path.unlink(missing_ok=True)
|
|
192
206
|
self.status_response(0)
|
|
193
207
|
|
|
194
|
-
def create_directory(self, message):
|
|
195
|
-
path = message[1]
|
|
208
|
+
def create_directory(self, message: DLMessage) -> None:
|
|
209
|
+
path = cast(str, message[1])
|
|
196
210
|
(self.root_path / path).mkdir(parents=True, exist_ok=True)
|
|
197
211
|
self.status_response(0)
|
|
198
212
|
|
|
199
|
-
def status_response(self, status_code, status_str="", status_dict=None):
|
|
213
|
+
def status_response(self, status_code: int, status_str: str = "", status_dict: Any = None) -> None:
|
|
200
214
|
self.service.send_plist([
|
|
201
215
|
"DLMessageStatusResponse",
|
|
202
216
|
ctypes.c_uint64(status_code).value,
|
|
@@ -204,12 +218,12 @@ class DeviceLink:
|
|
|
204
218
|
status_dict if status_dict is not None else {},
|
|
205
219
|
])
|
|
206
220
|
|
|
207
|
-
def receive_message(self):
|
|
208
|
-
return self.service.recv_plist()
|
|
221
|
+
def receive_message(self) -> DLMessage:
|
|
222
|
+
return cast(DLMessage, self.service.recv_plist())
|
|
209
223
|
|
|
210
|
-
def disconnect(self):
|
|
224
|
+
def disconnect(self) -> None:
|
|
211
225
|
self.service.send_plist(["DLMessageDisconnect", "___EmptyParameterString___"])
|
|
212
226
|
|
|
213
|
-
def _prefixed_recv(self):
|
|
227
|
+
def _prefixed_recv(self) -> str:
|
|
214
228
|
(size,) = struct.unpack(SIZE_FORMAT, self.service.recvall(struct.calcsize(SIZE_FORMAT)))
|
|
215
229
|
return self.service.recvall(size).decode()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pymobiledevice3
|
|
3
|
-
Version: 6.1.
|
|
3
|
+
Version: 6.1.2
|
|
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>
|
|
@@ -206,6 +206,7 @@ tests/services/test_apps.py
|
|
|
206
206
|
tests/services/test_backup2.py
|
|
207
207
|
tests/services/test_bonjour.py
|
|
208
208
|
tests/services/test_crash_reports.py
|
|
209
|
+
tests/services/test_house_arrest.py
|
|
209
210
|
tests/services/test_list_devices.py
|
|
210
211
|
tests/services/test_lockdown.py
|
|
211
212
|
tests/services/test_pcapd.py
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
from pymobiledevice3.exceptions import AppNotInstalledError
|
|
4
|
+
from pymobiledevice3.lockdown import LockdownClient
|
|
5
|
+
from pymobiledevice3.services.house_arrest import HouseArrestService
|
|
6
|
+
from pymobiledevice3.services.installation_proxy import InstallationProxyService
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@pytest.fixture(scope="function")
|
|
10
|
+
def user_bundle_id(lockdown: LockdownClient) -> str:
|
|
11
|
+
with InstallationProxyService(lockdown=lockdown) as installation_proxy:
|
|
12
|
+
user_apps = installation_proxy.get_apps(application_type="User")
|
|
13
|
+
if not user_apps:
|
|
14
|
+
pytest.skip("No user apps installed to exercise house arrest")
|
|
15
|
+
return next(iter(user_apps))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_missing_bundle_id(lockdown: LockdownClient):
|
|
19
|
+
with pytest.raises(AppNotInstalledError):
|
|
20
|
+
HouseArrestService(lockdown=lockdown, bundle_id="com.pymobiledevice3.missing.app")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_vend_container_lists_app_root(lockdown: LockdownClient, user_bundle_id: str) -> None:
|
|
24
|
+
with HouseArrestService(lockdown=lockdown, bundle_id=user_bundle_id, documents_only=False) as service:
|
|
25
|
+
entries = set(service.listdir("/"))
|
|
26
|
+
assert "Documents" in entries
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/misc/understanding_idevice_protocol_layers.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/lockdown_service_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/__init__.py
RENAMED
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/app_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/device_info.py
RENAMED
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/core_device/file_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/remote/remote_service_discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/firmware_notifications.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/find_nodes.js
RENAMED
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/focus.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/resources/webinspector/is_enabled.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/accessibilityaudit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymobiledevice3-6.1.1 → pymobiledevice3-6.1.2}/pymobiledevice3/services/debugserver_applist.py
RENAMED
|
File without changes
|