ok-script 2.0.5__tar.gz → 2.0.6__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.
Files changed (357) hide show
  1. {ok_script-2.0.5/ok_script.egg-info → ok_script-2.0.6}/PKG-INFO +1 -1
  2. {ok_script-2.0.5 → ok_script-2.0.6}/ok/task/TaskExecutor.py +6 -42
  3. {ok_script-2.0.5 → ok_script-2.0.6/ok_script.egg-info}/PKG-INFO +1 -1
  4. {ok_script-2.0.5 → ok_script-2.0.6}/ok_script.egg-info/SOURCES.txt +0 -1
  5. ok_script-2.0.5/tests/test_task_executor_ocr.py +0 -113
  6. {ok_script-2.0.5 → ok_script-2.0.6}/LICENSE.txt +0 -0
  7. {ok_script-2.0.5 → ok_script-2.0.6}/MANIFEST.in +0 -0
  8. {ok_script-2.0.5 → ok_script-2.0.6}/README.md +0 -0
  9. {ok_script-2.0.5 → ok_script-2.0.6}/diagnostics/qq_trace.py +0 -0
  10. {ok_script-2.0.5 → ok_script-2.0.6}/ok/__init__.py +0 -0
  11. {ok_script-2.0.5 → ok_script-2.0.6}/ok/__main__.py +0 -0
  12. {ok_script-2.0.5 → ok_script-2.0.6}/ok/alas/__init__.py +0 -0
  13. {ok_script-2.0.5 → ok_script-2.0.6}/ok/alas/emulator_base.py +0 -0
  14. {ok_script-2.0.5 → ok_script-2.0.6}/ok/alas/emulator_windows.py +0 -0
  15. {ok_script-2.0.5 → ok_script-2.0.6}/ok/alas/platform_windows.py +0 -0
  16. {ok_script-2.0.5 → ok_script-2.0.6}/ok/alas/utils.py +0 -0
  17. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/__init__.py +0 -0
  18. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/adb/__init__.py +0 -0
  19. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/adb/deep.py +0 -0
  20. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/adb/minitouch.py +0 -0
  21. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/adb/nemu_ipc.py +0 -0
  22. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/adb/nemu_utils.py +0 -0
  23. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/adb/pool.py +0 -0
  24. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/adb/timer.py +0 -0
  25. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/adb/util.py +0 -0
  26. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/windows/__init__.py +0 -0
  27. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/windows/d3d11.py +0 -0
  28. {ok_script-2.0.5 → ok_script-2.0.6}/ok/capture/windows/dump.py +0 -0
  29. {ok_script-2.0.5 → ok_script-2.0.6}/ok/cli.py +0 -0
  30. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/__init__.py +0 -0
  31. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/config_schema.py +0 -0
  32. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/downloads.py +0 -0
  33. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/events.py +0 -0
  34. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/icons.py +0 -0
  35. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/notifications.py +0 -0
  36. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/screenshot.py +0 -0
  37. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/script_editing.py +0 -0
  38. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/script_packager.py +0 -0
  39. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/script_templates.py +0 -0
  40. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/start_controller.py +0 -0
  41. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/task_manager.py +0 -0
  42. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/template_store.py +0 -0
  43. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/translation.py +0 -0
  44. {ok_script-2.0.5 → ok_script-2.0.6}/ok/core/ui_config.py +0 -0
  45. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/DeviceManager.py +0 -0
  46. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/__init__.py +0 -0
  47. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture.py +0 -0
  48. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/__init__.py +0 -0
  49. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/adb.py +0 -0
  50. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/base.py +0 -0
  51. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/bitblt.py +0 -0
  52. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/bitblt_utils.py +0 -0
  53. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/browser.py +0 -0
  54. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/desktop_duplication.py +0 -0
  55. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/hwnd_window.py +0 -0
  56. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/image.py +0 -0
  57. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/nemu_ipc.py +0 -0
  58. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/types.py +0 -0
  59. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/update.py +0 -0
  60. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/capture_methods/windows_graphics.py +0 -0
  61. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction.py +0 -0
  62. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/__init__.py +0 -0
  63. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/adb.py +0 -0
  64. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/base.py +0 -0
  65. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/browser.py +0 -0
  66. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/do_nothing.py +0 -0
  67. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/foreground_post_message.py +0 -0
  68. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/genshin.py +0 -0
  69. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/keys.py +0 -0
  70. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/post_message.py +0 -0
  71. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/pydirect.py +0 -0
  72. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/pynput.py +0 -0
  73. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/interaction_methods/swipe.py +0 -0
  74. {ok_script-2.0.5 → ok_script-2.0.6}/ok/device/intercation.py +0 -0
  75. {ok_script-2.0.5 → ok_script-2.0.6}/ok/feature/Box.py +0 -0
  76. {ok_script-2.0.5 → ok_script-2.0.6}/ok/feature/Feature.py +0 -0
  77. {ok_script-2.0.5 → ok_script-2.0.6}/ok/feature/FeatureSet.py +0 -0
  78. {ok_script-2.0.5 → ok_script-2.0.6}/ok/feature/__init__.py +0 -0
  79. {ok_script-2.0.5 → ok_script-2.0.6}/ok/gui/__init__.py +0 -0
  80. {ok_script-2.0.5 → ok_script-2.0.6}/ok/gui/util/pyappify_startup.py +0 -0
  81. {ok_script-2.0.5 → ok_script-2.0.6}/ok/notification/__init__.py +0 -0
  82. {ok_script-2.0.5 → ok_script-2.0.6}/ok/notification/manager.py +0 -0
  83. {ok_script-2.0.5 → ok_script-2.0.6}/ok/notification/messenger_images.py +0 -0
  84. {ok_script-2.0.5 → ok_script-2.0.6}/ok/notification/pipeline.py +0 -0
  85. {ok_script-2.0.5 → ok_script-2.0.6}/ok/notification/ppocr.py +0 -0
  86. {ok_script-2.0.5 → ok_script-2.0.6}/ok/notification/providers.py +0 -0
  87. {ok_script-2.0.5 → ok_script-2.0.6}/ok/notification/system.py +0 -0
  88. {ok_script-2.0.5 → ok_script-2.0.6}/ok/notification/windows_messenger.py +0 -0
  89. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ocr/__init__.py +0 -0
  90. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ocr/download_paddle_model.py +0 -0
  91. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
  92. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
  93. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
  94. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
  95. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
  96. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
  97. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
  98. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
  99. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
  100. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Media/__init__.py +0 -0
  101. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
  102. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Security/__init__.py +0 -0
  103. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
  104. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/Storage/__init__.py +0 -0
  105. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/UI/ViewManagement/__init__.py +0 -0
  106. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/UI/__init__.py +0 -0
  107. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/Windows/__init__.py +0 -0
  108. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/__init__.py +0 -0
  109. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/delegate.py +0 -0
  110. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/export.py +0 -0
  111. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/idldsl.py +0 -0
  112. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/inspectable.py +0 -0
  113. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/roapi.py +0 -0
  114. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/types.py +0 -0
  115. {ok_script-2.0.5 → ok_script-2.0.6}/ok/rotypes/winstring.py +0 -0
  116. {ok_script-2.0.5 → ok_script-2.0.6}/ok/task/DiagnosisTask.py +0 -0
  117. {ok_script-2.0.5 → ok_script-2.0.6}/ok/task/__init__.py +0 -0
  118. {ok_script-2.0.5 → ok_script-2.0.6}/ok/task/exceptions.py +0 -0
  119. {ok_script-2.0.5 → ok_script-2.0.6}/ok/task/task.py +0 -0
  120. {ok_script-2.0.5 → ok_script-2.0.6}/ok/task/web.py +0 -0
  121. {ok_script-2.0.5 → ok_script-2.0.6}/ok/test/OKTestRunner.py +0 -0
  122. {ok_script-2.0.5 → ok_script-2.0.6}/ok/test/RunTests.py +0 -0
  123. {ok_script-2.0.5 → ok_script-2.0.6}/ok/test/TaskTestCase.py +0 -0
  124. {ok_script-2.0.5 → ok_script-2.0.6}/ok/test/__init__.py +0 -0
  125. {ok_script-2.0.5 → ok_script-2.0.6}/ok/third_party/__init__.py +0 -0
  126. {ok_script-2.0.5 → ok_script-2.0.6}/ok/third_party/paperclip.py +0 -0
  127. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/__init__.py +0 -0
  128. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/overlay/__init__.py +0 -0
  129. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/overlay/win32_gdi.py +0 -0
  130. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/Communicate.py +0 -0
  131. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/MainWindow.py +0 -0
  132. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/MessageWindow.py +0 -0
  133. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/StartController.py +0 -0
  134. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/TabTitles.py +0 -0
  135. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/__init__.py +0 -0
  136. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/about/AboutTab.py +0 -0
  137. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/about/HttpTextEdit.py +0 -0
  138. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/about/LinksBar.py +0 -0
  139. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/about/ProjectCard.py +0 -0
  140. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/about/UpdateCard.py +0 -0
  141. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/about/VersionCard.py +0 -0
  142. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/about/__init__.py +0 -0
  143. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/common/OKIcon.py +0 -0
  144. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/common/__init__.py +0 -0
  145. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/common/accent_color.py +0 -0
  146. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/common/config.py +0 -0
  147. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/common/design_system.py +0 -0
  148. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/common/icons.py +0 -0
  149. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/common/style_sheet.py +0 -0
  150. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/debug/DebugTab.py +0 -0
  151. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/debug/OverlayWidget.py +0 -0
  152. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/debug/RunCodeTab.py +0 -0
  153. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/debug/Screenshot.py +0 -0
  154. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/debug/__init__.py +0 -0
  155. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/events.py +0 -0
  156. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/GettextTranslator.py +0 -0
  157. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/__init__.py +0 -0
  158. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/en_US.qm +0 -0
  159. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/en_US.ts +0 -0
  160. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/es_ES.qm +0 -0
  161. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/es_ES.ts +0 -0
  162. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/ja_JP.qm +0 -0
  163. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/ja_JP.ts +0 -0
  164. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/ko_KR.qm +0 -0
  165. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/ko_KR.ts +0 -0
  166. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/path.py +0 -0
  167. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/update.py +0 -0
  168. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/zh_CN.qm +0 -0
  169. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/zh_CN.ts +0 -0
  170. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/zh_TW.qm +0 -0
  171. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/i18n/zh_TW.ts +0 -0
  172. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/overlay/OverlayWindow.py +0 -0
  173. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/overlay/__init__.py +0 -0
  174. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/__init__.py +0 -0
  175. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/dark/card.qss +0 -0
  176. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/dark/discord.svg +0 -0
  177. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/dark/heart.svg +0 -0
  178. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/dark/message_window.qss +0 -0
  179. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/dark/setting_interface.qss +0 -0
  180. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/dark/status_bar.qss +0 -0
  181. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/dark/stop.svg +0 -0
  182. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/dark/tab.qss +0 -0
  183. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/light/card.qss +0 -0
  184. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/light/discord.svg +0 -0
  185. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/light/heart.svg +0 -0
  186. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/light/message_window.qss +0 -0
  187. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/light/setting_interface.qss +0 -0
  188. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/light/status_bar.qss +0 -0
  189. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/light/stop.svg +0 -0
  190. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qss/light/tab.qss +0 -0
  191. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/qt.qrc +0 -0
  192. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/resources.py +0 -0
  193. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/settings/GlobalConfigCard.py +0 -0
  194. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/settings/GlobalConfigTab.py +0 -0
  195. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/settings/SettingTab.py +0 -0
  196. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/settings/__init__.py +0 -0
  197. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/start/LogWindow.py +0 -0
  198. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/start/SelectCaptureListView.py +0 -0
  199. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/start/SelectInteractionListView.py +0 -0
  200. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/start/StartCard.py +0 -0
  201. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/start/StartTab.py +0 -0
  202. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/start/__init__.py +0 -0
  203. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/ConfigCard.py +0 -0
  204. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/ConfigItemFactory.py +0 -0
  205. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/ConfigLabelAndWidget.py +0 -0
  206. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/EditTaskTab.py +0 -0
  207. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndButtons.py +0 -0
  208. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndDoubleSpinBox.py +0 -0
  209. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndDropDown.py +0 -0
  210. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndFileSelector.py +0 -0
  211. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndGlobal.py +0 -0
  212. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndLineEdit.py +0 -0
  213. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndList.py +0 -0
  214. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndMultiSelection.py +0 -0
  215. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndSpinBox.py +0 -0
  216. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndSwitchButton.py +0 -0
  217. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndTextEdit.py +0 -0
  218. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/LabelAndWidget.py +0 -0
  219. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/MarkUpWindow.py +0 -0
  220. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/ModifyListDialog.py +0 -0
  221. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/ModifyListItem.py +0 -0
  222. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/OneTimeTaskTab.py +0 -0
  223. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/PythonHighlighter.py +0 -0
  224. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/RecordScript.py +0 -0
  225. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/ScheduleTaskTab.py +0 -0
  226. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/ScriptPackager.py +0 -0
  227. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/StartButton.py +0 -0
  228. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/TaskCard.py +0 -0
  229. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/TaskManger.py +0 -0
  230. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/TaskOpButton.py +0 -0
  231. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/TaskTab.py +0 -0
  232. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/TemplateFactory.py +0 -0
  233. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/TemplateTab.py +0 -0
  234. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/TooltipTableWidget.py +0 -0
  235. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/TriggerTaskTab.py +0 -0
  236. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/tasks/__init__.py +0 -0
  237. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/Alert.py +0 -0
  238. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/InitWorker.py +0 -0
  239. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/__init__.py +0 -0
  240. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/app.py +0 -0
  241. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/download.py +0 -0
  242. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/pip_util.py +0 -0
  243. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/pyappify_startup.py +0 -0
  244. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/touch_scroll.py +0 -0
  245. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/util/windows_thumbnail.py +0 -0
  246. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/BaseLoading.py +0 -0
  247. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/BaseWindow.py +0 -0
  248. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/Card.py +0 -0
  249. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/CustomTab.py +0 -0
  250. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/EmptyCard.py +0 -0
  251. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/ExpandCardLayout.py +0 -0
  252. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/FlowLayout.py +0 -0
  253. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/FramelessDialog.py +0 -0
  254. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/ImageWidget.py +0 -0
  255. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/ListTableWidgetItem.py +0 -0
  256. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/NumericTableWidgetItem.py +0 -0
  257. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/OkCompactSpinBox.py +0 -0
  258. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/SortingTableWidgetItem.py +0 -0
  259. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/StartLoadingDialog.py +0 -0
  260. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/StatusBar.py +0 -0
  261. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/Tab.py +0 -0
  262. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/TabWidget.py +0 -0
  263. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/UpdateConfigWidgetItem.py +0 -0
  264. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/WidgetWithVLabel.py +0 -0
  265. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/YesNonWidgetItem.py +0 -0
  266. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/qt/widget/__init__.py +0 -0
  267. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/__init__.py +0 -0
  268. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/app.py +0 -0
  269. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/requirements.py +0 -0
  270. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/server.py +0 -0
  271. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/static/app.js +0 -0
  272. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/static/chunk-fluent.js +0 -0
  273. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/static/chunk-react.js +0 -0
  274. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/static/index.css +0 -0
  275. {ok_script-2.0.5 → ok_script-2.0.6}/ok/ui/web/static/index.html +0 -0
  276. {ok_script-2.0.5 → ok_script-2.0.6}/ok/update/__init__.py +0 -0
  277. {ok_script-2.0.5 → ok_script-2.0.6}/ok/update/copy_ok_folder.py +0 -0
  278. {ok_script-2.0.5 → ok_script-2.0.6}/ok/update/inline_ok_requirements.py +0 -0
  279. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/Analytics.py +0 -0
  280. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/GlobalConfig.py +0 -0
  281. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/__init__.py +0 -0
  282. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/blur.py +0 -0
  283. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/clazz.py +0 -0
  284. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/collection.py +0 -0
  285. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/color.py +0 -0
  286. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/config.py +0 -0
  287. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/explorer.py +0 -0
  288. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/file.py +0 -0
  289. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/gpu_driver_settings.py +0 -0
  290. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/handler.py +0 -0
  291. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/i18n.py +0 -0
  292. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/logger.py +0 -0
  293. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/partial_sync_repo.py +0 -0
  294. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/print_hwnd.py +0 -0
  295. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/process.py +0 -0
  296. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/window.py +0 -0
  297. {ok_script-2.0.5 → ok_script-2.0.6}/ok/util/windows_schedule.py +0 -0
  298. {ok_script-2.0.5 → ok_script-2.0.6}/ok_script.egg-info/dependency_links.txt +0 -0
  299. {ok_script-2.0.5 → ok_script-2.0.6}/ok_script.egg-info/entry_points.txt +0 -0
  300. {ok_script-2.0.5 → ok_script-2.0.6}/ok_script.egg-info/not-zip-safe +0 -0
  301. {ok_script-2.0.5 → ok_script-2.0.6}/ok_script.egg-info/requires.txt +0 -0
  302. {ok_script-2.0.5 → ok_script-2.0.6}/ok_script.egg-info/top_level.txt +0 -0
  303. {ok_script-2.0.5 → ok_script-2.0.6}/pyproject.toml +0 -0
  304. {ok_script-2.0.5 → ok_script-2.0.6}/scripts/generate_web_i18n.py +0 -0
  305. {ok_script-2.0.5 → ok_script-2.0.6}/setup.cfg +0 -0
  306. {ok_script-2.0.5 → ok_script-2.0.6}/setup.py +0 -0
  307. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_accent_color.py +0 -0
  308. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_app.py +0 -0
  309. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_base_interaction.py +0 -0
  310. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_blur.py +0 -0
  311. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_box.py +0 -0
  312. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_capture_update.py +0 -0
  313. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_cli.py +0 -0
  314. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_config_card.py +0 -0
  315. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_core_events.py +0 -0
  316. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_core_ui_services.py +0 -0
  317. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_device_manager.py +0 -0
  318. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_expand_card_layout.py +0 -0
  319. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_explorer.py +0 -0
  320. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_global_config.py +0 -0
  321. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_gpu_driver_settings.py +0 -0
  322. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_handler.py +0 -0
  323. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_headless_imports.py +0 -0
  324. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_inline_ok_requirements.py +0 -0
  325. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_logger.py +0 -0
  326. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_main_window_notifications.py +0 -0
  327. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_main_window_startup_tab.py +0 -0
  328. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_main_window_system_theme.py +0 -0
  329. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_missing_frame.py +0 -0
  330. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_navigation_state.py +0 -0
  331. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_nemu_ipc_capture.py +0 -0
  332. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_notifications.py +0 -0
  333. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_ok_mutex.py +0 -0
  334. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_overlay_custom_draw.py +0 -0
  335. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_package_metadata.py +0 -0
  336. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_process.py +0 -0
  337. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_process_mutex.py +0 -0
  338. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_pyappify_startup_update.py +0 -0
  339. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_qt_events.py +0 -0
  340. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_qt_legacy_imports.py +0 -0
  341. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_qt_page_layout.py +0 -0
  342. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_runtime_startup.py +0 -0
  343. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_start_controller.py +0 -0
  344. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_start_tab_overlay.py +0 -0
  345. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_task_executor_queue.py +0 -0
  346. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_task_ui.py +0 -0
  347. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_template_tab.py +0 -0
  348. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_touch_scroll.py +0 -0
  349. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_translation_fallback.py +0 -0
  350. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_ui_config.py +0 -0
  351. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_web_app.py +0 -0
  352. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_web_i18n.py +0 -0
  353. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_web_server.py +0 -0
  354. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_web_task_tabs.py +0 -0
  355. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_web_ui_pages.py +0 -0
  356. {ok_script-2.0.5 → ok_script-2.0.6}/tests/test_web_ui_tasks.py +0 -0
  357. {ok_script-2.0.5 → ok_script-2.0.6}/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.5
3
+ Version: 2.0.6
4
4
  Summary: Automation with Computer Vision for Python
5
5
  Author-email: ok-oldking <firedcto@gmail.com>
6
6
  License: ok-script License
@@ -30,7 +30,6 @@ class TaskExecutor:
30
30
  debug: bool
31
31
  global_config: object
32
32
  _ocr_lib: dict
33
- _ocr_init_results: dict
34
33
  ocr_target_height: int
35
34
  current_task: object
36
35
  config_folder: str
@@ -76,7 +75,6 @@ class TaskExecutor:
76
75
  self.debug = debug
77
76
  self.global_config = global_config
78
77
  self._ocr_lib = {}
79
- self._ocr_init_results = {}
80
78
  if self.config.get('ocr') and not self.config.get('ocr').get('default', False):
81
79
  self.config['ocr']['default'] = self.config.get('ocr')
82
80
  self.current_task = None
@@ -152,21 +150,10 @@ class TaskExecutor:
152
150
  try:
153
151
  logger.info('start init default ocr')
154
152
  self.ocr_lib()
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')
153
+ logger.info(f'default ocr init end, cost: {time.time() - start:.2f}s')
157
154
  except Exception as e:
158
155
  logger.error(f'init default ocr error, cost: {time.time() - start:.2f}s', e)
159
156
 
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
-
170
157
  def _create_ocr_lib(self, name):
171
158
  ocr_config = self.config.get('ocr').get(name)
172
159
  lib = ocr_config.get('lib')
@@ -201,31 +188,10 @@ class TaskExecutor:
201
188
  elif lib == 'onnxocr':
202
189
  from onnxocr.onnx_paddleocr import ONNXPaddleOcr
203
190
  logger.info(f'init onnxocr {config_params}')
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'
191
+ ocr_lib = ONNXPaddleOcr(use_angle_cls=False,
192
+ logger=logger,
193
+ use_npu=config_params.get('use_npu', True),
194
+ use_openvino=config_params.get('use_openvino', False))
229
195
  elif lib == 'rapidocr':
230
196
  from rapidocr import RapidOCR
231
197
  params = {"Global.use_cls": False, "Global.max_side_len": 100000, "Global.min_side_len": 0,
@@ -235,9 +201,7 @@ class TaskExecutor:
235
201
  ocr_lib = RapidOCR(params=params)
236
202
  else:
237
203
  raise Exception(f'ocr lib not supported: {lib}')
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]}')
204
+ logger.info(f'ocr_lib init {ocr_lib} {lib}')
241
205
  return ocr_lib
242
206
 
243
207
  def nullable_frame(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ok-script
3
- Version: 2.0.5
3
+ Version: 2.0.6
4
4
  Summary: Automation with Computer Vision for Python
5
5
  Author-email: ok-oldking <firedcto@gmail.com>
6
6
  License: ok-script License
@@ -339,7 +339,6 @@ 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
343
342
  tests/test_task_executor_queue.py
344
343
  tests/test_task_ui.py
345
344
  tests/test_template_tab.py
@@ -1,113 +0,0 @@
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