ok-script 2.0.4__tar.gz → 2.0.5__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.4/ok_script.egg-info → ok_script-2.0.5}/PKG-INFO +1 -1
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/task/TaskExecutor.py +42 -6
- {ok_script-2.0.4 → ok_script-2.0.5/ok_script.egg-info}/PKG-INFO +1 -1
- {ok_script-2.0.4 → ok_script-2.0.5}/ok_script.egg-info/SOURCES.txt +1 -0
- ok_script-2.0.5/tests/test_task_executor_ocr.py +113 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/LICENSE.txt +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/MANIFEST.in +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/README.md +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/diagnostics/qq_trace.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/__main__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/alas/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/alas/emulator_base.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/alas/emulator_windows.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/alas/platform_windows.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/alas/utils.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/adb/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/adb/deep.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/adb/minitouch.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/adb/nemu_ipc.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/adb/nemu_utils.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/adb/pool.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/adb/timer.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/adb/util.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/windows/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/windows/d3d11.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/capture/windows/dump.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/cli.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/config_schema.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/downloads.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/events.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/icons.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/notifications.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/screenshot.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/script_editing.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/script_packager.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/script_templates.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/start_controller.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/task_manager.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/template_store.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/translation.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/core/ui_config.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/DeviceManager.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/adb.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/base.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/bitblt.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/bitblt_utils.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/browser.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/desktop_duplication.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/hwnd_window.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/image.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/nemu_ipc.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/types.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/update.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/capture_methods/windows_graphics.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/adb.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/base.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/browser.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/do_nothing.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/foreground_post_message.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/genshin.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/keys.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/post_message.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/pydirect.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/pynput.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/interaction_methods/swipe.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/device/intercation.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/feature/Box.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/feature/Feature.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/feature/FeatureSet.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/feature/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/gui/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/gui/util/pyappify_startup.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/notification/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/notification/manager.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/notification/messenger_images.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/notification/pipeline.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/notification/ppocr.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/notification/providers.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/notification/system.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/notification/windows_messenger.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ocr/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ocr/download_paddle_model.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Media/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Security/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/Storage/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/UI/ViewManagement/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/UI/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/Windows/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/delegate.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/export.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/idldsl.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/inspectable.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/roapi.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/types.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/rotypes/winstring.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/task/DiagnosisTask.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/task/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/task/exceptions.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/task/task.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/task/web.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/test/OKTestRunner.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/test/RunTests.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/test/TaskTestCase.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/test/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/third_party/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/third_party/paperclip.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/overlay/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/overlay/win32_gdi.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/Communicate.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/MainWindow.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/MessageWindow.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/StartController.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/TabTitles.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/about/AboutTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/about/HttpTextEdit.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/about/LinksBar.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/about/ProjectCard.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/about/UpdateCard.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/about/VersionCard.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/about/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/common/OKIcon.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/common/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/common/accent_color.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/common/config.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/common/design_system.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/common/icons.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/common/style_sheet.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/debug/DebugTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/debug/OverlayWidget.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/debug/RunCodeTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/debug/Screenshot.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/debug/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/events.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/GettextTranslator.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/en_US.qm +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/en_US.ts +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/es_ES.qm +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/es_ES.ts +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/ja_JP.qm +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/ja_JP.ts +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/ko_KR.qm +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/ko_KR.ts +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/path.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/update.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/zh_CN.qm +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/zh_CN.ts +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/zh_TW.qm +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/i18n/zh_TW.ts +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/overlay/OverlayWindow.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/overlay/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/dark/card.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/dark/discord.svg +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/dark/heart.svg +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/dark/message_window.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/dark/setting_interface.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/dark/status_bar.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/dark/stop.svg +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/dark/tab.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/light/card.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/light/discord.svg +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/light/heart.svg +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/light/message_window.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/light/setting_interface.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/light/status_bar.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/light/stop.svg +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qss/light/tab.qss +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/qt.qrc +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/resources.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/settings/GlobalConfigCard.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/settings/GlobalConfigTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/settings/SettingTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/settings/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/start/LogWindow.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/start/SelectCaptureListView.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/start/SelectInteractionListView.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/start/StartCard.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/start/StartTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/start/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/ConfigCard.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/ConfigItemFactory.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/ConfigLabelAndWidget.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/EditTaskTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndButtons.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndDoubleSpinBox.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndDropDown.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndFileSelector.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndGlobal.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndLineEdit.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndList.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndMultiSelection.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndSpinBox.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndSwitchButton.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndTextEdit.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/LabelAndWidget.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/MarkUpWindow.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/ModifyListDialog.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/ModifyListItem.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/OneTimeTaskTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/PythonHighlighter.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/RecordScript.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/ScheduleTaskTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/ScriptPackager.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/StartButton.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/TaskCard.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/TaskManger.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/TaskOpButton.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/TaskTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/TemplateFactory.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/TemplateTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/TooltipTableWidget.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/TriggerTaskTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/tasks/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/Alert.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/InitWorker.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/app.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/download.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/pip_util.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/pyappify_startup.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/touch_scroll.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/util/windows_thumbnail.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/BaseLoading.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/BaseWindow.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/Card.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/CustomTab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/EmptyCard.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/ExpandCardLayout.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/FlowLayout.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/FramelessDialog.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/ImageWidget.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/ListTableWidgetItem.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/NumericTableWidgetItem.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/OkCompactSpinBox.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/SortingTableWidgetItem.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/StartLoadingDialog.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/StatusBar.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/Tab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/TabWidget.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/UpdateConfigWidgetItem.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/WidgetWithVLabel.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/YesNonWidgetItem.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/qt/widget/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/app.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/requirements.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/server.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/static/app.js +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/static/chunk-fluent.js +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/static/chunk-react.js +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/static/index.css +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/ui/web/static/index.html +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/update/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/update/copy_ok_folder.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/update/inline_ok_requirements.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/Analytics.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/GlobalConfig.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/__init__.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/blur.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/clazz.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/collection.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/color.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/config.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/explorer.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/file.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/gpu_driver_settings.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/handler.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/i18n.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/logger.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/partial_sync_repo.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/print_hwnd.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/process.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/window.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok/util/windows_schedule.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok_script.egg-info/dependency_links.txt +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok_script.egg-info/entry_points.txt +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok_script.egg-info/not-zip-safe +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok_script.egg-info/requires.txt +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/ok_script.egg-info/top_level.txt +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/pyproject.toml +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/scripts/generate_web_i18n.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/setup.cfg +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/setup.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_accent_color.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_app.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_base_interaction.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_blur.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_box.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_capture_update.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_cli.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_config_card.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_core_events.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_core_ui_services.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_device_manager.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_expand_card_layout.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_explorer.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_global_config.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_gpu_driver_settings.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_handler.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_headless_imports.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_inline_ok_requirements.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_logger.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_main_window_notifications.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_main_window_startup_tab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_main_window_system_theme.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_missing_frame.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_navigation_state.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_nemu_ipc_capture.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_notifications.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_ok_mutex.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_overlay_custom_draw.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_package_metadata.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_process.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_process_mutex.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_pyappify_startup_update.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_qt_events.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_qt_legacy_imports.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_qt_page_layout.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_runtime_startup.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_start_controller.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_start_tab_overlay.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_task_executor_queue.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_task_ui.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_template_tab.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_touch_scroll.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_translation_fallback.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_ui_config.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_web_app.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_web_i18n.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_web_server.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_web_task_tabs.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_web_ui_pages.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_web_ui_tasks.py +0 -0
- {ok_script-2.0.4 → ok_script-2.0.5}/tests/test_windows_graphics_capture.py +0 -0
|
@@ -30,6 +30,7 @@ class TaskExecutor:
|
|
|
30
30
|
debug: bool
|
|
31
31
|
global_config: object
|
|
32
32
|
_ocr_lib: dict
|
|
33
|
+
_ocr_init_results: dict
|
|
33
34
|
ocr_target_height: int
|
|
34
35
|
current_task: object
|
|
35
36
|
config_folder: str
|
|
@@ -75,6 +76,7 @@ class TaskExecutor:
|
|
|
75
76
|
self.debug = debug
|
|
76
77
|
self.global_config = global_config
|
|
77
78
|
self._ocr_lib = {}
|
|
79
|
+
self._ocr_init_results = {}
|
|
78
80
|
if self.config.get('ocr') and not self.config.get('ocr').get('default', False):
|
|
79
81
|
self.config['ocr']['default'] = self.config.get('ocr')
|
|
80
82
|
self.current_task = None
|
|
@@ -150,10 +152,21 @@ class TaskExecutor:
|
|
|
150
152
|
try:
|
|
151
153
|
logger.info('start init default ocr')
|
|
152
154
|
self.ocr_lib()
|
|
153
|
-
|
|
155
|
+
result = self._ocr_init_results.get('default', 'success')
|
|
156
|
+
logger.info(f'default ocr init end, result: {result}, cost: {time.time() - start:.2f}s')
|
|
154
157
|
except Exception as e:
|
|
155
158
|
logger.error(f'init default ocr error, cost: {time.time() - start:.2f}s', e)
|
|
156
159
|
|
|
160
|
+
@staticmethod
|
|
161
|
+
def _onnxocr_test_frame():
|
|
162
|
+
import cv2
|
|
163
|
+
import numpy as np
|
|
164
|
+
|
|
165
|
+
frame = np.full((160, 640, 3), 255, dtype=np.uint8)
|
|
166
|
+
cv2.putText(frame, 'okscript', (24, 110), cv2.FONT_HERSHEY_SIMPLEX,
|
|
167
|
+
2.5, (0, 0, 0), 5, cv2.LINE_AA)
|
|
168
|
+
return frame
|
|
169
|
+
|
|
157
170
|
def _create_ocr_lib(self, name):
|
|
158
171
|
ocr_config = self.config.get('ocr').get(name)
|
|
159
172
|
lib = ocr_config.get('lib')
|
|
@@ -188,10 +201,31 @@ class TaskExecutor:
|
|
|
188
201
|
elif lib == 'onnxocr':
|
|
189
202
|
from onnxocr.onnx_paddleocr import ONNXPaddleOcr
|
|
190
203
|
logger.info(f'init onnxocr {config_params}')
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
204
|
+
use_npu = config_params.get('use_npu', True)
|
|
205
|
+
use_openvino = config_params.get('use_openvino', False)
|
|
206
|
+
if use_npu:
|
|
207
|
+
test_frame = self._onnxocr_test_frame()
|
|
208
|
+
try:
|
|
209
|
+
ocr_lib = ONNXPaddleOcr(use_angle_cls=False,
|
|
210
|
+
logger=logger,
|
|
211
|
+
use_npu=True,
|
|
212
|
+
use_openvino=use_openvino)
|
|
213
|
+
test_result = ocr_lib.ocr(test_frame)
|
|
214
|
+
self._ocr_init_results[name] = f'use_npu=True, test_ocr={test_result!r}'
|
|
215
|
+
except Exception as error:
|
|
216
|
+
logger.warning(f'onnxocr NPU test failed, falling back to CPU: {error}')
|
|
217
|
+
ocr_lib = ONNXPaddleOcr(use_angle_cls=False,
|
|
218
|
+
logger=logger,
|
|
219
|
+
use_npu=False,
|
|
220
|
+
use_openvino=use_openvino)
|
|
221
|
+
self._ocr_init_results[name] = (
|
|
222
|
+
f'use_npu=False (NPU test failed: {error!r})')
|
|
223
|
+
else:
|
|
224
|
+
ocr_lib = ONNXPaddleOcr(use_angle_cls=False,
|
|
225
|
+
logger=logger,
|
|
226
|
+
use_npu=False,
|
|
227
|
+
use_openvino=use_openvino)
|
|
228
|
+
self._ocr_init_results[name] = 'use_npu=False'
|
|
195
229
|
elif lib == 'rapidocr':
|
|
196
230
|
from rapidocr import RapidOCR
|
|
197
231
|
params = {"Global.use_cls": False, "Global.max_side_len": 100000, "Global.min_side_len": 0,
|
|
@@ -201,7 +235,9 @@ class TaskExecutor:
|
|
|
201
235
|
ocr_lib = RapidOCR(params=params)
|
|
202
236
|
else:
|
|
203
237
|
raise Exception(f'ocr lib not supported: {lib}')
|
|
204
|
-
|
|
238
|
+
if name not in self._ocr_init_results:
|
|
239
|
+
self._ocr_init_results[name] = f'lib={lib}, success'
|
|
240
|
+
logger.info(f'ocr_lib init {ocr_lib} {lib}, result: {self._ocr_init_results[name]}')
|
|
205
241
|
return ocr_lib
|
|
206
242
|
|
|
207
243
|
def nullable_frame(self):
|
|
@@ -339,6 +339,7 @@ tests/test_qt_page_layout.py
|
|
|
339
339
|
tests/test_runtime_startup.py
|
|
340
340
|
tests/test_start_controller.py
|
|
341
341
|
tests/test_start_tab_overlay.py
|
|
342
|
+
tests/test_task_executor_ocr.py
|
|
342
343
|
tests/test_task_executor_queue.py
|
|
343
344
|
tests/test_task_ui.py
|
|
344
345
|
tests/test_template_tab.py
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import threading
|
|
3
|
+
import types
|
|
4
|
+
import unittest
|
|
5
|
+
from unittest.mock import patch
|
|
6
|
+
|
|
7
|
+
import cv2 # Keep OpenCV loaded while patch.dict restores fake OCR modules.
|
|
8
|
+
import numpy as np
|
|
9
|
+
|
|
10
|
+
import ok.task.TaskExecutor as task_executor_module
|
|
11
|
+
from ok.task.TaskExecutor import TaskExecutor
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class TestTaskExecutorOCR(unittest.TestCase):
|
|
15
|
+
@staticmethod
|
|
16
|
+
def make_executor(use_npu=True):
|
|
17
|
+
executor = TaskExecutor.__new__(TaskExecutor)
|
|
18
|
+
executor.config = {
|
|
19
|
+
'ocr': {
|
|
20
|
+
'default': {
|
|
21
|
+
'lib': 'onnxocr',
|
|
22
|
+
'params': {'use_npu': use_npu},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
}
|
|
26
|
+
executor._ocr_lib = {}
|
|
27
|
+
executor._ocr_lib_lock = threading.Lock()
|
|
28
|
+
executor._ocr_init_results = {}
|
|
29
|
+
return executor
|
|
30
|
+
|
|
31
|
+
@staticmethod
|
|
32
|
+
def fake_onnxocr(ocr_side_effect=None):
|
|
33
|
+
instances = []
|
|
34
|
+
|
|
35
|
+
class FakeONNXPaddleOcr:
|
|
36
|
+
def __init__(self, **kwargs):
|
|
37
|
+
self.kwargs = kwargs
|
|
38
|
+
self.frames = []
|
|
39
|
+
instances.append(self)
|
|
40
|
+
|
|
41
|
+
def ocr(self, frame):
|
|
42
|
+
self.frames.append(frame)
|
|
43
|
+
if ocr_side_effect is not None:
|
|
44
|
+
raise ocr_side_effect
|
|
45
|
+
return [[('box', ('okscript', 0.99))]]
|
|
46
|
+
|
|
47
|
+
package = types.ModuleType('onnxocr')
|
|
48
|
+
module = types.ModuleType('onnxocr.onnx_paddleocr')
|
|
49
|
+
module.ONNXPaddleOcr = FakeONNXPaddleOcr
|
|
50
|
+
package.onnx_paddleocr = module
|
|
51
|
+
return instances, {
|
|
52
|
+
'onnxocr': package,
|
|
53
|
+
'onnxocr.onnx_paddleocr': module,
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
def test_npu_ocr_runs_generated_frame_smoke_test(self):
|
|
57
|
+
executor = self.make_executor(use_npu=True)
|
|
58
|
+
instances, modules = self.fake_onnxocr()
|
|
59
|
+
|
|
60
|
+
with patch.dict(sys.modules, modules):
|
|
61
|
+
result = executor._create_ocr_lib('default')
|
|
62
|
+
|
|
63
|
+
self.assertIs(result, instances[0])
|
|
64
|
+
self.assertEqual([True], [instance.kwargs['use_npu'] for instance in instances])
|
|
65
|
+
self.assertEqual(1, len(instances[0].frames))
|
|
66
|
+
frame = instances[0].frames[0]
|
|
67
|
+
self.assertIsInstance(frame, np.ndarray)
|
|
68
|
+
self.assertEqual((160, 640, 3), frame.shape)
|
|
69
|
+
self.assertLess(frame.min(), 255)
|
|
70
|
+
self.assertIn('use_npu=True', executor._ocr_init_results['default'])
|
|
71
|
+
self.assertIn('okscript', executor._ocr_init_results['default'])
|
|
72
|
+
|
|
73
|
+
def test_failed_npu_ocr_falls_back_to_non_npu_instance(self):
|
|
74
|
+
executor = self.make_executor(use_npu=True)
|
|
75
|
+
instances, modules = self.fake_onnxocr(RuntimeError('NPU unavailable'))
|
|
76
|
+
|
|
77
|
+
with patch.dict(sys.modules, modules):
|
|
78
|
+
result = executor._create_ocr_lib('default')
|
|
79
|
+
|
|
80
|
+
self.assertIs(result, instances[1])
|
|
81
|
+
self.assertEqual([True, False], [instance.kwargs['use_npu'] for instance in instances])
|
|
82
|
+
self.assertEqual(1, len(instances[0].frames))
|
|
83
|
+
self.assertEqual(0, len(instances[1].frames))
|
|
84
|
+
self.assertIn('use_npu=False', executor._ocr_init_results['default'])
|
|
85
|
+
self.assertIn('NPU unavailable', executor._ocr_init_results['default'])
|
|
86
|
+
|
|
87
|
+
def test_disabled_npu_skips_smoke_test(self):
|
|
88
|
+
executor = self.make_executor(use_npu=False)
|
|
89
|
+
instances, modules = self.fake_onnxocr()
|
|
90
|
+
|
|
91
|
+
with patch.dict(sys.modules, modules):
|
|
92
|
+
result = executor._create_ocr_lib('default')
|
|
93
|
+
|
|
94
|
+
self.assertIs(result, instances[0])
|
|
95
|
+
self.assertEqual([False], [instance.kwargs['use_npu'] for instance in instances])
|
|
96
|
+
self.assertEqual([], instances[0].frames)
|
|
97
|
+
self.assertEqual('use_npu=False', executor._ocr_init_results['default'])
|
|
98
|
+
|
|
99
|
+
def test_default_init_finish_log_includes_npu_test_result(self):
|
|
100
|
+
executor = self.make_executor(use_npu=True)
|
|
101
|
+
executor._ocr_lib['default'] = object()
|
|
102
|
+
executor._ocr_init_results['default'] = 'use_npu=True, test_ocr=okscript'
|
|
103
|
+
|
|
104
|
+
with patch.object(task_executor_module.logger, 'info') as info:
|
|
105
|
+
executor._init_default_ocr()
|
|
106
|
+
|
|
107
|
+
finish_log = info.call_args_list[-1].args[0]
|
|
108
|
+
self.assertIn('default ocr init end', finish_log)
|
|
109
|
+
self.assertIn('use_npu=True, test_ocr=okscript', finish_log)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
if __name__ == '__main__':
|
|
113
|
+
unittest.main()
|
|
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.4 → ok_script-2.0.5}/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
|
|
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.4 → ok_script-2.0.5}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.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
|
|
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
|