pyxllib 0.3.118__tar.gz → 0.3.120__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 (349) hide show
  1. {pyxllib-0.3.118/pyxllib.egg-info → pyxllib-0.3.120}/PKG-INFO +1 -1
  2. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/drissionlib.py +67 -8
  3. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/kq5034lib.py +0 -22
  4. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/utools.py +105 -105
  5. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/specialist/filelib.py +24 -11
  6. {pyxllib-0.3.118 → pyxllib-0.3.120/pyxllib.egg-info}/PKG-INFO +1 -1
  7. {pyxllib-0.3.118 → pyxllib-0.3.120}/setup.py +1 -1
  8. {pyxllib-0.3.118 → pyxllib-0.3.120}/LICENSE +0 -0
  9. {pyxllib-0.3.118 → pyxllib-0.3.120}/MANIFEST.in +0 -0
  10. {pyxllib-0.3.118 → pyxllib-0.3.120}/README.md +0 -0
  11. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/__init__.py +0 -0
  12. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/__init__.py +0 -0
  13. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/disjoint.py +0 -0
  14. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/geo.py +0 -0
  15. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/intervals.py +0 -0
  16. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/matcher.py +0 -0
  17. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/newbie.py +0 -0
  18. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/pupil.py +0 -0
  19. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/shapelylib.py +0 -0
  20. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/specialist.py +0 -0
  21. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/stat.py +0 -0
  22. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/treelib.py +0 -0
  23. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/algo/unitlib.py +0 -0
  24. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/__init__.py +0 -0
  25. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/expert.py +0 -0
  26. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/imfile.py +0 -0
  27. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/imhash.py +0 -0
  28. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/pupil.py +0 -0
  29. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/rgbfmt.py +0 -0
  30. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/trackbartools.py +0 -0
  31. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/xlcvlib.py +0 -0
  32. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/cv/xlpillib.py +0 -0
  33. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/data/__init__.py +0 -0
  34. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/data/echarts.py +0 -0
  35. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/data/jsonlib.py +0 -0
  36. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/data/oss.py +0 -0
  37. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/data/pglib.py +0 -0
  38. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/data/sqlite.py +0 -0
  39. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/data/sqllib.py +0 -0
  40. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/JLineViewer.py +0 -0
  41. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/__init__.py +0 -0
  42. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/autogui/__init__.py +0 -0
  43. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/autogui/autogui.py +0 -0
  44. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/autogui/virtualkey.py +0 -0
  45. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/demolib.py +0 -0
  46. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/old.py +0 -0
  47. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/qt.py +0 -0
  48. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/robustprocfile.py +0 -0
  49. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/seleniumlib.py +0 -0
  50. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/tk.py +0 -0
  51. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/unixlib.py +0 -0
  52. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/webhook.py +0 -0
  53. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/win32lib.py +0 -0
  54. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/ext/yuquelib.py +0 -0
  55. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/__init__.py +0 -0
  56. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/docxlib.py +0 -0
  57. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/gitlib.py +0 -0
  58. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/libreoffice.py +0 -0
  59. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/movielib.py +0 -0
  60. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/newbie.py +0 -0
  61. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/onenotelib.py +0 -0
  62. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/packlib/__init__.py +0 -0
  63. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/packlib/zipfile.py +0 -0
  64. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/pdflib.py +0 -0
  65. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/pupil.py +0 -0
  66. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/specialist/__init__.py +0 -0
  67. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/specialist/dirlib.py +0 -0
  68. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/specialist/download.py +0 -0
  69. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/file/xlsxlib.py +0 -0
  70. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/__init__.py +0 -0
  71. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/cachetools.py +0 -0
  72. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/deprecatedlib.py +0 -0
  73. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/ipyexec.py +0 -0
  74. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/multiprocs.py +0 -0
  75. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/newbie.py +0 -0
  76. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/pupil.py +0 -0
  77. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/scheduler.py +0 -0
  78. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/sitepackages.py +0 -0
  79. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/specialist/__init__.py +0 -0
  80. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/specialist/bc.py +0 -0
  81. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/specialist/browser.py +0 -0
  82. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/specialist/common.py +0 -0
  83. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/specialist/datetime.py +0 -0
  84. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/specialist/tictoc.py +0 -0
  85. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/specialist/xllog.py +0 -0
  86. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/prog/xlosenv.py +0 -0
  87. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/stdlib/__init__.py +0 -0
  88. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  89. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  90. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  91. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/__init__.py +0 -0
  92. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/ahocorasick.py +0 -0
  93. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/charclasslib.py +0 -0
  94. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/jiebalib.py +0 -0
  95. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/jinjalib.py +0 -0
  96. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/jscode.py +0 -0
  97. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/latex/__init__.py +0 -0
  98. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/levenshtein.py +0 -0
  99. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/nestenv.py +0 -0
  100. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/newbie.py +0 -0
  101. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/pupil/__init__.py +0 -0
  102. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/pupil/common.py +0 -0
  103. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/pupil/xlalign.py +0 -0
  104. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/pycode.py +0 -0
  105. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/specialist/__init__.py +0 -0
  106. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/specialist/common.py +0 -0
  107. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/specialist/ptag.py +0 -0
  108. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/spellchecker.py +0 -0
  109. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/vbacode.py +0 -0
  110. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/text/xmllib.py +0 -0
  111. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/xl.py +0 -0
  112. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib/xlcv.py +0 -0
  113. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib.egg-info/SOURCES.txt +0 -0
  114. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib.egg-info/dependency_links.txt +0 -0
  115. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib.egg-info/requires.txt +11 -11
  116. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxllib.egg-info/top_level.txt +0 -0
  117. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/__init__.py +0 -0
  118. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ai/__init__.py +0 -0
  119. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ai/clientlib.py +0 -0
  120. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ai/specialist.py +0 -0
  121. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ai/torch_app.py +0 -0
  122. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ai/xlpaddle.py +0 -0
  123. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ai/xltorch.py +0 -0
  124. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/__init__.py +0 -0
  125. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/coco.py +0 -0
  126. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/datacls.py +0 -0
  127. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/datasets.py +0 -0
  128. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/gptlib.py +0 -0
  129. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/icdar/__init__.py +0 -0
  130. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/icdar/deteval.py +0 -0
  131. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/icdar/icdar2013.py +0 -0
  132. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/icdar/iou.py +0 -0
  133. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  134. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/imtextline.py +0 -0
  135. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/labelme.py +0 -0
  136. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/removeline.py +0 -0
  137. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/specialist.py +0 -0
  138. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/data/tiktokenlib.py +0 -0
  139. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/eval/__init__.py +0 -0
  140. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/paddleocr.py +0 -0
  141. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/__init__.py +0 -0
  142. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  143. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/__init__.py +0 -0
  144. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  145. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  146. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  147. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  148. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  149. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  150. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  151. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  152. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  153. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  154. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  155. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  156. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  157. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  158. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  159. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  160. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  161. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  162. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  163. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  164. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  165. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  166. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  167. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/__init__.py +0 -0
  168. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  169. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  170. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  171. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  172. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  173. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  174. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  175. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  176. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  177. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  178. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  179. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  180. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  181. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  182. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  183. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  184. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  185. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  186. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  187. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  188. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  189. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  190. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  191. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  192. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  193. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  194. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  195. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  196. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  197. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  198. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  199. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  200. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  201. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  202. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  203. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  204. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  205. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  206. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  207. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  208. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  209. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  210. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  211. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  212. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  213. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  214. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  215. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  216. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  217. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  218. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  219. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  220. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  221. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  222. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  223. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  224. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  225. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  226. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  227. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  228. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  229. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  230. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  231. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  232. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  233. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  234. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  235. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  236. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  237. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  238. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  239. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  240. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  241. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  242. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  243. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  244. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  245. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  246. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  247. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  248. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  249. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  250. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  251. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  252. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  253. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  254. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  255. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  256. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  257. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  258. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  259. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  260. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/__init__.py +0 -0
  261. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/eval.py +0 -0
  262. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/export_center.py +0 -0
  263. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/export_model.py +0 -0
  264. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  265. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  266. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  267. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  268. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  269. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  270. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  271. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  272. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  273. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  274. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  275. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  276. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/program.py +0 -0
  277. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  278. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/train.py +0 -0
  279. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  280. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  281. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/__init__.py +0 -0
  282. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  283. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  284. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  285. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  286. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  287. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  288. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  289. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  290. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  291. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  292. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  293. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  294. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  295. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  296. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  297. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  298. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  299. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  300. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  301. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  302. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  303. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  304. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  305. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  306. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  307. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  308. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  309. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  310. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  311. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  312. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  313. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  314. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  315. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  316. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  317. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  318. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  319. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  320. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  321. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  322. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  323. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  324. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  325. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/iou.py +0 -0
  326. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/logging.py +0 -0
  327. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/network.py +0 -0
  328. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  329. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/profiler.py +0 -0
  330. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/save_load.py +0 -0
  331. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/stats.py +0 -0
  332. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppocr/utils/utility.py +0 -0
  333. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/__init__.py +0 -0
  334. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/predict_system.py +0 -0
  335. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/__init__.py +0 -0
  336. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  337. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/matcher.py +0 -0
  338. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  339. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  340. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  341. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  342. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  343. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  344. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  345. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  346. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/ppstructure/utility.py +0 -0
  347. {pyxllib-0.3.118 → pyxllib-0.3.120}/pyxlpr/xlai.py +0 -0
  348. {pyxllib-0.3.118 → pyxllib-0.3.120}/requirements.txt +0 -0
  349. {pyxllib-0.3.118 → pyxllib-0.3.120}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.118
3
+ Version: 0.3.120
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -3,6 +3,7 @@
3
3
  # @Author : 陈坤泽
4
4
  # @Email : 877362867@qq.com
5
5
  # @Date : 2024/04/12
6
+ import time
6
7
 
7
8
  from pyxllib.prog.pupil import check_install_package
8
9
 
@@ -13,10 +14,42 @@ from urllib.parse import unquote
13
14
 
14
15
  import DrissionPage
15
16
  from DrissionPage import ChromiumPage
17
+ from DrissionPage._pages.chromium_base import ChromiumBase
18
+ from DrissionPage._pages.chromium_tab import ChromiumTab
16
19
  from DrissionPage._base.base import BasePage, BaseElement
17
20
 
18
21
  from pyxllib.prog.pupil import inject_members
19
22
  from pyxllib.text.pupil import strfind
23
+ from pyxllib.file.specialist import GetEtag
24
+
25
+
26
+ def get_dp_page(dp_page=None) -> 'XlPage':
27
+ """
28
+
29
+ :param dp_page:
30
+ 默认None, 返回默认的page,一般就是当前页面
31
+ True, 新建一个page
32
+ str, 新建一个对应url的page
33
+ func(tab), 通过规则筛选tab,返回符合条件的第1个tab,否则新建一个tab
34
+ """
35
+
36
+ if isinstance(dp_page, ChromiumPage):
37
+ return dp_page
38
+ elif isinstance(dp_page, ChromiumTab):
39
+ return dp_page.page
40
+ elif callable(dp_page):
41
+ page0 = ChromiumPage()
42
+ for tab in page0.get_tabs():
43
+ if dp_page(tab):
44
+ return tab.page
45
+ return page0.new_tab().page
46
+ elif dp_page is True:
47
+ return ChromiumPage().new_tab().page
48
+ elif isinstance(dp_page, str):
49
+ return ChromiumPage().new_tab(dp_page).page
50
+ else:
51
+ return ChromiumPage()
52
+
20
53
 
21
54
  def get_latest_not_dev_tab(page=None):
22
55
  """ 开发工具本身也会算一个tab,这个函数返回最新的一个不是开发工具的tab """
@@ -45,7 +78,7 @@ def search_download_file(file_name):
45
78
  return file
46
79
 
47
80
 
48
- class XlBasePage(BasePage):
81
+ class XlChromiumBase(ChromiumBase):
49
82
  def get2(self, url, show_errmsg=False, retry=None, interval=None):
50
83
  """
51
84
  240418周四21:57,DrissionPage-4.0.4.21 官方自带page.get,有时候会有bug,不会实际刷新url,这里加个代码进行fix
@@ -64,7 +97,7 @@ class XlBasePage(BasePage):
64
97
  except DrissionPage.errors.ElementLostError:
65
98
  return self
66
99
 
67
- def get_download_files(self):
100
+ def get_download_files(self: ChromiumPage):
68
101
  """ 获取下载列表
69
102
 
70
103
  :param search_name: 搜索文件名,输入该参数时,只会从上往下找到第一个匹配的文件
@@ -90,14 +123,40 @@ class XlBasePage(BasePage):
90
123
 
91
124
  return files
92
125
 
126
+ def wait_page_not_change(self, interval=3):
127
+ """ 等待直到页面内容不再变化
128
+
129
+ :param interval: 时间间隔,需要判断当前内容和interval秒后的内容,看内容是否欧发生改变
130
+ """
131
+ last_html, last_etag = None, None
132
+ while True:
133
+ html = self.html
134
+ etag = GetEtag.from_text(html)
135
+ if etag == last_etag:
136
+ break
137
+
138
+ last_html, last_etag = html, etag
139
+ time.sleep(interval)
140
+ return last_html
141
+
142
+ def action_type(self, ele, text, clear=True):
143
+ """ 基于action实现的重写入,常用于日期相关操作
144
+ 因为很多日期类组件,直接使用ele.input是不生效的,哪怕看似显示了文本,但其实并没有触发js改动,需要用动作链来实现
145
+ """
146
+ from DrissionPage.common import Keys
147
+ if clear:
148
+ self.actions.click(ele).key_down(Keys.CTRL).type('a').key_up(Keys.CTRL).type(text)
149
+ else:
150
+ self.actions.click(ele).type(text)
151
+
93
152
 
94
- inject_members(XlBasePage, BasePage)
153
+ inject_members(XlChromiumBase, ChromiumBase)
95
154
 
96
155
 
97
- class XlBaseElement(BaseElement):
98
- def input2(self, vals, clear=False, by_js=False):
99
- self.clear()
100
- self.input(vals)
156
+ class XlPage(XlChromiumBase, ChromiumTab, ChromiumPage):
157
+ """ 只作为一个类型标记,无实质功能。在猴子补丁背景下,让ide能正确跳转函数定义。 """
158
+ pass
101
159
 
102
160
 
103
- inject_members(XlBaseElement, BaseElement)
161
+ def wait_page_not_change(page, interval=3):
162
+ page.wait_page_not_change(interval)
@@ -883,10 +883,6 @@ class 网课考勤:
883
883
  # 然后自己手动操作验证码
884
884
  # 以及选择"店铺"
885
885
 
886
- def 登录微信支付(self):
887
- driver = self.ensure_driver()
888
- driver.get('https://pay.weixin.qq.com/index.php/core/home/login')
889
-
890
886
  def 下载课次考勤数据(self, 起始课=None, 终止课=None, 文件名前缀=''):
891
887
  if 起始课 is None:
892
888
  起始课 = max(1, self.结束课次)
@@ -941,19 +937,6 @@ class 网课考勤:
941
937
  else:
942
938
  time.sleep(1)
943
939
 
944
- def 批量退款(self):
945
- self.driver.get('https://pay.weixin.qq.com/index.php/xphp/cbatchrefund/batch_refund#/pages/index/index')
946
-
947
- def 申请单条退款(self, 凭证号, 退款金额=0, 退款原因=''):
948
- driver = self.ensure_driver()
949
- driver.get('https://pay.weixin.qq.com/index.php/core/refundapply')
950
- driver.locate('//*[@id="app"]/div/div[2]/div[2]/div[2]/div/span/input').send_keys(凭证号)
951
- driver.click('//*[@id="applyRefundBtn"]') # 申请退款
952
- driver.locate('//*[@id="app"]/div/div[2]/div[2]/div[3]/div[2]/div/div[1]/div/span[1]/input').send_keys(
953
- str(退款金额))
954
- driver.locate('//*[@id="textInput"]').send_keys(退款原因)
955
- # driver.click('//*[@id="commitRefundApplyBtn"]') # 建议手动点"提交申请"
956
-
957
940
 
958
941
  class 网课考勤2(网课考勤):
959
942
  def login_xe(self):
@@ -1695,11 +1678,6 @@ def 下载课次考勤数据(课程链接, 检查文本=''):
1695
1678
  driver.click('//*[@id="data-export-container"]/div/div[2]/div/div[2]/div[2]/button[2]/span/span') # 导出
1696
1679
 
1697
1680
 
1698
- def 登录微信支付():
1699
- driver = get_driver()
1700
- driver.get('https://pay.weixin.qq.com/index.php/core/home/login')
1701
-
1702
-
1703
1681
  def 聚合读取考勤数据(data_dir, name, judge_minute=30):
1704
1682
  """
1705
1683
  1、在目录"data_folder"下,找前缀包含name的所有文件
@@ -113,6 +113,9 @@ class UtoolsBase:
113
113
 
114
114
  self.outfmt = self.cmds['outfmt'] if 'outfmt' in self.cmds else outfmt
115
115
 
116
+
117
+ class UtoolsName(UtoolsBase):
118
+
116
119
  def check_cmds(self):
117
120
  """ 显示所有参数值 """
118
121
  df = pd.DataFrame.from_records([(k, v) for k, v in self.cmds.items()],
@@ -134,110 +137,6 @@ class UtoolsBase:
134
137
  f2.write_text(self.cmds['ClipText'] + '\n')
135
138
  bcompare(f1, f2, wait=False)
136
139
 
137
-
138
- class UtoolsFile(UtoolsBase):
139
- """ 文件相关操作工具 """
140
-
141
- def __init__(self, cmds, *, outfmt='text'):
142
- super().__init__(cmds, outfmt=outfmt)
143
-
144
- # 如果是window等模式,补充 MatchedFiles
145
- if 'MatchedFiles' in self.cmds:
146
- self.paths = [pathlib.Path(f['path']) for f in self.cmds['MatchedFiles']]
147
- else:
148
- self.paths = [pathlib.Path(os.path.abspath(f)).resolve() for f in os.listdir('../robot')]
149
-
150
- @classmethod
151
- def is_image(cls, f):
152
- return bool(re.match('jpe?g|png|gif|bmp', f.suffix.lower()[1:]))
153
-
154
- def codefile(self):
155
- """ 多用途文件处理器
156
-
157
- 核心理念是不设定具体功能,而是让用户在 subinput 自己写需要执行的py代码功能
158
- 而在subinput,可以用一些特殊的标识符来传参
159
-
160
- 以file为例,有4类参数:
161
- file,处理当前目录 文件
162
- rfile,递归处理所有目录下 文件
163
- files,当前目录 所有文件
164
- rfiles,递归获取所有目录下 所有文件
165
-
166
- 类型上,file可以改为
167
- dir,只分析目录
168
- path,所有文件和目录
169
-
170
- 扩展了一些特殊的类型:
171
- imfile,图片文件
172
- """
173
- from functools import reduce
174
- try:
175
- from xlproject.xyz.kzconfig import KzDataSync
176
- from pyxlpr.data.labelme import reduce_labelme_jsonfile
177
- except ModuleNotFoundError:
178
- pass
179
-
180
- tt = TicToc()
181
-
182
- # 1 获得所有标识符
183
- # 每个单词前后都有空格,方便定界
184
- keywords = filter(lambda x: re.match(r'[a-zA-Z_]+$', x),
185
- set(re.findall(r'\.?[a-zA-Z_]+\(?', self.cmds['subinput'])))
186
- keywords = ' ' + ' '.join(keywords) + ' '
187
- # print('keywords:', keywords)
188
-
189
- # 2 生成一些备用的智能参数
190
- # 一级目录下选中的文件
191
- paths = self.paths
192
- # 用正则判断一些智能参数是否要计算,注意不能只判断files,如果出现file,也是要引用files的
193
- files = [XlPath(p) for p in paths if p.is_file()] if re.search(r'files? ', keywords) else []
194
- imfiles = [f for f in files if self.is_image(f)] if re.search(r' imfiles? ', keywords) else []
195
- # 出现r系列的递归操作,都是要计算出dirs的
196
- dirs = [XlPath(p) for p in paths if p.is_dir()] if re.search(r' (dirs?|r[a-zA-Z_]+) ', keywords) else []
197
-
198
- # 递归所有的文件
199
- rpaths = reduce(lambda x, y: x + y.select('**/*').subpaths(), [paths] + dirs) \
200
- if re.search(r' (r[a-zA-Z_]+) ', keywords) else []
201
- rfiles = [XlPath(p) for p in rpaths if p.is_file()] if re.search(r' (r(im)?files?) ', keywords) else []
202
- rimfiles = [f for f in rfiles if self.is_image(f)] if re.search(r' rimfiles? ', keywords) else []
203
- rdirs = [XlPath(p) for p in rpaths if p.is_dir()] if re.search(r' (rdirs?) ', keywords) else []
204
-
205
- # 3 判断是否要智能开循环处理
206
- m = re.search(r' (r?(path|(im)?file|dir)) ', keywords)
207
- if m:
208
- name = m.group(1)
209
- objs = eval(name + 's')
210
- print('len(' + name + 's)=', len(objs))
211
- for x in objs:
212
- locals()[name] = x
213
- eval(self.cmds['subinput'])
214
- else: # 没有的话就直接处理所有文件
215
- eval(self.cmds['subinput'])
216
-
217
- # 4 运行结束标志
218
- print(f'finished in {format_timespan(tt.tocvalue())}.')
219
-
220
- def open_jsonl(self):
221
- """ 打开jsonl文件 """
222
- from pyxllib.ext.JLineViewer import start_jlineviewer
223
- start_jlineviewer(self.paths[0].as_posix())
224
-
225
- def open_jsonl_with_excel(self):
226
- """ 用excel打开jsonl文件 """
227
- from pyxllib.algo.stat import write_dataframes_to_excel
228
-
229
- file = self.paths[0].as_posix()
230
- data = XlPath(file).read_jsonl()
231
-
232
- file = XlPath.create_tempfile_path('.xlsx')
233
- df = pd.DataFrame.from_dict(data)
234
- write_dataframes_to_excel(file, {'Sheet1': df})
235
-
236
- os.startfile(file)
237
-
238
-
239
- class UtoolsText(UtoolsBase):
240
-
241
140
  @clipboard_decorator(copy=False, typing=True)
242
141
  def common_dir(self):
243
142
  # 目录路径生成工具
@@ -315,7 +214,7 @@ class UtoolsText(UtoolsBase):
315
214
  fire.Fire(func, self.cmds['subinput'], 'create_text_image')
316
215
 
317
216
 
318
- class UtoolsRegex(UtoolsBase):
217
+ class UtoolsText(UtoolsBase):
319
218
  def __init__(self, cmds, *, outfmt='text'):
320
219
  super().__init__(cmds, outfmt=outfmt)
321
220
 
@@ -346,6 +245,107 @@ class UtoolsRegex(UtoolsBase):
346
245
  bcompare(text1, text2)
347
246
 
348
247
 
248
+ class UtoolsFile(UtoolsBase):
249
+ """ 文件相关操作工具 """
250
+
251
+ def __init__(self, cmds, *, outfmt='text'):
252
+ super().__init__(cmds, outfmt=outfmt)
253
+
254
+ # 如果是window等模式,补充 MatchedFiles
255
+ if 'MatchedFiles' in self.cmds:
256
+ self.paths = [pathlib.Path(f['path']) for f in self.cmds['MatchedFiles']]
257
+ else:
258
+ self.paths = [pathlib.Path(os.path.abspath(f)).resolve() for f in os.listdir('../robot')]
259
+
260
+ @classmethod
261
+ def is_image(cls, f):
262
+ return bool(re.match('jpe?g|png|gif|bmp', f.suffix.lower()[1:]))
263
+
264
+ def codefile(self):
265
+ """ 多用途文件处理器
266
+
267
+ 核心理念是不设定具体功能,而是让用户在 subinput 自己写需要执行的py代码功能
268
+ 而在subinput,可以用一些特殊的标识符来传参
269
+
270
+ 以file为例,有4类参数:
271
+ file,处理当前目录 文件
272
+ rfile,递归处理所有目录下 文件
273
+ files,当前目录 所有文件
274
+ rfiles,递归获取所有目录下 所有文件
275
+
276
+ 类型上,file可以改为
277
+ dir,只分析目录
278
+ path,所有文件和目录
279
+
280
+ 扩展了一些特殊的类型:
281
+ imfile,图片文件
282
+ """
283
+ from functools import reduce
284
+ try:
285
+ from xlproject.xyz.kzconfig import KzDataSync
286
+ from pyxlpr.data.labelme import reduce_labelme_jsonfile
287
+ except ModuleNotFoundError:
288
+ pass
289
+
290
+ tt = TicToc()
291
+
292
+ # 1 获得所有标识符
293
+ # 每个单词前后都有空格,方便定界
294
+ keywords = filter(lambda x: re.match(r'[a-zA-Z_]+$', x),
295
+ set(re.findall(r'\.?[a-zA-Z_]+\(?', self.cmds['subinput'])))
296
+ keywords = ' ' + ' '.join(keywords) + ' '
297
+ # print('keywords:', keywords)
298
+
299
+ # 2 生成一些备用的智能参数
300
+ # 一级目录下选中的文件
301
+ paths = self.paths
302
+ # 用正则判断一些智能参数是否要计算,注意不能只判断files,如果出现file,也是要引用files的
303
+ files = [XlPath(p) for p in paths if p.is_file()] if re.search(r'files? ', keywords) else []
304
+ imfiles = [f for f in files if self.is_image(f)] if re.search(r' imfiles? ', keywords) else []
305
+ # 出现r系列的递归操作,都是要计算出dirs的
306
+ dirs = [XlPath(p) for p in paths if p.is_dir()] if re.search(r' (dirs?|r[a-zA-Z_]+) ', keywords) else []
307
+
308
+ # 递归所有的文件
309
+ rpaths = reduce(lambda x, y: x + y.select('**/*').subpaths(), [paths] + dirs) \
310
+ if re.search(r' (r[a-zA-Z_]+) ', keywords) else []
311
+ rfiles = [XlPath(p) for p in rpaths if p.is_file()] if re.search(r' (r(im)?files?) ', keywords) else []
312
+ rimfiles = [f for f in rfiles if self.is_image(f)] if re.search(r' rimfiles? ', keywords) else []
313
+ rdirs = [XlPath(p) for p in rpaths if p.is_dir()] if re.search(r' (rdirs?) ', keywords) else []
314
+
315
+ # 3 判断是否要智能开循环处理
316
+ m = re.search(r' (r?(path|(im)?file|dir)) ', keywords)
317
+ if m:
318
+ name = m.group(1)
319
+ objs = eval(name + 's')
320
+ print('len(' + name + 's)=', len(objs))
321
+ for x in objs:
322
+ locals()[name] = x
323
+ eval(self.cmds['subinput'])
324
+ else: # 没有的话就直接处理所有文件
325
+ eval(self.cmds['subinput'])
326
+
327
+ # 4 运行结束标志
328
+ print(f'finished in {format_timespan(tt.tocvalue())}.')
329
+
330
+ def open_jsonl(self):
331
+ """ 打开jsonl文件 """
332
+ from pyxllib.ext.JLineViewer import start_jlineviewer
333
+ start_jlineviewer(self.paths[0].as_posix())
334
+
335
+ def open_jsonl_with_excel(self):
336
+ """ 用excel打开jsonl文件 """
337
+ from pyxllib.algo.stat import write_dataframes_to_excel
338
+
339
+ file = self.paths[0].as_posix()
340
+ data = XlPath(file).read_jsonl()
341
+
342
+ file = XlPath.create_tempfile_path('.xlsx')
343
+ df = pd.DataFrame.from_dict(data)
344
+ write_dataframes_to_excel(file, {'Sheet1': df})
345
+
346
+ os.startfile(file)
347
+
348
+
349
349
  if __name__ == '__main__':
350
350
  with TicToc('utools'):
351
351
  pass
@@ -1476,20 +1476,33 @@ class XlPath(type(pathlib.Path())):
1476
1476
  else:
1477
1477
  return shutil.copytree(self, dst)
1478
1478
 
1479
- def move(self, dst, if_exists=None):
1479
+ def move(self, dst, *, cross_disk=False, if_exists=None):
1480
+ """
1481
+ :param cross_disk: 是否可能涉及跨磁盘操作
1482
+ """
1480
1483
  if not self.exists():
1481
1484
  return self
1482
1485
 
1483
- dst = XlPath(dst)
1484
- if self == dst:
1485
- # 同一个文件,可能是调整了大小写名称
1486
- if self.as_posix() != dst.as_posix():
1487
- tmp = self.tempfile(dir=self.parent) # self不一定是file,也可能是dir,但这个名称通用
1488
- self.rename(tmp)
1489
- self.delete()
1490
- tmp.rename(dst)
1491
- elif dst.exist_preprcs(if_exists):
1492
- self.rename(dst)
1486
+ if cross_disk: # 显式设置跨磁盘操作
1487
+ dst = self.copy(dst, if_exists=if_exists)
1488
+ self.delete()
1489
+ return dst
1490
+
1491
+ try:
1492
+ dst = XlPath(dst)
1493
+ if self == dst:
1494
+ # 同一个文件,可能是调整了大小写名称
1495
+ if self.as_posix() != dst.as_posix():
1496
+ tmp = self.tempfile(dir=self.parent) # self不一定是file,也可能是dir,但这个名称通用
1497
+ self.rename(tmp)
1498
+ self.delete()
1499
+ tmp.rename(dst)
1500
+ elif dst.exist_preprcs(if_exists):
1501
+ self.rename(dst)
1502
+ except OSError:
1503
+ # 有可能是跨磁盘操作,这个时候就只能先拷贝再删除了
1504
+ dst = self.copy(dst, if_exists=if_exists)
1505
+ self.delete()
1493
1506
  return dst
1494
1507
 
1495
1508
  def rename2(self, new_name, if_exists=None):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.118
3
+ Version: 0.3.120
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -45,7 +45,7 @@ _dir = Path(__file__).parent
45
45
 
46
46
  setup(
47
47
  name='pyxllib', # pip 安装时用的名字
48
- version='0.3.118', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
48
+ version='0.3.120', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
49
49
  author='code4101',
50
50
  author_email='877362867@qq.com',
51
51
  url='https://github.com/XLPRUtils/pyxllib',
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