ok-script 2.0.0b5__tar.gz → 2.0.0b7__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.
- {ok_script-2.0.0b5/ok_script.egg-info → ok_script-2.0.0b7}/PKG-INFO +2 -2
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/MainWindow.py +9 -5
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/about/AboutTab.py +4 -2
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/about/UpdateCard.py +4 -3
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/app.py +4 -2
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/update/inline_ok_requirements.py +23 -32
- {ok_script-2.0.0b5 → ok_script-2.0.0b7/ok_script.egg-info}/PKG-INFO +2 -2
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok_script.egg-info/requires.txt +1 -1
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/pyproject.toml +1 -1
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_inline_ok_requirements.py +35 -12
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_pyappify_startup_update.py +34 -1
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_web_ui_pages.py +3 -2
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/LICENSE.txt +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/MANIFEST.in +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/README.md +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/diagnostics/qq_trace.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/__main__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/alas/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/alas/emulator_base.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/alas/emulator_windows.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/alas/platform_windows.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/alas/utils.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/adb/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/adb/deep.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/adb/minitouch.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/adb/nemu_ipc.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/adb/nemu_utils.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/adb/pool.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/adb/timer.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/adb/util.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/windows/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/windows/d3d11.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/capture/windows/dump.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/cli.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/config_schema.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/downloads.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/events.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/icons.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/notifications.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/screenshot.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/script_editing.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/script_packager.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/script_templates.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/start_controller.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/task_manager.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/template_store.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/translation.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/core/ui_config.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/DeviceManager.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/adb.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/base.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/bitblt.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/bitblt_utils.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/browser.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/desktop_duplication.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/hwnd_window.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/image.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/nemu_ipc.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/types.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/update.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/capture_methods/windows_graphics.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/adb.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/base.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/browser.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/do_nothing.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/foreground_post_message.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/genshin.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/keys.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/post_message.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/pydirect.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/pynput.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/swipe.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/intercation.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/feature/Box.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/feature/Feature.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/feature/FeatureSet.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/feature/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/gui/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/gui/util/pyappify_startup.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/notification/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/notification/manager.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/notification/messenger_images.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/notification/pipeline.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/notification/ppocr.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/notification/providers.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/notification/system.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/notification/windows_messenger.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ocr/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ocr/download_paddle_model.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Media/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Security/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/Storage/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/UI/ViewManagement/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/UI/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/Windows/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/delegate.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/export.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/idldsl.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/inspectable.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/roapi.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/types.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/rotypes/winstring.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/task/DiagnosisTask.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/task/TaskExecutor.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/task/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/task/exceptions.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/task/task.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/task/web.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/test/OKTestRunner.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/test/RunTests.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/test/TaskTestCase.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/test/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/third_party/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/third_party/paperclip.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/overlay/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/overlay/win32_gdi.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/Communicate.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/MessageWindow.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/StartController.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/TabTitles.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/about/HttpTextEdit.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/about/LinksBar.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/about/ProjectCard.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/about/VersionCard.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/about/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/common/OKIcon.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/common/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/common/accent_color.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/common/config.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/common/design_system.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/common/icons.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/common/style_sheet.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/debug/DebugTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/debug/OverlayWidget.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/debug/RunCodeTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/debug/Screenshot.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/debug/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/events.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/GettextTranslator.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/en_US.qm +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/en_US.ts +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/es_ES.qm +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/es_ES.ts +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/ja_JP.qm +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/ja_JP.ts +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/ko_KR.qm +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/ko_KR.ts +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/path.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/update.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/zh_CN.qm +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/zh_CN.ts +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/zh_TW.qm +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/i18n/zh_TW.ts +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/overlay/OverlayWindow.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/overlay/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/dark/card.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/dark/discord.svg +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/dark/heart.svg +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/dark/message_window.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/dark/setting_interface.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/dark/status_bar.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/dark/stop.svg +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/dark/tab.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/light/card.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/light/discord.svg +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/light/heart.svg +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/light/message_window.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/light/setting_interface.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/light/status_bar.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/light/stop.svg +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qss/light/tab.qss +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/qt.qrc +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/resources.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/settings/GlobalConfigCard.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/settings/GlobalConfigTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/settings/SettingTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/settings/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/start/LogWindow.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/start/SelectCaptureListView.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/start/SelectInteractionListView.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/start/StartCard.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/start/StartTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/start/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/ConfigCard.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/ConfigItemFactory.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/ConfigLabelAndWidget.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/EditTaskTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndButtons.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndDoubleSpinBox.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndDropDown.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndFileSelector.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndGlobal.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndLineEdit.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndList.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndMultiSelection.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndSpinBox.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndSwitchButton.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndTextEdit.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/LabelAndWidget.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/MarkUpWindow.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/ModifyListDialog.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/ModifyListItem.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/OneTimeTaskTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/PythonHighlighter.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/RecordScript.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/ScheduleTaskTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/ScriptPackager.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/StartButton.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/TaskCard.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/TaskManger.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/TaskOpButton.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/TaskTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/TemplateFactory.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/TemplateTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/TooltipTableWidget.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/TriggerTaskTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/tasks/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/Alert.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/InitWorker.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/app.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/download.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/pip_util.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/pyappify_startup.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/touch_scroll.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/util/windows_thumbnail.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/BaseLoading.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/BaseWindow.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/Card.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/CustomTab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/EmptyCard.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/ExpandCardLayout.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/FlowLayout.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/FramelessDialog.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/ImageWidget.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/ListTableWidgetItem.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/NumericTableWidgetItem.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/OkCompactSpinBox.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/SortingTableWidgetItem.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/StartLoadingDialog.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/StatusBar.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/Tab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/TabWidget.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/UpdateConfigWidgetItem.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/WidgetWithVLabel.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/YesNonWidgetItem.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/qt/widget/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/requirements.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/server.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/static/app.js +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/static/chunk-fluent.js +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/static/chunk-react.js +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/static/index.css +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/ui/web/static/index.html +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/update/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/update/copy_ok_folder.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/Analytics.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/GlobalConfig.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/__init__.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/blur.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/clazz.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/collection.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/color.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/config.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/explorer.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/file.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/gpu_driver_settings.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/handler.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/i18n.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/logger.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/partial_sync_repo.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/print_hwnd.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/process.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/window.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/util/windows_schedule.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok_script.egg-info/SOURCES.txt +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok_script.egg-info/dependency_links.txt +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok_script.egg-info/entry_points.txt +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok_script.egg-info/not-zip-safe +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok_script.egg-info/top_level.txt +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/scripts/generate_web_i18n.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/setup.cfg +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/setup.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_accent_color.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_app.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_base_interaction.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_blur.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_box.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_capture_update.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_cli.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_config_card.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_core_events.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_core_ui_services.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_device_manager.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_expand_card_layout.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_explorer.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_global_config.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_gpu_driver_settings.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_headless_imports.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_logger.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_main_window_notifications.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_main_window_startup_tab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_main_window_system_theme.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_missing_frame.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_navigation_state.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_nemu_ipc_capture.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_notifications.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_ok_mutex.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_overlay_custom_draw.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_package_metadata.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_process.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_qt_events.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_qt_legacy_imports.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_qt_page_layout.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_runtime_startup.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_start_controller.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_task_executor_queue.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_task_ui.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_template_tab.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_touch_scroll.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_translation_fallback.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_ui_config.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_web_app.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_web_i18n.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_web_server.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_web_task_tabs.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_web_ui_tasks.py +0 -0
- {ok_script-2.0.0b5 → ok_script-2.0.0b7}/tests/test_windows_graphics_capture.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ok-script
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.0b7
|
|
4
4
|
Summary: Automation with Computer Vision for Python
|
|
5
5
|
Author-email: ok-oldking <firedcto@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/ok-oldking/ok-script
|
|
@@ -16,7 +16,7 @@ Requires-Python: >=3.11
|
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE.txt
|
|
18
18
|
Requires-Dist: pywin32>=306
|
|
19
|
-
Requires-Dist: pyappify>=1.0.
|
|
19
|
+
Requires-Dist: pyappify>=1.0.9
|
|
20
20
|
Requires-Dist: typing-extensions>=4.11.0
|
|
21
21
|
Requires-Dist: requests>=2.32.3
|
|
22
22
|
Requires-Dist: psutil>=6.0.0
|
|
@@ -212,7 +212,7 @@ class MainWindow(FluentWindow):
|
|
|
212
212
|
position=NavigationItemPosition.BOTTOM)
|
|
213
213
|
|
|
214
214
|
from ok.ui.qt.about.AboutTab import AboutTab
|
|
215
|
-
self.about_tab = AboutTab(config)
|
|
215
|
+
self.about_tab = AboutTab(config, exit_event=exit_event)
|
|
216
216
|
self.addSubInterface(self.about_tab, FluentIcon.QUESTION, self.tr('About'),
|
|
217
217
|
position=NavigationItemPosition.BOTTOM)
|
|
218
218
|
self.about_update_badge = None
|
|
@@ -526,14 +526,18 @@ class MainWindow(FluentWindow):
|
|
|
526
526
|
self.shown = True
|
|
527
527
|
pyappify.hide_pyappify()
|
|
528
528
|
if update_pyappify := self.config.get("update_pyappify"):
|
|
529
|
-
pyappify.upgrade(
|
|
530
|
-
|
|
529
|
+
pyappify.upgrade(
|
|
530
|
+
update_pyappify.get('to_version'),
|
|
531
|
+
update_pyappify.get('sha256'),
|
|
532
|
+
[update_pyappify.get('zip_url')],
|
|
533
|
+
exit_event=self.exit_event,
|
|
534
|
+
)
|
|
531
535
|
logger.info("Window has fully displayed")
|
|
532
536
|
from ok import og
|
|
533
537
|
og.ok.start_runtime()
|
|
534
538
|
if self.basic_global_config.get(KILL_LAUNCHER_AFTER_START):
|
|
535
539
|
logger.info(f'MainWindow showEvent Kill Launcher After Start')
|
|
536
|
-
pyappify.kill_pyappify()
|
|
540
|
+
pyappify.kill_pyappify(exit_event=self.exit_event)
|
|
537
541
|
startup_version_change = get_startup_version_change()
|
|
538
542
|
if self.version != self.main_window_config.get('last_version'):
|
|
539
543
|
self.main_window_config['last_version'] = self.version
|
|
@@ -739,5 +743,5 @@ class MainWindow(FluentWindow):
|
|
|
739
743
|
self.executor.destroy()
|
|
740
744
|
event.accept()
|
|
741
745
|
if not self.do_not_quit:
|
|
742
|
-
pyappify.kill_pyappify()
|
|
746
|
+
pyappify.kill_pyappify(exit_event=self.exit_event)
|
|
743
747
|
QApplication.instance().exit()
|
|
@@ -16,7 +16,7 @@ logger = Logger.get_logger(__name__)
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class AboutTab(Tab):
|
|
19
|
-
def __init__(self, config, pyappify_module=None):
|
|
19
|
+
def __init__(self, config, pyappify_module=None, exit_event=None):
|
|
20
20
|
super().__init__()
|
|
21
21
|
if pyappify_module is None:
|
|
22
22
|
import pyappify as pyappify_module
|
|
@@ -28,7 +28,9 @@ class AboutTab(Tab):
|
|
|
28
28
|
|
|
29
29
|
self.update_card = None
|
|
30
30
|
if callable(getattr(pyappify_module, 'get_version_list', None)):
|
|
31
|
-
self.update_card = UpdateCard(
|
|
31
|
+
self.update_card = UpdateCard(
|
|
32
|
+
config.get('version'), pyappify_module, self, exit_event=exit_event
|
|
33
|
+
)
|
|
32
34
|
self.add_card(self.tr("App update"), self.update_card)
|
|
33
35
|
else:
|
|
34
36
|
logger.warning(
|
|
@@ -51,13 +51,14 @@ class UpdateCard(QWidget):
|
|
|
51
51
|
VERSION_COMBO_MIN_WIDTH = 100
|
|
52
52
|
VERSION_COMBO_MAX_WIDTH = 240
|
|
53
53
|
|
|
54
|
-
def __init__(self, current_version, pyappify_module, parent=None):
|
|
54
|
+
def __init__(self, current_version, pyappify_module, parent=None, exit_event=None):
|
|
55
55
|
super().__init__(parent)
|
|
56
56
|
self.current_version = current_version or getattr(pyappify_module, "app_version", None) or ""
|
|
57
57
|
if "PYAPPIFY_PYTHON_TEST" in os.environ and not _is_numeric_version(self.current_version):
|
|
58
58
|
logger.info(f"using v0.0.0 for nonnumeric test version {self.current_version!r}")
|
|
59
59
|
self.current_version = "v0.0.0"
|
|
60
60
|
self.pyappify_module = pyappify_module
|
|
61
|
+
self.exit_event = exit_event
|
|
61
62
|
self.versions = []
|
|
62
63
|
self._busy = False
|
|
63
64
|
logger.info(
|
|
@@ -125,7 +126,7 @@ class UpdateCard(QWidget):
|
|
|
125
126
|
self._set_status(self.tr("Checking for updates…"))
|
|
126
127
|
release_only = not self.test_version_checkbox.isChecked()
|
|
127
128
|
self._run_in_background(
|
|
128
|
-
lambda: get_versions(release_only=release_only),
|
|
129
|
+
lambda: get_versions(release_only=release_only, exit_event=self.exit_event),
|
|
129
130
|
self._versions_loaded,
|
|
130
131
|
f"pyappify.get_version_list(release_only={release_only})",
|
|
131
132
|
)
|
|
@@ -141,7 +142,7 @@ class UpdateCard(QWidget):
|
|
|
141
142
|
self._set_busy(True)
|
|
142
143
|
self._set_status(self.tr("Starting change to {version}…").format(version=version))
|
|
143
144
|
self._run_in_background(
|
|
144
|
-
lambda: update_to_version(version),
|
|
145
|
+
lambda: update_to_version(version, exit_event=self.exit_event),
|
|
145
146
|
self._update_finished,
|
|
146
147
|
f"pyappify.update_to_version({version!r})",
|
|
147
148
|
)
|
|
@@ -705,7 +705,9 @@ class WebRuntime:
|
|
|
705
705
|
try:
|
|
706
706
|
module = self.pyappify_module
|
|
707
707
|
logger.info("calling pyappify.get_version_list(release_only=%s)", release_only)
|
|
708
|
-
versions = module.get_version_list(
|
|
708
|
+
versions = module.get_version_list(
|
|
709
|
+
release_only=release_only, exit_event=self.ok.exit_event
|
|
710
|
+
)
|
|
709
711
|
logger.info("pyappify.get_version_list result=%r", versions)
|
|
710
712
|
if not isinstance(versions, list):
|
|
711
713
|
raise RuntimeError("PyAppify returned an invalid version list")
|
|
@@ -748,7 +750,7 @@ class WebRuntime:
|
|
|
748
750
|
if not callable(operation):
|
|
749
751
|
raise RuntimeError("Updating is not supported by this PyAppify version")
|
|
750
752
|
logger.info("calling pyappify.update_to_version(%r)", version)
|
|
751
|
-
result = operation(version)
|
|
753
|
+
result = operation(version, exit_event=self.ok.exit_event)
|
|
752
754
|
logger.info("pyappify.update_to_version(%r) result=%r", version, result)
|
|
753
755
|
return {"accepted": True, "version": version, "result": _json_value(result)}
|
|
754
756
|
finally:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import argparse
|
|
2
|
+
import glob
|
|
2
3
|
import os
|
|
3
4
|
import re
|
|
4
5
|
|
|
@@ -31,19 +32,6 @@ def _deploy_includes_folder(deploy_entries, folder):
|
|
|
31
32
|
return any(entry == folder or entry.startswith(f'{folder}/') for entry in deploy_entries)
|
|
32
33
|
|
|
33
34
|
|
|
34
|
-
def _get_inlined_requirement_folders(repo_dir, inlined_requirements=None):
|
|
35
|
-
if inlined_requirements is None:
|
|
36
|
-
inlined_requirements = INLINED_REQUIREMENTS
|
|
37
|
-
deploy_entries = _read_deploy_entries(repo_dir)
|
|
38
|
-
if not deploy_entries:
|
|
39
|
-
return []
|
|
40
|
-
return [
|
|
41
|
-
package_folder
|
|
42
|
-
for package_folder in inlined_requirements.values()
|
|
43
|
-
if _deploy_includes_folder(deploy_entries, package_folder)
|
|
44
|
-
]
|
|
45
|
-
|
|
46
|
-
|
|
47
35
|
def _add_folders_to_deploy(repo_dir, folders):
|
|
48
36
|
deploy_file = os.path.join(repo_dir, 'deploy.txt')
|
|
49
37
|
deploy_entries = _read_deploy_entries(repo_dir)
|
|
@@ -92,13 +80,29 @@ def inline_site_packages(repo_dir, package_folders=None):
|
|
|
92
80
|
raise RuntimeError(f'Failed to inline {package_folder} from site-packages')
|
|
93
81
|
|
|
94
82
|
|
|
83
|
+
def _remove_inlined_requirements(repo_dir, package_names):
|
|
84
|
+
package_names = tuple(package_names)
|
|
85
|
+
if not package_names:
|
|
86
|
+
return
|
|
87
|
+
requirement_pattern = re.compile(
|
|
88
|
+
r'^\s*({})\b'.format('|'.join(re.escape(name) for name in package_names)),
|
|
89
|
+
re.IGNORECASE,
|
|
90
|
+
)
|
|
91
|
+
for file_path in glob.glob(os.path.join(repo_dir, 'requirements*.txt')):
|
|
92
|
+
with open(file_path, 'r', encoding='utf-8') as file:
|
|
93
|
+
lines = file.readlines()
|
|
94
|
+
filtered_lines = [line for line in lines if not requirement_pattern.match(line)]
|
|
95
|
+
with open(file_path, 'w', encoding='utf-8') as file:
|
|
96
|
+
file.writelines(filtered_lines)
|
|
97
|
+
|
|
98
|
+
|
|
95
99
|
def remove_ok_requirements(repo_dir, tag, additional_inlined_requirements=None):
|
|
96
100
|
inlined_requirements = dict(INLINED_REQUIREMENTS)
|
|
97
101
|
if additional_inlined_requirements:
|
|
98
102
|
inlined_requirements.update(additional_inlined_requirements)
|
|
99
|
-
_add_folders_to_deploy(repo_dir, additional_inlined_requirements.values())
|
|
100
103
|
|
|
101
|
-
package_folders =
|
|
104
|
+
package_folders = inlined_requirements.values()
|
|
105
|
+
_add_folders_to_deploy(repo_dir, package_folders)
|
|
102
106
|
inline_site_packages(repo_dir, package_folders)
|
|
103
107
|
|
|
104
108
|
config_file = get_file_in_path_or_cwd(repo_dir, 'config.py')
|
|
@@ -108,25 +112,12 @@ def remove_ok_requirements(repo_dir, tag, additional_inlined_requirements=None):
|
|
|
108
112
|
with open(config_file, 'w', encoding='utf-8') as file:
|
|
109
113
|
file.write(new_content)
|
|
110
114
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
lines = file.readlines()
|
|
114
|
-
inlined_packages = [
|
|
115
|
-
package_name
|
|
116
|
-
for package_name, package_folder in inlined_requirements.items()
|
|
117
|
-
if package_folder in package_folders
|
|
118
|
-
]
|
|
119
|
-
if inlined_packages:
|
|
120
|
-
requirement_pattern = r'^\s*({})\b'.format('|'.join(re.escape(name) for name in inlined_packages))
|
|
121
|
-
filtered_lines = [line for line in lines if not re.match(requirement_pattern, line, re.IGNORECASE)]
|
|
122
|
-
else:
|
|
123
|
-
filtered_lines = lines
|
|
124
|
-
with open(file_path, 'w', encoding='utf-8') as file:
|
|
125
|
-
file.writelines(filtered_lines)
|
|
115
|
+
_remove_inlined_requirements(repo_dir, inlined_requirements.keys())
|
|
116
|
+
|
|
126
117
|
|
|
127
118
|
def main(argv=None):
|
|
128
119
|
parser = argparse.ArgumentParser(description='Inline deployment requirements.')
|
|
129
|
-
parser.add_argument('--tag', help='Set the application version and remove inlined packages from requirements.
|
|
120
|
+
parser.add_argument('--tag', help='Set the application version and remove inlined packages from requirements files.')
|
|
130
121
|
parser.add_argument(
|
|
131
122
|
'--add-inlined-requirement',
|
|
132
123
|
action='append',
|
|
@@ -145,7 +136,7 @@ def main(argv=None):
|
|
|
145
136
|
else:
|
|
146
137
|
inlined_requirements = dict(INLINED_REQUIREMENTS)
|
|
147
138
|
inlined_requirements.update(additional_inlined_requirements)
|
|
148
|
-
_add_folders_to_deploy(repo_dir,
|
|
139
|
+
_add_folders_to_deploy(repo_dir, inlined_requirements.values())
|
|
149
140
|
inline_site_packages(repo_dir, inlined_requirements.values())
|
|
150
141
|
|
|
151
142
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ok-script
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.0b7
|
|
4
4
|
Summary: Automation with Computer Vision for Python
|
|
5
5
|
Author-email: ok-oldking <firedcto@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/ok-oldking/ok-script
|
|
@@ -16,7 +16,7 @@ Requires-Python: >=3.11
|
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE.txt
|
|
18
18
|
Requires-Dist: pywin32>=306
|
|
19
|
-
Requires-Dist: pyappify>=1.0.
|
|
19
|
+
Requires-Dist: pyappify>=1.0.9
|
|
20
20
|
Requires-Dist: typing-extensions>=4.11.0
|
|
21
21
|
Requires-Dist: requests>=2.32.3
|
|
22
22
|
Requires-Dist: psutil>=6.0.0
|
|
@@ -11,9 +11,17 @@ def _write_repo_files(repo_dir, deploy_text=None):
|
|
|
11
11
|
(repo_dir / "deploy.txt").write_text(deploy_text, encoding="utf-8")
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
def
|
|
14
|
+
def test_remove_ok_requirements_always_includes_defaults_without_deploy_txt(tmp_path, monkeypatch):
|
|
15
15
|
copied_folders = []
|
|
16
16
|
_write_repo_files(tmp_path)
|
|
17
|
+
(tmp_path / "requirements-web.txt").write_text(
|
|
18
|
+
"ok-script==1.0.147\npyappify==1.0.3\nhttpx==0.28.1\n",
|
|
19
|
+
encoding="utf-8",
|
|
20
|
+
)
|
|
21
|
+
(tmp_path / "requirements-dev.txt").write_text(
|
|
22
|
+
"PYAPPIFY==1.0.3\npytest==8.4.1\n",
|
|
23
|
+
encoding="utf-8",
|
|
24
|
+
)
|
|
17
25
|
monkeypatch.setattr(
|
|
18
26
|
inline_ok_requirements,
|
|
19
27
|
"find_and_copy_site_package",
|
|
@@ -22,14 +30,21 @@ def test_remove_ok_requirements_skips_inline_and_removal_without_deploy_txt(tmp_
|
|
|
22
30
|
|
|
23
31
|
inline_ok_requirements.remove_ok_requirements(str(tmp_path), "v1.2.3")
|
|
24
32
|
|
|
25
|
-
assert copied_folders == []
|
|
33
|
+
assert copied_folders == ["ok", "pyappify"]
|
|
26
34
|
assert (tmp_path / "requirements.txt").read_text(encoding="utf-8") == (
|
|
27
|
-
"
|
|
35
|
+
"requests==2.32.3\n"
|
|
36
|
+
)
|
|
37
|
+
assert (tmp_path / "requirements-web.txt").read_text(encoding="utf-8") == (
|
|
38
|
+
"httpx==0.28.1\n"
|
|
28
39
|
)
|
|
40
|
+
assert (tmp_path / "requirements-dev.txt").read_text(encoding="utf-8") == (
|
|
41
|
+
"pytest==8.4.1\n"
|
|
42
|
+
)
|
|
43
|
+
assert (tmp_path / "deploy.txt").read_text(encoding="utf-8") == "ok\npyappify\n"
|
|
29
44
|
assert (tmp_path / "config.py").read_text(encoding="utf-8") == 'version = "v1.2.3"\n'
|
|
30
45
|
|
|
31
46
|
|
|
32
|
-
def
|
|
47
|
+
def test_remove_ok_requirements_adds_missing_defaults_to_deploy_txt(tmp_path, monkeypatch):
|
|
33
48
|
copied_folders = []
|
|
34
49
|
_write_repo_files(tmp_path, "src\nok\nrequirements.txt\n")
|
|
35
50
|
monkeypatch.setattr(
|
|
@@ -40,9 +55,12 @@ def test_remove_ok_requirements_only_inlines_folders_listed_in_deploy_txt(tmp_pa
|
|
|
40
55
|
|
|
41
56
|
inline_ok_requirements.remove_ok_requirements(str(tmp_path), "v1.2.3")
|
|
42
57
|
|
|
43
|
-
assert copied_folders == ["ok"]
|
|
58
|
+
assert copied_folders == ["ok", "pyappify"]
|
|
44
59
|
assert (tmp_path / "requirements.txt").read_text(encoding="utf-8") == (
|
|
45
|
-
"
|
|
60
|
+
"requests==2.32.3\n"
|
|
61
|
+
)
|
|
62
|
+
assert (tmp_path / "deploy.txt").read_text(encoding="utf-8") == (
|
|
63
|
+
"src\nok\nrequirements.txt\npyappify\n"
|
|
46
64
|
)
|
|
47
65
|
|
|
48
66
|
|
|
@@ -57,10 +75,11 @@ def test_remove_ok_requirements_matches_deploy_subpaths(tmp_path, monkeypatch):
|
|
|
57
75
|
|
|
58
76
|
inline_ok_requirements.remove_ok_requirements(str(tmp_path), "v1.2.3")
|
|
59
77
|
|
|
60
|
-
assert copied_folders == ["pyappify"]
|
|
78
|
+
assert copied_folders == ["ok", "pyappify"]
|
|
61
79
|
assert (tmp_path / "requirements.txt").read_text(encoding="utf-8") == (
|
|
62
|
-
"
|
|
80
|
+
"requests==2.32.3\n"
|
|
63
81
|
)
|
|
82
|
+
assert (tmp_path / "deploy.txt").read_text(encoding="utf-8") == "pyappify/main.py\nok\n"
|
|
64
83
|
|
|
65
84
|
|
|
66
85
|
def test_additional_inlined_requirement_is_added_to_deploy_and_removed(tmp_path, monkeypatch):
|
|
@@ -82,8 +101,10 @@ def test_additional_inlined_requirement_is_added_to_deploy_and_removed(tmp_path,
|
|
|
82
101
|
"custom-package=custom_package",
|
|
83
102
|
])
|
|
84
103
|
|
|
85
|
-
assert copied_folders == ["custom_package"]
|
|
86
|
-
assert (tmp_path / "deploy.txt").read_text(encoding="utf-8") ==
|
|
104
|
+
assert copied_folders == ["ok", "pyappify", "custom_package"]
|
|
105
|
+
assert (tmp_path / "deploy.txt").read_text(encoding="utf-8") == (
|
|
106
|
+
"src\nok\npyappify\ncustom_package\n"
|
|
107
|
+
)
|
|
87
108
|
assert "custom-package" not in (tmp_path / "requirements.txt").read_text(encoding="utf-8")
|
|
88
109
|
|
|
89
110
|
|
|
@@ -104,5 +125,7 @@ def test_additional_inlined_requirement_does_not_duplicate_deploy_subpath(tmp_pa
|
|
|
104
125
|
{"custom-package": "custom_package"},
|
|
105
126
|
)
|
|
106
127
|
|
|
107
|
-
assert copied_folders == ["custom_package"]
|
|
108
|
-
assert (tmp_path / "deploy.txt").read_text(encoding="utf-8") ==
|
|
128
|
+
assert copied_folders == ["ok", "pyappify", "custom_package"]
|
|
129
|
+
assert (tmp_path / "deploy.txt").read_text(encoding="utf-8") == (
|
|
130
|
+
"custom_package/main.py\nok\npyappify\n"
|
|
131
|
+
)
|
|
@@ -299,6 +299,7 @@ class TestPyappifyStartupUpdate(unittest.TestCase):
|
|
|
299
299
|
|
|
300
300
|
def test_check_test_version_controls_release_filter(self):
|
|
301
301
|
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
|
|
302
|
+
import threading
|
|
302
303
|
import time
|
|
303
304
|
from PySide6.QtWidgets import QApplication
|
|
304
305
|
from ok.ui.qt.about.UpdateCard import UpdateCard
|
|
@@ -308,7 +309,8 @@ class TestPyappifyStartupUpdate(unittest.TestCase):
|
|
|
308
309
|
get_version_list=Mock(return_value=[]),
|
|
309
310
|
is_greater_version=lambda left, right: self._version_tuple(left) > self._version_tuple(right),
|
|
310
311
|
)
|
|
311
|
-
|
|
312
|
+
exit_event = threading.Event()
|
|
313
|
+
card = UpdateCard("v1.0.0", module, exit_event=exit_event)
|
|
312
314
|
|
|
313
315
|
for checked, expected_release_only in ((False, True), (True, False)):
|
|
314
316
|
card.test_version_checkbox.setChecked(checked)
|
|
@@ -320,6 +322,7 @@ class TestPyappifyStartupUpdate(unittest.TestCase):
|
|
|
320
322
|
time.sleep(0.01)
|
|
321
323
|
self.assertFalse(card._busy)
|
|
322
324
|
self.assertEqual(expected_release_only, module.get_version_list.call_args.kwargs["release_only"])
|
|
325
|
+
self.assertIs(exit_event, module.get_version_list.call_args.kwargs["exit_event"])
|
|
323
326
|
|
|
324
327
|
card.deleteLater()
|
|
325
328
|
app.processEvents()
|
|
@@ -369,6 +372,36 @@ class TestPyappifyStartupUpdate(unittest.TestCase):
|
|
|
369
372
|
card.deleteLater()
|
|
370
373
|
app.processEvents()
|
|
371
374
|
|
|
375
|
+
def test_update_to_version_receives_exit_event(self):
|
|
376
|
+
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
|
|
377
|
+
import threading
|
|
378
|
+
import time
|
|
379
|
+
from PySide6.QtWidgets import QApplication
|
|
380
|
+
from ok.ui.qt.about.UpdateCard import UpdateCard
|
|
381
|
+
|
|
382
|
+
app = QApplication.instance() or QApplication([])
|
|
383
|
+
exit_event = threading.Event()
|
|
384
|
+
update_to_version = Mock(return_value={"updated": True, "version": "v1.1.0"})
|
|
385
|
+
module = SimpleNamespace(
|
|
386
|
+
update_to_version=update_to_version,
|
|
387
|
+
is_greater_version=lambda left, right: self._version_tuple(left) > self._version_tuple(right),
|
|
388
|
+
calculate_update_notes=self._calculate_update_notes,
|
|
389
|
+
)
|
|
390
|
+
card = UpdateCard("v1.0.0", module, exit_event=exit_event)
|
|
391
|
+
card._apply_versions((True, [{"version": "v1.1.0", "update_note": ["one"]}]))
|
|
392
|
+
|
|
393
|
+
card.update_to_selected_version()
|
|
394
|
+
for _ in range(100):
|
|
395
|
+
app.processEvents()
|
|
396
|
+
if not card._busy:
|
|
397
|
+
break
|
|
398
|
+
time.sleep(0.01)
|
|
399
|
+
|
|
400
|
+
self.assertFalse(card._busy)
|
|
401
|
+
update_to_version.assert_called_once_with("v1.1.0", exit_event=exit_event)
|
|
402
|
+
card.deleteLater()
|
|
403
|
+
app.processEvents()
|
|
404
|
+
|
|
372
405
|
def test_failed_request_shows_visible_error(self):
|
|
373
406
|
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
|
|
374
407
|
import time
|
|
@@ -31,6 +31,7 @@ def make_runtime(tmp_path):
|
|
|
31
31
|
config={"gui_title": "Test App", "version": "1.2.3", "debug": False, "links": {"github": "https://example.test"}},
|
|
32
32
|
task_manager=manager,
|
|
33
33
|
task_executor=SimpleNamespace(get_all_tasks=lambda: [], onetime_tasks=[], trigger_tasks=[]),
|
|
34
|
+
exit_event=Mock(),
|
|
34
35
|
)
|
|
35
36
|
runtime.icon_url = "/static/app-icon.png"
|
|
36
37
|
runtime._schedule_manager = None
|
|
@@ -107,7 +108,7 @@ def test_web_update_check_returns_calculated_notes_in_one_result(tmp_path):
|
|
|
107
108
|
|
|
108
109
|
result = runtime.check_for_updates(release_only=False)
|
|
109
110
|
|
|
110
|
-
get_versions.assert_called_once_with(release_only=False)
|
|
111
|
+
get_versions.assert_called_once_with(release_only=False, exit_event=runtime.ok.exit_event)
|
|
111
112
|
assert result["current_version"] == "1.2.3"
|
|
112
113
|
assert result["update_available"] is True
|
|
113
114
|
assert result["versions"][0] == {"version": "v1.2.5", "notes": ["five", "four", "three"]}
|
|
@@ -120,7 +121,7 @@ def test_web_update_request_calls_pyappify(tmp_path):
|
|
|
120
121
|
|
|
121
122
|
result = runtime.update_to_version("v1.2.4")
|
|
122
123
|
|
|
123
|
-
update.assert_called_once_with("v1.2.4")
|
|
124
|
+
update.assert_called_once_with("v1.2.4", exit_event=runtime.ok.exit_event)
|
|
124
125
|
assert result["accepted"] is True
|
|
125
126
|
assert result["version"] == "v1.2.4"
|
|
126
127
|
|
|
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
|
|
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
|
{ok_script-2.0.0b5 → ok_script-2.0.0b7}/ok/device/interaction_methods/foreground_post_message.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|