pyxllib 0.3.139__tar.gz → 0.3.141__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 (364) hide show
  1. {pyxllib-0.3.139/pyxllib.egg-info → pyxllib-0.3.141}/PKG-INFO +14 -14
  2. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/autogui/uiautolib.py +4 -1
  3. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/autogui/wechat.py +3 -2
  4. pyxllib-0.3.141/pyxllib/prog/multiprocs.py +391 -0
  5. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/pupil.py +2 -382
  6. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/scheduler.py +9 -4
  7. {pyxllib-0.3.139 → pyxllib-0.3.141/pyxllib.egg-info}/PKG-INFO +14 -14
  8. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib.egg-info/SOURCES.txt +1 -1
  9. {pyxllib-0.3.139 → pyxllib-0.3.141}/setup.py +1 -1
  10. pyxllib-0.3.139/pyxllib/prog/multiprocs.py +0 -121
  11. {pyxllib-0.3.139 → pyxllib-0.3.141}/LICENSE +0 -0
  12. {pyxllib-0.3.139 → pyxllib-0.3.141}/MANIFEST.in +0 -0
  13. {pyxllib-0.3.139 → pyxllib-0.3.141}/README.md +0 -0
  14. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/__init__.py +0 -0
  15. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/__init__.py +0 -0
  16. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/disjoint.py +0 -0
  17. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/geo.py +0 -0
  18. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/intervals.py +0 -0
  19. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/matcher.py +0 -0
  20. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/newbie.py +0 -0
  21. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/pupil.py +0 -0
  22. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/shapelylib.py +0 -0
  23. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/specialist.py +0 -0
  24. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/stat.py +0 -0
  25. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/treelib.py +0 -0
  26. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/algo/unitlib.py +0 -0
  27. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/autogui/__init__.py +0 -0
  28. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/autogui/activewin.py +0 -0
  29. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/autogui/all.py +0 -0
  30. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/autogui/autogui.py +0 -0
  31. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/autogui/virtualkey.py +0 -0
  32. pyxllib-0.3.139/pyxllib/autogui/wechat_msgbox.py → pyxllib-0.3.141/pyxllib/autogui/wechat_msg.py +0 -0
  33. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/__init__.py +0 -0
  34. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/expert.py +0 -0
  35. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/imfile.py +0 -0
  36. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/imhash.py +0 -0
  37. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/pupil.py +0 -0
  38. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/rgbfmt.py +0 -0
  39. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/trackbartools.py +0 -0
  40. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/xlcvlib.py +0 -0
  41. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/cv/xlpillib.py +0 -0
  42. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/data/__init__.py +0 -0
  43. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/data/echarts.py +0 -0
  44. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/data/jsonlib.py +0 -0
  45. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/data/oss.py +0 -0
  46. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/data/pglib.py +0 -0
  47. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/data/sqlite.py +0 -0
  48. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/data/sqllib.py +0 -0
  49. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/JLineViewer.py +0 -0
  50. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/__init__.py +0 -0
  51. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/demolib.py +0 -0
  52. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/drissionlib.py +0 -0
  53. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/kq5034lib.py +0 -0
  54. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/old.py +0 -0
  55. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/qt.py +0 -0
  56. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/robustprocfile.py +0 -0
  57. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/seleniumlib.py +0 -0
  58. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/tk.py +0 -0
  59. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/unixlib.py +0 -0
  60. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/utools.py +0 -0
  61. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/webhook.py +0 -0
  62. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/win32lib.py +0 -0
  63. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/ext/yuquelib.py +0 -0
  64. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/__init__.py +0 -0
  65. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/docxlib.py +0 -0
  66. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/gitlib.py +0 -0
  67. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/libreoffice.py +0 -0
  68. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/movielib.py +0 -0
  69. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/newbie.py +0 -0
  70. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/onenotelib.py +0 -0
  71. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/packlib/__init__.py +0 -0
  72. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/packlib/zipfile.py +0 -0
  73. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/pdflib.py +0 -0
  74. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/pupil.py +0 -0
  75. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/specialist/__init__.py +0 -0
  76. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/specialist/dirlib.py +0 -0
  77. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/specialist/download.py +0 -0
  78. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/specialist/filelib.py +0 -0
  79. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/xlsxlib.py +0 -0
  80. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/file/xlsyncfile.py +0 -0
  81. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/__init__.py +0 -0
  82. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/cachetools.py +0 -0
  83. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/deprecatedlib.py +0 -0
  84. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/ipyexec.py +0 -0
  85. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/newbie.py +0 -0
  86. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/sitepackages.py +0 -0
  87. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/specialist/__init__.py +0 -0
  88. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/specialist/bc.py +0 -0
  89. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/specialist/browser.py +0 -0
  90. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/specialist/common.py +0 -0
  91. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/specialist/datetime.py +0 -0
  92. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/specialist/tictoc.py +0 -0
  93. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/specialist/xllog.py +0 -0
  94. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/prog/xlosenv.py +0 -0
  95. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/stdlib/__init__.py +0 -0
  96. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  97. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  98. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  99. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/__init__.py +0 -0
  100. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/ahocorasick.py +0 -0
  101. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/charclasslib.py +0 -0
  102. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/jiebalib.py +0 -0
  103. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/jinjalib.py +0 -0
  104. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/jscode.py +0 -0
  105. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/latex/__init__.py +0 -0
  106. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/levenshtein.py +0 -0
  107. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/nestenv.py +0 -0
  108. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/newbie.py +0 -0
  109. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/pupil/__init__.py +0 -0
  110. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/pupil/common.py +0 -0
  111. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/pupil/xlalign.py +0 -0
  112. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/pycode.py +0 -0
  113. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/specialist/__init__.py +0 -0
  114. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/specialist/common.py +0 -0
  115. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/specialist/ptag.py +0 -0
  116. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/spellchecker.py +0 -0
  117. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/templates/echart_base.html +0 -0
  118. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/templates/highlight_code.html +0 -0
  119. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/templates/latex_editor.html +0 -0
  120. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/vbacode.py +0 -0
  121. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/text/xmllib.py +0 -0
  122. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/xl.py +0 -0
  123. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib/xlcv.py +0 -0
  124. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib.egg-info/dependency_links.txt +0 -0
  125. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib.egg-info/requires.txt +13 -13
  126. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxllib.egg-info/top_level.txt +0 -0
  127. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/__init__.py +0 -0
  128. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ai/__init__.py +0 -0
  129. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ai/clientlib.py +0 -0
  130. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ai/specialist.py +0 -0
  131. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ai/torch_app.py +0 -0
  132. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ai/xlpaddle.py +0 -0
  133. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ai/xltorch.py +0 -0
  134. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/__init__.py +0 -0
  135. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/coco.py +0 -0
  136. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/datacls.py +0 -0
  137. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/datasets.py +0 -0
  138. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/gptlib.py +0 -0
  139. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/icdar/__init__.py +0 -0
  140. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/icdar/deteval.py +0 -0
  141. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/icdar/icdar2013.py +0 -0
  142. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/icdar/iou.py +0 -0
  143. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  144. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/imtextline.py +0 -0
  145. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/labelme.py +0 -0
  146. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/removeline.py +0 -0
  147. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/specialist.py +0 -0
  148. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/data/tiktokenlib.py +0 -0
  149. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/eval/__init__.py +0 -0
  150. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/openai2/__init__.py +0 -0
  151. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/openai2/_core/chat.py +0 -0
  152. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
  153. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/openai2/_core/group_chat.py +0 -0
  154. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/openai2/openai2.py +0 -0
  155. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/paddleocr.py +0 -0
  156. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/__init__.py +0 -0
  157. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  158. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/__init__.py +0 -0
  159. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  160. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  161. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  162. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  163. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  164. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  165. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  166. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  167. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  168. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  169. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  170. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  171. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  172. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  173. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  174. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  175. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  176. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  177. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  178. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  179. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  180. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  181. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  182. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/__init__.py +0 -0
  183. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  184. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  185. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  186. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  187. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  188. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  189. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  190. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  191. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  192. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  193. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  194. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  195. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  196. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  197. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  198. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  199. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  200. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  201. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  202. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  203. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  204. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  205. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  206. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  207. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  208. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  209. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  210. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  211. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  212. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  213. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  214. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  215. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  216. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  217. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  218. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  219. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  220. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  221. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  222. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  223. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  224. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  225. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  226. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  227. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  228. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  229. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  230. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  231. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  232. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  233. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  234. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  235. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  236. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  237. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  238. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  239. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  240. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  241. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  242. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  243. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  244. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  245. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  246. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  247. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  248. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  249. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  250. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  251. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  252. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  253. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  254. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  255. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  256. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  257. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  258. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  259. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  260. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  261. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  262. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  263. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  264. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  265. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  266. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  267. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  268. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  269. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  270. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  271. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  272. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  273. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  274. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  275. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/__init__.py +0 -0
  276. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/eval.py +0 -0
  277. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/export_center.py +0 -0
  278. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/export_model.py +0 -0
  279. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  280. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  281. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  282. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  283. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  284. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  285. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  286. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  287. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  288. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  289. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  290. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  291. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/program.py +0 -0
  292. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  293. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/train.py +0 -0
  294. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  295. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  296. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/__init__.py +0 -0
  297. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  298. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  299. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  300. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  301. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  302. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  303. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  304. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  305. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  306. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  307. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  308. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  309. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  310. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  311. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  312. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  313. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  314. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  315. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  316. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  317. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  318. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  319. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  320. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  321. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  322. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  323. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  324. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  325. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  326. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  327. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  328. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  329. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  330. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  331. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  332. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  333. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  334. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  335. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  336. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  337. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  338. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  339. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  340. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/iou.py +0 -0
  341. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/logging.py +0 -0
  342. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/network.py +0 -0
  343. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  344. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/profiler.py +0 -0
  345. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/save_load.py +0 -0
  346. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/stats.py +0 -0
  347. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppocr/utils/utility.py +0 -0
  348. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/__init__.py +0 -0
  349. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/predict_system.py +0 -0
  350. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/__init__.py +0 -0
  351. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  352. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/matcher.py +0 -0
  353. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  354. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  355. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  356. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  357. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  358. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  359. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  360. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  361. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/ppstructure/utility.py +0 -0
  362. {pyxllib-0.3.139 → pyxllib-0.3.141}/pyxlpr/xlai.py +0 -0
  363. {pyxllib-0.3.139 → pyxllib-0.3.141}/requirements.txt +0 -0
  364. {pyxllib-0.3.139 → pyxllib-0.3.141}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.139
3
+ Version: 0.3.141
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -38,33 +38,33 @@ Requires-Dist: Jinja2
38
38
  Requires-Dist: pandas>=0.23.4
39
39
  Requires-Dist: pillow
40
40
  Provides-Extra: xlcv
41
+ Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
41
42
  Requires-Dist: pillow; extra == "xlcv"
42
43
  Requires-Dist: opencv-python; extra == "xlcv"
43
- Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
44
44
  Provides-Extra: xlai
45
+ Requires-Dist: opsdroid-get-image-size; extra == "xlai"
46
+ Requires-Dist: opencv-python; extra == "xlai"
45
47
  Requires-Dist: pillow; extra == "xlai"
46
48
  Requires-Dist: pynvml; extra == "xlai"
47
- Requires-Dist: opsdroid-get-image-size; extra == "xlai"
48
49
  Requires-Dist: visdom; extra == "xlai"
49
- Requires-Dist: opencv-python; extra == "xlai"
50
50
  Provides-Extra: xlall
51
- Requires-Dist: html2text; extra == "xlall"
52
- Requires-Dist: pillow; extra == "xlall"
53
- Requires-Dist: flask-restful; extra == "xlall"
54
51
  Requires-Dist: opsdroid-get-image-size; extra == "xlall"
52
+ Requires-Dist: sentencepiece; extra == "xlall"
55
53
  Requires-Dist: uvicorn; extra == "xlall"
56
- Requires-Dist: xlrd; extra == "xlall"
57
- Requires-Dist: zhconv; extra == "xlall"
58
- Requires-Dist: fastapi; extra == "xlall"
54
+ Requires-Dist: opencv-python; extra == "xlall"
55
+ Requires-Dist: flask-cors; extra == "xlall"
56
+ Requires-Dist: html2text; extra == "xlall"
57
+ Requires-Dist: flask-restful; extra == "xlall"
59
58
  Requires-Dist: arts; extra == "xlall"
59
+ Requires-Dist: xlrd; extra == "xlall"
60
60
  Requires-Dist: openai2; extra == "xlall"
61
+ Requires-Dist: zhconv; extra == "xlall"
62
+ Requires-Dist: pillow; extra == "xlall"
61
63
  Requires-Dist: flask; extra == "xlall"
62
64
  Requires-Dist: flask-wtf; extra == "xlall"
63
- Requires-Dist: ujson; extra == "xlall"
64
- Requires-Dist: sentencepiece; extra == "xlall"
65
65
  Requires-Dist: flask-jwt-extended; extra == "xlall"
66
- Requires-Dist: opencv-python; extra == "xlall"
67
- Requires-Dist: flask-cors; extra == "xlall"
66
+ Requires-Dist: ujson; extra == "xlall"
67
+ Requires-Dist: fastapi; extra == "xlall"
68
68
 
69
69
  # 1 install
70
70
 
@@ -237,7 +237,10 @@ class UiCtrlNode(NodeMixin):
237
237
  return cls(ctrl, build_depth=build_depth)
238
238
 
239
239
  def activate(self):
240
- """ 激活当前窗口 """
240
+ """ 激活当前窗口
241
+
242
+ todo 修改的更稳定些?多些判断,重复测试,等待?
243
+ """
241
244
  if hwnd := win32gui.FindWindow(self.ctrl.ClassName, self.text):
242
245
  # 恢复窗口
243
246
  win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
@@ -24,7 +24,7 @@ import win32con
24
24
  import win32gui
25
25
 
26
26
  from pyxllib.prog.pupil import print2string
27
- from pyxllib.autogui.wechat_msgbox import msg_parsers
27
+ from pyxllib.autogui.wechat_msg import msg_parsers
28
28
  from pyxllib.autogui.uiautolib import find_ctrl, UiCtrlNode, copy_files_to_clipboard
29
29
 
30
30
 
@@ -146,7 +146,7 @@ class MsgNode(UiCtrlNode):
146
146
 
147
147
  def init(self):
148
148
  """ 解析出更精细的结构化信息 """
149
- from pyxllib.autogui.wechat_msgbox import msg_parsers
149
+ from pyxllib.autogui.wechat_msg import msg_parsers
150
150
 
151
151
  tag = self.get_ctrl_hash_tag()
152
152
  if tag in msg_parsers:
@@ -413,6 +413,7 @@ class WeChatMainWnd(UiCtrlNode):
413
413
  edit_box.SendKeys('{Delete}')
414
414
 
415
415
  def write_text(self, text, clear=False, send=False):
416
+ # todo 加at人的功能
416
417
  # 1 是否清空旧数据
417
418
  if clear:
418
419
  self.clear_editor_content()
@@ -0,0 +1,391 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # @Author : 陈坤泽
4
+ # @Email : 877362867@qq.com
5
+ # @Date : 2024/11/12
6
+
7
+ from types import SimpleNamespace
8
+ from unittest.mock import Mock
9
+ import ctypes
10
+ import os
11
+ import socketserver
12
+ import subprocess
13
+ import sys
14
+
15
+ from deprecated import deprecated
16
+
17
+
18
+ def find_free_ports(count=1):
19
+ """ 随机获得可用端口
20
+
21
+ :param count: 需要的端口数量(会保证给出的端口号不重复)
22
+ :return: list
23
+ """
24
+ ports = set()
25
+ while len(ports) < count:
26
+ with socketserver.TCPServer(("localhost", 0), None) as s:
27
+ ports.add(s.server_address[1])
28
+
29
+ return list(ports)
30
+
31
+
32
+ class ProgramWorker(SimpleNamespace):
33
+ """
34
+ 代表一个单独的程序(进程),基于 SimpleNamespace 实现。
35
+ """
36
+
37
+ def __init__(self, name, program, port=None, locations=None,
38
+ raw_cmd=None, **attrs):
39
+ """
40
+ :param name: 程序昵称
41
+ :param program: 程序对象
42
+ :param port: 是否有执行所在端口
43
+ :param locations: 是否有url地址映射,一般用于nginx等配置
44
+ """
45
+ super().__init__(**attrs)
46
+ self.name = name
47
+ self.program = program
48
+ self.raw_cmd = raw_cmd
49
+
50
+ # 这两个是比较特别的属性,在我的工程框架中常用
51
+ self.port = port
52
+ self.locations = locations
53
+
54
+ def terminate(self):
55
+ """
56
+ 比较优雅结束进程的方法
57
+ """
58
+ if self.program is not None:
59
+ self.program.terminate()
60
+
61
+ def kill(self):
62
+ """
63
+ 有时候需要强硬的kill方法来结束进程
64
+ """
65
+ if self.program is not None:
66
+ self.program.kill()
67
+
68
+
69
+ class MultiProgramLauncher:
70
+ """
71
+ 管理多个程序的启动与终止
72
+ """
73
+
74
+ def __init__(self):
75
+ self.workers = []
76
+
77
+ def __1_各种添加进程的机制(self):
78
+ pass
79
+
80
+ def _set_pdeathsig(self, sig=None):
81
+ """ 在主服务退出时,这些程序也会全部自动关闭 """
82
+
83
+ def callable():
84
+ import signal
85
+ sig2 = signal.SIGTERM if sig is None else sig
86
+ libc = ctypes.CDLL("libc.so.6")
87
+ return libc.prctl(1, sig2)
88
+
89
+ if sys.platform == 'win32':
90
+ # windows系统暂设为空
91
+ return None
92
+ else:
93
+ return callable
94
+
95
+ def add_program_cmd(self,
96
+ cmd,
97
+ name=None,
98
+ shell=False,
99
+ run=True,
100
+ **attrs):
101
+ """
102
+ 启动一个程序,或仅存储任务,并添加进管理列表
103
+
104
+ :param cmd: 启动程序的命令
105
+ :param name: 程序名称,如果未提供则从cmd中自动获取
106
+ :param shell:
107
+ False,(优先推荐)直接跟系统交互,此时cmd应该输入数组格式
108
+ True,启用shell进行交互操作,这种情况会更适合管道等模式的处理,此时cmd应该输入字符串格式
109
+ :param attrs: 其他需要传递给ProgramWorker的参数
110
+ :return: 返回一个ProgramWorker实例,表示启动的程序或存储的任务
111
+ """
112
+ # 1 如果未显式传入name,自动从cmd中获取程序名称
113
+ # logger.info(cmd)
114
+ if name is None:
115
+ _cmd = cmd.split() if isinstance(cmd, str) else cmd
116
+ name = _cmd[0]
117
+
118
+ # 2 启动或模拟进程
119
+ if run:
120
+ # 2.1 运行进程
121
+ if sys.platform == 'win32':
122
+ proc = subprocess.Popen(cmd, shell=shell)
123
+ else:
124
+ proc = subprocess.Popen(cmd, shell=shell, preexec_fn=self._set_pdeathsig())
125
+ else:
126
+ # 2.2 如果run=False,使用Mock对象占位
127
+ proc = Mock() # 模拟一个proc对象
128
+ proc.pid = None
129
+ proc.poll.return_value = 'tag' # 仅标签,此处未实际启动
130
+
131
+ # 3 创建ProgramWorker实例并添加到workers列表中
132
+ worker = ProgramWorker(name, proc, raw_cmd=cmd, **attrs)
133
+ self.workers.append(worker)
134
+
135
+ return worker
136
+
137
+ def add_program_cmd2(self, cmd, ports=1, name=None, **kwargs):
138
+ """
139
+ 增强版 add_program_cmd,支持 ports 的处理
140
+
141
+ :param ports:
142
+ int 表示要开启的进程数,端口号随机生成;
143
+ list 表示指定的端口号
144
+ None 不做特殊配置
145
+ """
146
+ # 1 处理 ports 参数,找到空闲端口或使用指定端口
147
+ if isinstance(ports, int):
148
+ ports = find_free_ports(ports)
149
+
150
+ # 2 处理 locations 参数,自动设置默认 URL 映射
151
+ if name is None:
152
+ _cmd = cmd.split() if isinstance(cmd, str) else cmd
153
+ name = _cmd[0]
154
+
155
+ # 2 遍历端口,依次启动进程
156
+ workers = []
157
+ if ports:
158
+ for port in ports:
159
+ cmd_with_port = cmd + [f'--port', str(port)]
160
+ kwargs['port'] = port
161
+ worker = self.add_program_cmd(cmd_with_port, name=f'{name}:{port}', **kwargs)
162
+ workers.append(worker)
163
+ else:
164
+ workers = [self.add_program_cmd(cmd, name=name, **kwargs)]
165
+
166
+ return workers
167
+
168
+ def add_program_cmd3(self, cmd, ports=None, locations=None, *, devices=None, **kwargs):
169
+ """
170
+ 增强版 add_program_cmd2,支持 devices 等其他更多特殊的扩展参数的处理
171
+
172
+ :param locations: URL 映射规则
173
+ :param int|str|None devices: 使用的设备编号(显卡编号或 CPU)
174
+ 未设置的时候,使用cpu运行
175
+ :return: 返回一个包含所有启动程序的 worker 列表。
176
+ """
177
+ # 1 处理locations
178
+ if locations:
179
+ if isinstance(locations, str):
180
+ locations = [locations]
181
+ for i, x in enumerate(locations):
182
+ if not isinstance(x, dict):
183
+ locations[i] = {x: x}
184
+ kwargs['locations'] = locations
185
+
186
+ # 2 处理 devices 参数,设置显卡编号或使用 CPU
187
+ if devices is not None:
188
+ os.environ['CUDA_VISIBLE_DEVICES'] = str(devices)
189
+ elif 'CUDA_VISIBLE_DEVICES' in os.environ:
190
+ del os.environ['CUDA_VISIBLE_DEVICES'] # 如果没设置 devices,就清除环境变量,使用 CPU
191
+
192
+ # 3 处理 ports 参数
193
+ workers = self.add_program_cmd2(cmd, ports=ports, **kwargs)
194
+
195
+ return workers
196
+
197
+ def add_program_python(self, py_file, args='',
198
+ ports=None, locations=None,
199
+ name=None, shell=False, executer=None,
200
+ **kwargs):
201
+ """ 添加并启动一个Python文件作为后台程序 """
202
+ if executer is None:
203
+ executer = sys.executable
204
+ cmd = [str(executer), str(py_file)]
205
+ if isinstance(args, str):
206
+ cmd.append(args)
207
+ else:
208
+ cmd += list(args)
209
+ return self.add_program_cmd3(cmd, name, ports=ports, locations=locations, shell=shell, **kwargs)
210
+
211
+ def add_program_python_module(self, module, args='',
212
+ ports=None, locations=None,
213
+ name=None, shell=False, executer=None,
214
+ **kwargs):
215
+ """
216
+ 添加并启动一个Python模块作为后台程序
217
+
218
+ :param module: 要执行的Python模块名(python -m 后面的部分)
219
+ :param str|list args: 模块的参数
220
+ :param name: 进程的名称,默认为模块名
221
+ """
222
+ if executer is None:
223
+ executer = sys.executable
224
+ cmd = [f'{executer}', '-m', f'{module}']
225
+ if isinstance(args, str):
226
+ cmd.append(args)
227
+ else:
228
+ cmd += list(args)
229
+ return self.add_program_cmd3(cmd, ports=ports, name=name, locations=locations, shell=shell, **kwargs)
230
+
231
+ def __2_多进程管理(self):
232
+ pass
233
+
234
+ def stop_all(self):
235
+ """ 停止所有后台程序 """
236
+ for worker in self.workers:
237
+ worker.terminate()
238
+ self.workers = []
239
+
240
+ def run_endless(self):
241
+ """
242
+ 一直运行,直到用户输入 kill 命令或 Ctrl+C
243
+
244
+ poll:
245
+ 如果进程仍在运行,poll()方法返回None。
246
+ 如果进程已经结束,poll()方法返回进程的退出码(exit code)。
247
+ 如果进程正常结束,退出码通常为0。
248
+ 如果进程异常结束,退出码通常是一个非零值,表示异常的类型或错误码。
249
+ """
250
+ import pandas as pd
251
+ from pyxllib.algo.stat import print_full_dataframe
252
+
253
+ try:
254
+ while True:
255
+ cmd = input('>>>')
256
+ if cmd == 'kill':
257
+ self.stop_all()
258
+ break
259
+ elif cmd == 'count':
260
+ # 需要实际检查现有程序
261
+ m = sum([1 for worker in self.workers if worker.program.poll() is None])
262
+ print(f'有{m}个程序正在运行')
263
+ elif cmd == 'list': # 列出所有程序(转df查看)
264
+ ls = []
265
+ for worker in self.workers:
266
+ ls.append([worker.name, worker.program.pid, worker.program.poll(), worker.raw_cmd])
267
+ df = pd.DataFrame(ls, columns=['name', 'pid', 'poll', 'args'])
268
+ print_full_dataframe(df)
269
+ except KeyboardInterrupt:
270
+ print("\n检测到 Ctrl+C,正在终止所有程序...")
271
+ self.stop_all()
272
+ print("所有程序已终止,退出。")
273
+
274
+
275
+ @deprecated(reason='已改名ProgramWorker')
276
+ class ProcessWorker(ProgramWorker):
277
+ pass
278
+
279
+
280
+ @deprecated(reason='已改名MultiProgramLauncher')
281
+ class MultiProcessLauncher(MultiProgramLauncher):
282
+ pass
283
+
284
+
285
+ def support_multi_processes_hyx(default_processes=1):
286
+ """ 对函数进行扩展,支持并发多进程运行
287
+ 增加重跑
288
+ 注意被装饰的函数,需要支持 process_count、process_id 两个参数,来获得总进程数,当前进程id的信息
289
+ """
290
+
291
+ def decorator(func):
292
+
293
+ def wrapper(*args, **kwargs):
294
+ process_count = int(kwargs.pop('process_count', default_processes))
295
+ process_id = kwargs.pop('process_id', None)
296
+ shell = kwargs.pop('shell', False)
297
+
298
+ if process_count == 1 or process_id is not None:
299
+ if process_id is None:
300
+ return func(*args, **kwargs)
301
+ else:
302
+ return func(*args, **kwargs, process_count=process_count, process_id=int(process_id))
303
+ else:
304
+ mpl = MultiProcessLauncher()
305
+ for i in range(int(process_count)):
306
+ if isinstance(process_id, int) and i != process_id:
307
+ continue
308
+
309
+ '''
310
+ sys.argv[0] 为 /Users/youx/NutstoreCloudBridge/slns/xlproject/xlproject/m2404ragdata/b清洗/hyx240806统计图表数.py
311
+ 将其转化为 xlproject.m2404ragdata.b清洗.hyx240806统计图表数
312
+ '''
313
+ header = 'xlproject.code4101'
314
+
315
+ root_directory_name = 'xlproject'
316
+ occurrence = 2
317
+ path = sys.argv[0]
318
+
319
+ # 查找第 occurrence 次出现的 root_directory_name 位置
320
+ positions = [i for i in range(len(path)) if path.startswith(root_directory_name, i)]
321
+ if len(positions) < occurrence:
322
+ raise ValueError(
323
+ f"Path does not contain {occurrence} occurrences of the root directory name: {root_directory_name}")
324
+
325
+ # 提取并转换为模块名称
326
+ index = positions[occurrence - 1]
327
+ module_name = os.path.splitext(path[index:])[0].replace(os.path.sep, '.')
328
+
329
+ # todo 这样使用有个坑,process_count、process_id都是以str类型传入的,开发者下游使用容易出问题
330
+ cmds = [
331
+ 'run_python_module',
332
+ '--wait_mode',
333
+ '60',
334
+ module_name,
335
+ func.__name__,
336
+ '--process_count', str(process_count),
337
+ '--process_id', str(i)
338
+ ]
339
+ cmds.extend(map(str, args)) # 添加位置参数
340
+ for k, v in kwargs.items():
341
+ cmds.append(f'--{k}') # 添加关键字参数的键
342
+ cmds.append(str(v)) # 添加关键字参数的值
343
+
344
+ mpl.add_process_python_module(header, cmds, shell=shell)
345
+ mpl.run_endless()
346
+
347
+ return wrapper
348
+
349
+ return decorator
350
+
351
+
352
+ def support_multi_processes(default_processes=1):
353
+ """ 对函数进行扩展,支持并发多进程运行
354
+
355
+ 注意被装饰的函数,需要支持 process_count、process_id 两个参数,来获得总进程数,当前进程id的信息
356
+ """
357
+
358
+ def decorator(func):
359
+
360
+ def wrapper(*args, **kwargs):
361
+ process_count = int(kwargs.pop('process_count', default_processes))
362
+ process_id = kwargs.pop('process_id', None)
363
+ shell = kwargs.pop('shell', False)
364
+
365
+ if process_count == 1 or process_id is not None:
366
+ if process_id is None:
367
+ return func(*args, **kwargs)
368
+ else:
369
+ return func(*args, **kwargs, process_count=process_count, process_id=int(process_id))
370
+ else:
371
+ mpl = MultiProcessLauncher()
372
+ for i in range(int(process_count)):
373
+ if isinstance(process_id, int) and i != process_id:
374
+ continue
375
+
376
+ # todo 这样使用有个坑,process_count、process_id都是以str类型传入的,开发者下游使用容易出问题
377
+ cmds = [func.__name__,
378
+ '--process_count', str(process_count),
379
+ '--process_id', str(i)
380
+ ]
381
+ cmds.extend(map(str, args)) # 添加位置参数
382
+ for k, v in kwargs.items():
383
+ cmds.append(f'--{k}') # 添加关键字参数的键
384
+ cmds.append(str(v)) # 添加关键字参数的值
385
+
386
+ mpl.add_process_python(sys.argv[0], cmds, shell=shell)
387
+ mpl.run_endless()
388
+
389
+ return wrapper
390
+
391
+ return decorator