pyxllib 0.3.104__tar.gz → 0.3.106__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 (346) hide show
  1. {pyxllib-0.3.104/pyxllib.egg-info → pyxllib-0.3.106}/PKG-INFO +1 -1
  2. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/stat.py +4 -0
  3. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/data/pglib.py +32 -0
  4. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/data/sqlite.py +5 -0
  5. pyxllib-0.3.106/pyxllib/ext/drissionlib.py +103 -0
  6. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/utools.py +2 -2
  7. pyxllib-0.3.106/pyxllib/file/libreoffice.py +158 -0
  8. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/pupil.py +3 -3
  9. {pyxllib-0.3.104 → pyxllib-0.3.106/pyxllib.egg-info}/PKG-INFO +1 -1
  10. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib.egg-info/SOURCES.txt +1 -0
  11. {pyxllib-0.3.104 → pyxllib-0.3.106}/setup.py +1 -1
  12. pyxllib-0.3.104/pyxllib/ext/drissionlib.py +0 -67
  13. {pyxllib-0.3.104 → pyxllib-0.3.106}/LICENSE +0 -0
  14. {pyxllib-0.3.104 → pyxllib-0.3.106}/MANIFEST.in +0 -0
  15. {pyxllib-0.3.104 → pyxllib-0.3.106}/README.md +0 -0
  16. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/__init__.py +0 -0
  17. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/__init__.py +0 -0
  18. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/disjoint.py +0 -0
  19. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/geo.py +0 -0
  20. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/intervals.py +0 -0
  21. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/matcher.py +0 -0
  22. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/newbie.py +0 -0
  23. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/pupil.py +0 -0
  24. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/shapelylib.py +0 -0
  25. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/specialist.py +0 -0
  26. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/treelib.py +0 -0
  27. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/algo/unitlib.py +0 -0
  28. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/__init__.py +0 -0
  29. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/expert.py +0 -0
  30. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/imfile.py +0 -0
  31. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/imhash.py +0 -0
  32. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/pupil.py +0 -0
  33. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/rgbfmt.py +0 -0
  34. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/trackbartools.py +0 -0
  35. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/xlcvlib.py +0 -0
  36. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/cv/xlpillib.py +0 -0
  37. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/data/__init__.py +0 -0
  38. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/data/echarts.py +0 -0
  39. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/data/jsonlib.py +0 -0
  40. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/data/oss.py +0 -0
  41. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/data/sqllib.py +0 -0
  42. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/JLineViewer.py +0 -0
  43. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/__init__.py +0 -0
  44. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/autogui/__init__.py +0 -0
  45. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/autogui/autogui.py +0 -0
  46. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/autogui/virtualkey.py +0 -0
  47. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/demolib.py +0 -0
  48. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/kq5034lib.py +0 -0
  49. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/old.py +0 -0
  50. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/qt.py +0 -0
  51. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/robustprocfile.py +0 -0
  52. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/seleniumlib.py +0 -0
  53. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/tk.py +0 -0
  54. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/unixlib.py +0 -0
  55. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/webhook.py +0 -0
  56. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/win32lib.py +0 -0
  57. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/ext/yuquelib.py +0 -0
  58. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/__init__.py +0 -0
  59. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/docxlib.py +0 -0
  60. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/gitlib.py +0 -0
  61. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/movielib.py +0 -0
  62. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/newbie.py +0 -0
  63. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/onenotelib.py +0 -0
  64. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/packlib/__init__.py +0 -0
  65. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/packlib/zipfile.py +0 -0
  66. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/pdflib.py +0 -0
  67. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/pupil.py +0 -0
  68. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/specialist/__init__.py +0 -0
  69. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/specialist/dirlib.py +0 -0
  70. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/specialist/download.py +0 -0
  71. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/specialist/filelib.py +0 -0
  72. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/file/xlsxlib.py +0 -0
  73. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/__init__.py +0 -0
  74. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/deprecatedlib.py +0 -0
  75. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/ipyexec.py +0 -0
  76. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/multiprocs.py +0 -0
  77. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/newbie.py +0 -0
  78. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/sitepackages.py +0 -0
  79. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/specialist/__init__.py +0 -0
  80. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/specialist/bc.py +0 -0
  81. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/specialist/browser.py +0 -0
  82. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/specialist/common.py +0 -0
  83. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/specialist/datetime.py +0 -0
  84. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/specialist/tictoc.py +0 -0
  85. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/specialist/xllog.py +0 -0
  86. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/prog/xlosenv.py +0 -0
  87. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/stdlib/__init__.py +0 -0
  88. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  89. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  90. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  91. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/__init__.py +0 -0
  92. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/ahocorasick.py +0 -0
  93. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/charclasslib.py +0 -0
  94. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/jiebalib.py +0 -0
  95. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/jscode.py +0 -0
  96. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/latex/__init__.py +0 -0
  97. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/levenshtein.py +0 -0
  98. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/nestenv.py +0 -0
  99. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/newbie.py +0 -0
  100. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/pupil/__init__.py +0 -0
  101. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/pupil/common.py +0 -0
  102. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/pupil/xlalign.py +0 -0
  103. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/pycode.py +0 -0
  104. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/specialist/__init__.py +0 -0
  105. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/specialist/common.py +0 -0
  106. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/specialist/ptag.py +0 -0
  107. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/spellchecker.py +0 -0
  108. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/vbacode.py +0 -0
  109. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/text/xmllib.py +0 -0
  110. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/xl.py +0 -0
  111. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib/xlcv.py +0 -0
  112. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib.egg-info/dependency_links.txt +0 -0
  113. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib.egg-info/requires.txt +5 -5
  114. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxllib.egg-info/top_level.txt +0 -0
  115. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/__init__.py +0 -0
  116. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ai/__init__.py +0 -0
  117. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ai/clientlib.py +0 -0
  118. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ai/specialist.py +0 -0
  119. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ai/torch_app.py +0 -0
  120. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ai/xlpaddle.py +0 -0
  121. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ai/xltorch.py +0 -0
  122. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/__init__.py +0 -0
  123. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/coco.py +0 -0
  124. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/datacls.py +0 -0
  125. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/datasets.py +0 -0
  126. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/gptlib.py +0 -0
  127. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/icdar/__init__.py +0 -0
  128. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/icdar/deteval.py +0 -0
  129. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/icdar/icdar2013.py +0 -0
  130. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/icdar/iou.py +0 -0
  131. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  132. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/imtextline.py +0 -0
  133. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/labelme.py +0 -0
  134. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/removeline.py +0 -0
  135. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/data/specialist.py +0 -0
  136. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/eval/__init__.py +0 -0
  137. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/paddleocr.py +0 -0
  138. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/__init__.py +0 -0
  139. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  140. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/__init__.py +0 -0
  141. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  142. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  143. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  144. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  145. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  146. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  147. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  148. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  149. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  150. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  151. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  152. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  153. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  154. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  155. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  156. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  157. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  158. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  159. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  160. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  161. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  162. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  163. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  164. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/__init__.py +0 -0
  165. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  166. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  167. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  168. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  169. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  170. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  171. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  172. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  173. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  174. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  175. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  176. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  177. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  178. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  179. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  180. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  181. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  182. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  183. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  184. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  185. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  186. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  187. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  188. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  189. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  190. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  191. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  192. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  193. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  194. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  195. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  196. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  197. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  198. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  199. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  200. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  201. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  202. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  203. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  204. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  205. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  206. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  207. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  208. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  209. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  210. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  211. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  212. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  213. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  214. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  215. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  216. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  217. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  218. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  219. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  220. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  221. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  222. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  223. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  224. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  225. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  226. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  227. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  228. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  229. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  230. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  231. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  232. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  233. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  234. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  235. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  236. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  237. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  238. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  239. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  240. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  241. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  242. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  243. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  244. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  245. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  246. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  247. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  248. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  249. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  250. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  251. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  252. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  253. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  254. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  255. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  256. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  257. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/__init__.py +0 -0
  258. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/eval.py +0 -0
  259. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/export_center.py +0 -0
  260. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/export_model.py +0 -0
  261. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  262. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  263. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  264. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  265. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  266. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  267. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  268. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  269. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  270. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  271. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  272. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  273. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/program.py +0 -0
  274. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  275. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/train.py +0 -0
  276. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  277. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  278. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/__init__.py +0 -0
  279. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  280. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  281. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  282. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  283. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  284. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  285. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  286. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  287. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  288. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  289. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  290. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  291. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  292. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  293. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  294. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  295. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  296. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  297. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  298. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  299. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  300. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  301. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  302. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  303. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  304. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  305. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  306. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  307. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  308. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  309. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  310. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  311. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  312. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  313. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  314. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  315. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  316. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  317. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  318. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  319. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  320. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  321. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  322. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/iou.py +0 -0
  323. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/logging.py +0 -0
  324. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/network.py +0 -0
  325. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  326. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/profiler.py +0 -0
  327. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/save_load.py +0 -0
  328. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/stats.py +0 -0
  329. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppocr/utils/utility.py +0 -0
  330. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/__init__.py +0 -0
  331. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/predict_system.py +0 -0
  332. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/__init__.py +0 -0
  333. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  334. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/matcher.py +0 -0
  335. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  336. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  337. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  338. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  339. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  340. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  341. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  342. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  343. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/ppstructure/utility.py +0 -0
  344. {pyxllib-0.3.104 → pyxllib-0.3.106}/pyxlpr/xlai.py +0 -0
  345. {pyxllib-0.3.104 → pyxllib-0.3.106}/requirements.txt +0 -0
  346. {pyxllib-0.3.104 → pyxllib-0.3.106}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.104
3
+ Version: 0.3.106
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -18,6 +18,10 @@ from pyxllib.prog.pupil import dprint, typename
18
18
  from pyxllib.file.specialist import XlPath
19
19
 
20
20
  pd.options.display.unicode.east_asian_width = True # 优化中文输出对齐问题
21
+ try:
22
+ pd.set_option('future.no_silent_downcasting', True)
23
+ except Exception as e:
24
+ pass
21
25
 
22
26
 
23
27
  def treetable(childreds, parents, arg3=None, nodename_colname=None):
@@ -34,6 +34,7 @@ import json
34
34
  import json
35
35
  import textwrap
36
36
  import datetime
37
+ import re
37
38
 
38
39
  from tqdm import tqdm
39
40
 
@@ -99,6 +100,37 @@ class Connection(psycopg.Connection, SqlBase):
99
100
  self.execute(f"COMMENT ON COLUMN {table_name}.{col_name} IS $zyzf${comment}$zyzf$")
100
101
  self.commit()
101
102
 
103
+ def reset_table_item_id(self, table_name, item_id_name=None, counter_name=None):
104
+ """ 重置表格的数据的id值,也重置计数器
105
+
106
+ :param item_id_name: 表格的自增id字段名,有一套我自己风格的自动推算算法
107
+ :param counter_name: 计数器字段名,如果有的话,也会重置
108
+ """
109
+ # 1 重置数据的编号
110
+ if item_id_name is None:
111
+ m = re.match(r'(.+?)(_table)?$', table_name)
112
+ item_id_name = m.group(1) + '_id'
113
+
114
+ sql = f"""WITH cte AS (
115
+ SELECT {item_id_name}, ROW_NUMBER() OVER (ORDER BY {item_id_name}) AS new_{item_id_name}
116
+ FROM {table_name}
117
+ )
118
+ UPDATE {table_name}
119
+ SET {item_id_name} = cte.new_{item_id_name}
120
+ FROM cte
121
+ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
122
+ self.execute(sql) # todo 这种sql写法好像偶尔有bug会出问题
123
+ self.commit()
124
+
125
+ # 2 重置计数器
126
+ if counter_name is None:
127
+ counter_name = f'{table_name}_{item_id_name}_seq'
128
+
129
+ # 找到目前最大的id值
130
+ max_id = self.exec2one(f'SELECT MAX({item_id_name}) FROM {table_name}')
131
+ self.execute(f'ALTER SEQUENCE {counter_name} RESTART WITH {max_id + 1}')
132
+ self.commit()
133
+
102
134
  def __3_execute(self):
103
135
  pass
104
136
 
@@ -12,7 +12,10 @@ from collections import defaultdict
12
12
 
13
13
  import pandas as pd
14
14
 
15
+ # 旧版的pandas警告
15
16
  warnings.filterwarnings('ignore', message="pandas only support SQLAlchemy connectable")
17
+ # 新版的pandas警告多了个's‘
18
+ warnings.filterwarnings('ignore', message="pandas only supports SQLAlchemy connectable")
16
19
 
17
20
 
18
21
  class SqlBase:
@@ -191,6 +194,8 @@ class SqlBase:
191
194
  cur.close()
192
195
  self.commit()
193
196
 
197
+ self._commit_cache = defaultdict(list)
198
+
194
199
  def update_row(self, table_name, cols, where, *, commit=False):
195
200
  """ 【改】更新数据
196
201
 
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # @Author : 陈坤泽
4
+ # @Email : 877362867@qq.com
5
+ # @Date : 2024/04/12
6
+
7
+ from pyxllib.prog.pupil import check_install_package
8
+
9
+ check_install_package('DrissionPage')
10
+
11
+ import re
12
+ from urllib.parse import unquote
13
+
14
+ import DrissionPage
15
+ from DrissionPage import ChromiumPage
16
+ from DrissionPage._base.base import BasePage, BaseElement
17
+
18
+ from pyxllib.prog.pupil import inject_members
19
+
20
+
21
+ def get_latest_not_dev_tab(page=None):
22
+ """ 开发工具本身也会算一个tab,这个函数返回最新的一个不是开发工具的tab """
23
+ if page is None:
24
+ page = ChromiumPage()
25
+ tabs = page.get_tabs()
26
+ for tab in tabs:
27
+ if tab.url.startswith('devtools://'):
28
+ continue
29
+ return tab
30
+
31
+
32
+ def set_input_text(input_ele, text):
33
+ """ 因为input输入框可能原本就自带了内容,为了不重复输入,先清空再输入 """
34
+ input_ele.clear()
35
+ input_ele.input(text)
36
+
37
+
38
+ def search_download_file(file_name):
39
+ file_name = file_name.replace(':', '_')
40
+ files = ChromiumPage().get_download_files()
41
+ for file in files:
42
+ if file_name in file['file']: # 正常情况下的匹配
43
+ return file
44
+ if file_name in file['file'].replace('+', ' '): # 但有时候'+'好像有点特别
45
+ return file
46
+
47
+
48
+ class XlBasePage(BasePage):
49
+ def get2(self, url, show_errmsg=False, retry=None, interval=None):
50
+ """
51
+ 240418周四21:57,DrissionPage-4.0.4.21 官方自带page.get,有时候会有bug,不会实际刷新url,这里加个代码进行fix
52
+ """
53
+ old_url = self.url
54
+ if old_url == url:
55
+ # page.refresh()
56
+ return
57
+
58
+ ele = self.active_ele
59
+ self.get(url, show_errmsg=show_errmsg, retry=retry, interval=interval)
60
+ try: # 如果新页面获取成功,理论上旧的ele会失效
61
+ ele
62
+ self.refresh() # 如果不报错,这里网站要强制更新
63
+ return self
64
+ except DrissionPage.errors.ElementLostError:
65
+ return self
66
+
67
+ def get_download_files(self):
68
+ """ 获取下载列表
69
+
70
+ :param search_name: 搜索文件名,输入该参数时,只会从上往下找到第一个匹配的文件
71
+ 否则返回一个list结构,存储下载清单里的文件
72
+ :return:
73
+
74
+ todo 默认应该显示是不全的,有时间可以考虑往下滑动继续检索的功能
75
+ """
76
+ files = []
77
+ page2 = self.new_tab('chrome://downloads/')
78
+ items = page2('tag:downloads-manager', timeout=1).sr('#mainContainer')('#downloadsList').eles(
79
+ 'tag:downloads-item')
80
+ for item in items:
81
+ loc = unquote(item.sr('tag:img').attr('src').replace('+', ' '))
82
+ file = re.search(r'path=(.+?)(&scale=\d+x)?$', loc).group(1)
83
+
84
+ files.append({
85
+ 'file': file,
86
+ 'url': unquote(item.sr('#url').attr('href'))
87
+ })
88
+
89
+ page2.close()
90
+
91
+ return files
92
+
93
+
94
+ inject_members(XlBasePage, BasePage)
95
+
96
+
97
+ class XlBaseElement(BaseElement):
98
+ def input2(self, vals, clear=False, by_js=False):
99
+ self.clear()
100
+ self.input(vals)
101
+
102
+
103
+ inject_members(XlBaseElement, BaseElement)
@@ -130,8 +130,8 @@ class UtoolsBase:
130
130
  except OSError: # 忽略错误的扩展名
131
131
  f1 = XlPath.init('left', XlPath.tempdir())
132
132
  f2 = XlPath.init('right', XlPath.tempdir())
133
- f1.write_text(suffix)
134
- f2.write_text(self.cmds['ClipText'])
133
+ f1.write_text(self.cmds['ClipText'])
134
+ f2.write_text(self.cmds['ClipText'] + '\n')
135
135
  bcompare(f1, f2, wait=False)
136
136
 
137
137
 
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # @Author : 陈坤泽
4
+ # @Email : 877362867@qq.com
5
+ # @Date : 2024/04/27
6
+
7
+ """
8
+ libreoffice这个软件相关的功能
9
+
10
+ 官网:https://www.libreoffice.org/download/download-libreoffice/
11
+
12
+ linux的安装:
13
+ sudo apt-get update
14
+ sudo apt-get install libreoffice -y
15
+ """
16
+
17
+ import os
18
+ from pathlib import Path
19
+ import subprocess
20
+ import sys
21
+ import tempfile
22
+ from datetime import datetime
23
+
24
+
25
+ def check_libreoffice():
26
+ """ 检查LibreOffice是否安装 """
27
+ executor = get_libreoffice_executor()
28
+ try:
29
+ subprocess.run([executor, '--version'], check=True)
30
+ except FileNotFoundError:
31
+ return False
32
+ except subprocess.CalledProcessError:
33
+ return False
34
+ return True
35
+
36
+
37
+ def get_libreoffice_executor():
38
+ """ 获得可执行文件的名称 """
39
+ # 根据所在系统区分
40
+ if sys.platform == 'win32':
41
+ return 'soffice.exe'
42
+ else:
43
+ return 'libreoffice'
44
+
45
+
46
+ def infer_file_format(file_path):
47
+ """ 推断文件所属办公文档的'主类' """
48
+ ext = Path(file_path).suffix.lower()
49
+ if ext in ['.doc', '.docx']:
50
+ fmt = 'docx'
51
+ elif ext in ['.ppt', '.pptx']:
52
+ fmt = 'pptx'
53
+ elif ext in ['.xls', '.xlsx']:
54
+ fmt = 'xlsx'
55
+ else:
56
+ raise ValueError("不支持的文件格式")
57
+ return fmt
58
+
59
+
60
+ class UpgradeOfficeFile:
61
+ @classmethod
62
+ def to_dir(cls, file_path, out_dir=None, fmt=None):
63
+ """ 将doc文件转换为docx文件
64
+
65
+ :param file_path: 待升级的文件路径
66
+ :param out_dir: 输出文件目录
67
+ 官方接口默认只能设置导出目录,不能设置导出文件名,文件名是跟原始文件一样的
68
+ :param fmt: 输出文件格式
69
+ docx, xlsx, pptx
70
+ """
71
+ if isinstance(file_path, Path):
72
+ file_path = file_path.as_posix()
73
+
74
+ # 获取LibreOffice可执行文件的名称
75
+ executor = get_libreoffice_executor()
76
+
77
+ # 如果未指定输出路径,则默认在输入文件的同目录下生成同名的DOCX文件
78
+ if out_dir is None:
79
+ out_dir = os.path.dirname(file_path)
80
+
81
+ if fmt is None:
82
+ fmt = infer_file_format(file_path)
83
+
84
+ # 构建转换命令
85
+ command = [
86
+ executor,
87
+ '--headless', # 无界面模式
88
+ '--convert-to', fmt, # 转换为docx格式
89
+ '--outdir', out_dir, # 输出目录
90
+ file_path # 输入文件路径
91
+ ]
92
+
93
+ subprocess.run(command, check=True)
94
+
95
+ # 返回转换后的文件路径
96
+ base_name = os.path.basename(file_path)
97
+ name, _ = os.path.splitext(base_name)
98
+ new_file_path = os.path.join(out_dir, f"{name}.{fmt}")
99
+ return new_file_path
100
+
101
+ @classmethod
102
+ def to_file(cls, in_file, out_file=None, fmt=None):
103
+ """ 可以指定转换出的文件名的版本
104
+
105
+ :param in_file: 待转换的文件路径
106
+ :param out_file: 输出文件路径
107
+ 若未指定,默认与原文件同名,在原文件所在目录生成
108
+ :param fmt: 输出文件格式
109
+ docx, xlsx, pptx
110
+ 若未指定,则根据in_file的后缀名自动判断
111
+ """
112
+ # 将in_file转换为Path对象
113
+ in_file = Path(in_file)
114
+
115
+ # 如果fmt为None,则根据in_file推断
116
+ if fmt is None:
117
+ fmt = infer_file_format(in_file)
118
+
119
+ # 如果out_file为None,则默认在原文件目录生成同名的新格式文件
120
+ if out_file is None:
121
+ out_file = in_file.with_suffix(f'.{fmt}')
122
+ else:
123
+ out_file = Path(out_file)
124
+
125
+ # 确保out_file的父目录存在,不存在则创建
126
+ out_file.parent.mkdir(parents=True, exist_ok=True)
127
+
128
+ # 调用upgrade_office_file函数进行转换
129
+ temp_file = cls.to_dir(in_file, out_dir=out_file.parent, fmt=fmt)
130
+
131
+ # 将生成的临时文件重命名为out_file
132
+ os.rename(temp_file, out_file)
133
+
134
+ return out_file
135
+
136
+ @classmethod
137
+ def to_tempfile(cls, in_file, fmt=None, *, timestamp_stem=False, create_subdir=False):
138
+ """ 将文件转换为临时文件
139
+
140
+ :param timestamp_stem: 时间戳文件名
141
+ :param create_subdir: 是否在临时目录中创建新的子目录
142
+ """
143
+ if fmt is None:
144
+ fmt = infer_file_format(in_file)
145
+
146
+ root = Path(tempfile.gettempdir())
147
+ if create_subdir:
148
+ root2 = root / datetime.now().strftime('%Y%m%d.%H%M%S.%f')
149
+ root2.mkdir(parents=True, exist_ok=True)
150
+ root = root2
151
+
152
+ if timestamp_stem:
153
+ stem = datetime.now().strftime('%Y%m%d.%H%M%S.%f')
154
+ out_file = cls.to_file(in_file, out_file=root / f"{stem}.{fmt}", fmt=fmt)
155
+ else:
156
+ out_file = cls.to_dir(in_file, out_dir=root, fmt=fmt)
157
+
158
+ return out_file
@@ -979,7 +979,7 @@ class MultiProcessLauncher:
979
979
  def __init__(self):
980
980
  self.workers = []
981
981
 
982
- def add_process(self, cmd, name=None, **kwargs):
982
+ def add_process_cmd(self, cmd, name=None, **kwargs):
983
983
  if name is None:
984
984
  name = cmd.split()[0]
985
985
 
@@ -988,7 +988,7 @@ class MultiProcessLauncher:
988
988
  worker.update(kwargs)
989
989
  self.workers.append(worker)
990
990
 
991
- def add_python_module(self, module, args='', name=None):
991
+ def add_process_python_module(self, module, args='', name=None):
992
992
  """ 添加并启动一个Python模块作为后台进程。
993
993
 
994
994
  :param module: 要执行的Python模块名(python -m 后面的部分)
@@ -996,7 +996,7 @@ class MultiProcessLauncher:
996
996
  :param name: 进程的名称,默认为模块名
997
997
  """
998
998
  cmd = f'{sys.executable} -m {module} {args}'
999
- self.add_process(cmd, name=name)
999
+ self.add_process_cmd(cmd, name=name)
1000
1000
 
1001
1001
  def stop_all(self):
1002
1002
  """ 停止所有后台进程 """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.104
3
+ Version: 0.3.106
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -60,6 +60,7 @@ pyxllib/ext/autogui/virtualkey.py
60
60
  pyxllib/file/__init__.py
61
61
  pyxllib/file/docxlib.py
62
62
  pyxllib/file/gitlib.py
63
+ pyxllib/file/libreoffice.py
63
64
  pyxllib/file/movielib.py
64
65
  pyxllib/file/newbie.py
65
66
  pyxllib/file/onenotelib.py
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
30
30
 
31
31
  setup(
32
32
  name='pyxllib', # pip 安装时用的名字
33
- version='0.3.104', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
33
+ version='0.3.106', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
34
34
  author='code4101',
35
35
  author_email='877362867@qq.com',
36
36
  url='https://github.com/XLPRUtils/pyxllib',
@@ -1,67 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # @Author : 陈坤泽
4
- # @Email : 877362867@qq.com
5
- # @Date : 2024/04/12
6
-
7
- from pyxllib.prog.pupil import check_install_package
8
-
9
- check_install_package('DrissionPage')
10
-
11
- import re
12
- from urllib.parse import unquote
13
-
14
- from DrissionPage import ChromiumPage
15
-
16
-
17
- def get_latest_not_dev_tab(page=None):
18
- """ 开发工具本身也会算一个tab,这个函数返回最新的一个不是开发工具的tab """
19
- if page is None:
20
- page = ChromiumPage()
21
- tabs = page.get_tabs()
22
- for tab in tabs:
23
- if tab.url.startswith('devtools://'):
24
- continue
25
- return tab
26
-
27
-
28
- def set_input_text(input_ele, text):
29
- """ 因为input输入框可能原本就自带了内容,为了不重复输入,先清空再输入 """
30
- input_ele.clear()
31
- input_ele.input(text)
32
-
33
-
34
- def get_download_files(page=None):
35
- """ 获取下载列表
36
-
37
- :param search_name: 搜索文件名,输入该参数时,只会从上往下找到第一个匹配的文件
38
- 否则返回一个list结构,存储下载清单里的文件
39
- :return:
40
-
41
- todo 默认应该显示是不全的,有时间可以考虑往下滑动继续检索的功能
42
- """
43
- if page is None:
44
- page = ChromiumPage()
45
-
46
- files = []
47
- page2 = page.new_tab('chrome://downloads/')
48
- items = page2('tag:downloads-manager', timeout=1).sr('#mainContainer')('#downloadsList').eles('tag:downloads-item')
49
- for item in items:
50
- loc = unquote(item.sr('tag:img').attr('src'))
51
- file = re.search(r'path=(.+?)(&scale=\d+x)?$', loc).group(1)
52
-
53
- files.append({
54
- 'file': file,
55
- 'url': unquote(item.sr('#url').attr('href'))
56
- })
57
-
58
- page2.close()
59
-
60
- return files
61
-
62
-
63
- def search_download_file(file_name):
64
- files = get_download_files()
65
- for file in files:
66
- if file_name in file['file']:
67
- return file
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