pyxllib 0.3.92__tar.gz → 0.3.93__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 (340) hide show
  1. {pyxllib-0.3.92/pyxllib.egg-info → pyxllib-0.3.93}/PKG-INFO +1 -1
  2. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/xlsxlib.py +59 -33
  3. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/pupil.py +6 -4
  4. {pyxllib-0.3.92 → pyxllib-0.3.93/pyxllib.egg-info}/PKG-INFO +1 -1
  5. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/gptlib.py +1 -1
  6. {pyxllib-0.3.92 → pyxllib-0.3.93}/setup.py +1 -1
  7. {pyxllib-0.3.92 → pyxllib-0.3.93}/LICENSE +0 -0
  8. {pyxllib-0.3.92 → pyxllib-0.3.93}/MANIFEST.in +0 -0
  9. {pyxllib-0.3.92 → pyxllib-0.3.93}/README.md +0 -0
  10. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/__init__.py +0 -0
  11. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/__init__.py +0 -0
  12. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/disjoint.py +0 -0
  13. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/geo.py +0 -0
  14. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/intervals.py +0 -0
  15. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/matcher.py +0 -0
  16. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/newbie.py +0 -0
  17. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/pupil.py +0 -0
  18. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/shapelylib.py +0 -0
  19. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/specialist.py +0 -0
  20. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/stat.py +0 -0
  21. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/treelib.py +0 -0
  22. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/unitlib.py +0 -0
  23. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/__init__.py +0 -0
  24. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/expert.py +0 -0
  25. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/imfile.py +0 -0
  26. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/imhash.py +0 -0
  27. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/pupil.py +0 -0
  28. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/rgbfmt.py +0 -0
  29. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/trackbartools.py +0 -0
  30. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/xlcvlib.py +0 -0
  31. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/xlpillib.py +0 -0
  32. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/__init__.py +0 -0
  33. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/echarts.py +0 -0
  34. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/oss.py +0 -0
  35. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/pglib.py +0 -0
  36. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/sqlite.py +0 -0
  37. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/sqllib.py +0 -0
  38. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/JLineViewer.py +0 -0
  39. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/__init__.py +0 -0
  40. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/autogui/__init__.py +0 -0
  41. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/autogui/autogui.py +0 -0
  42. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/autogui/virtualkey.py +0 -0
  43. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/demolib.py +0 -0
  44. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/kq5034lib.py +0 -0
  45. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/old.py +0 -0
  46. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/qt.py +0 -0
  47. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/seleniumlib.py +0 -0
  48. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/tk.py +0 -0
  49. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/unixlib.py +0 -0
  50. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/utools.py +0 -0
  51. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/webhook.py +0 -0
  52. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/win32lib.py +0 -0
  53. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/yuquelib.py +0 -0
  54. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/__init__.py +0 -0
  55. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/docxlib.py +0 -0
  56. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/gitlib.py +0 -0
  57. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/movielib.py +0 -0
  58. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/newbie.py +0 -0
  59. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/onenotelib.py +0 -0
  60. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/packlib/__init__.py +0 -0
  61. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/packlib/zipfile.py +0 -0
  62. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/pdflib.py +0 -0
  63. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/pupil.py +0 -0
  64. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/specialist/__init__.py +0 -0
  65. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/specialist/dirlib.py +0 -0
  66. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/specialist/download.py +0 -0
  67. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/specialist/filelib.py +0 -0
  68. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/__init__.py +0 -0
  69. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/deprecatedlib.py +0 -0
  70. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/ipyexec.py +0 -0
  71. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/newbie.py +0 -0
  72. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/sitepackages.py +0 -0
  73. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/__init__.py +0 -0
  74. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/bc.py +0 -0
  75. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/browser.py +0 -0
  76. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/common.py +0 -0
  77. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/datetime.py +0 -0
  78. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/tictoc.py +0 -0
  79. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/xllog.py +0 -0
  80. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/xlosenv.py +0 -0
  81. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/stdlib/__init__.py +0 -0
  82. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  83. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  84. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  85. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/__init__.py +0 -0
  86. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/ahocorasick.py +0 -0
  87. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/charclasslib.py +0 -0
  88. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/jiebalib.py +0 -0
  89. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/jscode.py +0 -0
  90. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/latex/__init__.py +0 -0
  91. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/levenshtein.py +0 -0
  92. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/nestenv.py +0 -0
  93. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/newbie.py +0 -0
  94. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/pupil/__init__.py +0 -0
  95. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/pupil/common.py +0 -0
  96. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/pupil/xlalign.py +0 -0
  97. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/pycode.py +0 -0
  98. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/specialist/__init__.py +0 -0
  99. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/specialist/common.py +0 -0
  100. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/specialist/ptag.py +0 -0
  101. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/spellchecker.py +0 -0
  102. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/vbacode.py +0 -0
  103. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/xmllib.py +0 -0
  104. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/xl.py +0 -0
  105. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/xlcv.py +0 -0
  106. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib.egg-info/SOURCES.txt +0 -0
  107. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib.egg-info/dependency_links.txt +0 -0
  108. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib.egg-info/requires.txt +4 -4
  109. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib.egg-info/top_level.txt +0 -0
  110. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/__init__.py +0 -0
  111. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/__init__.py +0 -0
  112. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/clientlib.py +0 -0
  113. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/specialist.py +0 -0
  114. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/torch_app.py +0 -0
  115. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/xlpaddle.py +0 -0
  116. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/xltorch.py +0 -0
  117. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/__init__.py +0 -0
  118. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/coco.py +0 -0
  119. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/datacls.py +0 -0
  120. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/datasets.py +0 -0
  121. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/__init__.py +0 -0
  122. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/deteval.py +0 -0
  123. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/icdar2013.py +0 -0
  124. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/iou.py +0 -0
  125. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  126. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/imtextline.py +0 -0
  127. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/labelme.py +0 -0
  128. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/removeline.py +0 -0
  129. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/specialist.py +0 -0
  130. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/eval/__init__.py +0 -0
  131. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/paddleocr.py +0 -0
  132. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/__init__.py +0 -0
  133. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  134. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/__init__.py +0 -0
  135. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  136. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  137. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  138. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  139. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  140. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  141. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  142. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  143. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  144. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  145. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  146. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  147. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  148. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  149. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  150. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  151. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  152. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  153. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  154. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  155. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  156. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  157. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  158. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/__init__.py +0 -0
  159. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  160. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  161. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  162. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  163. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  164. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  165. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  166. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  167. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  168. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  169. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  170. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  171. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  172. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  173. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  174. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  175. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  176. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  177. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  178. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  179. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  180. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  181. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  182. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  183. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  184. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  185. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  186. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  187. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  188. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  189. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  190. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  191. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  192. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  193. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  194. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  195. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  196. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  197. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  198. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  199. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  200. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  201. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  202. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  203. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  204. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  205. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  206. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  207. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  208. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  209. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  210. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  211. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  212. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  213. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  214. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  215. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  216. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  217. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  218. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  219. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  220. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  221. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  222. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  223. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  224. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  225. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  226. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  227. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  228. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  229. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  230. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  231. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  232. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  233. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  234. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  235. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  236. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  237. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  238. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  239. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  240. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  241. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  242. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  243. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  244. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  245. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  246. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  247. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  248. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  249. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  250. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  251. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/__init__.py +0 -0
  252. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/eval.py +0 -0
  253. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/export_center.py +0 -0
  254. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/export_model.py +0 -0
  255. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  256. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  257. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  258. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  259. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  260. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  261. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  262. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  263. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  264. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  265. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  266. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  267. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/program.py +0 -0
  268. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  269. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/train.py +0 -0
  270. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  271. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  272. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/__init__.py +0 -0
  273. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  274. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  275. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  276. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  277. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  278. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  279. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  280. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  281. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  282. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  283. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  284. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  285. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  286. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  287. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  288. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  289. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  290. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  291. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  292. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  293. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  294. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  295. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  296. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  297. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  298. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  299. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  300. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  301. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  302. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  303. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  304. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  305. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  306. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  307. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  308. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  309. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  310. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  311. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  312. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  313. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  314. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  315. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  316. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/iou.py +0 -0
  317. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/logging.py +0 -0
  318. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/network.py +0 -0
  319. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  320. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/profiler.py +0 -0
  321. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/save_load.py +0 -0
  322. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/stats.py +0 -0
  323. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/utility.py +0 -0
  324. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/__init__.py +0 -0
  325. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/predict_system.py +0 -0
  326. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/__init__.py +0 -0
  327. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  328. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/matcher.py +0 -0
  329. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  330. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  331. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  332. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  333. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  334. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  335. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  336. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  337. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/utility.py +0 -0
  338. {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/xlai.py +0 -0
  339. {pyxllib-0.3.92 → pyxllib-0.3.93}/requirements.txt +0 -0
  340. {pyxllib-0.3.92 → pyxllib-0.3.93}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.92
3
+ Version: 0.3.93
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -117,7 +117,7 @@ def is_valid_excel_address(address):
117
117
  return is_valid_excel_cell(address)
118
118
 
119
119
 
120
- @run_once('str')
120
+ @run_once('str', debug=True)
121
121
  def xlfmt2pyfmt_date(xl_fmt):
122
122
  """ 日期的渲染操作
123
123
 
@@ -213,7 +213,7 @@ def xlfmt2pyfmt_time(xl_fmt):
213
213
  return ':'.join(components)
214
214
 
215
215
 
216
- @run_once('str')
216
+ # @run_once('str')
217
217
  def xlfmt2pyfmt_datetime(xl_fmt):
218
218
  """ 主要是针对日期、时间的渲染操作
219
219
 
@@ -226,12 +226,6 @@ def xlfmt2pyfmt_datetime(xl_fmt):
226
226
  return py_fmt
227
227
 
228
228
 
229
- @run_once('str')
230
- def xlfmt2pyfmt(xl_fmt):
231
- """ 主要是针对日期、时间的渲染操作 """
232
- return xl_fmt
233
-
234
-
235
229
  def xl_render_value(x, xl_fmt):
236
230
  """ 得到单元格简单渲染后的效果
237
231
  py里不可能对excel的所有格式进行全覆盖,只是对场景格式进行处理
@@ -1005,9 +999,14 @@ class XlWorksheet(openpyxl.worksheet.worksheet.Worksheet):
1005
999
  """
1006
1000
  if not hasattr(self, 'search_cache'):
1007
1001
  self.search_cache = {}
1002
+
1003
+ if isinstance(pattern, list):
1004
+ pattern = tuple(pattern)
1005
+
1008
1006
  key = (pattern, min_row, max_row, min_col, max_col, order, direction)
1009
1007
 
1010
1008
  def get_search_core():
1009
+ nonlocal pattern
1011
1010
  # 1 定界
1012
1011
  x1, x2 = max(min_row or 1, 1), min(max_row or self.max_row, self.max_row)
1013
1012
  y1, y2 = max(min_col or 1, 1), min(max_col or self.max_column, self.max_column)
@@ -1016,7 +1015,7 @@ class XlWorksheet(openpyxl.worksheet.worksheet.Worksheet):
1016
1015
  if isinstance(pattern, datetime.date):
1017
1016
  pattern = f'^{(pattern - datetime.date(1899, 12, 30)).days}$'
1018
1017
 
1019
- if isinstance(pattern, (list, tuple)):
1018
+ if isinstance(pattern, tuple):
1020
1019
  cel = None
1021
1020
  for p in pattern:
1022
1021
  cel = self.search(p, x1, x2, y1, y2, order)
@@ -2385,7 +2384,6 @@ def extract_workbook_summary2(file_path, *,
2385
2384
 
2386
2385
  # 1 读取文件wb
2387
2386
  def read_file_by_type():
2388
- nonlocal load_time
2389
2387
  nonlocal load_time
2390
2388
  suffix = file_path.suffix.lower()
2391
2389
  start_time = time.time()
@@ -2408,7 +2406,10 @@ def extract_workbook_summary2(file_path, *,
2408
2406
  res['fileName'] = file_path.name
2409
2407
  wb = read_file_by_type()
2410
2408
  if wb is None: # 不支持的文件类型,不报错,只是返回最基本的文件名信息
2411
- return res
2409
+ if return_mode == 1:
2410
+ return res, load_time
2411
+ else:
2412
+ return res
2412
2413
 
2413
2414
  # 2 提取摘要
2414
2415
  summary2 = wb.extract_summary2()
@@ -2474,6 +2475,12 @@ def extract_workbook_summary2plus(file_path, **kwargs):
2474
2475
  class WorkbookSummary3:
2475
2476
  """ 计算summary3及衍生版本需要的一些功能组件 """
2476
2477
 
2478
+ @classmethod
2479
+ def count_length(cls, text):
2480
+ if not isinstance(text, str):
2481
+ text = json.dumps(text, ensure_ascii=False, default=str)
2482
+ return len(text)
2483
+
2477
2484
  @classmethod
2478
2485
  def reduce1_delete_empty_cell(cls, summary3):
2479
2486
  """ 删除空单元格 """
@@ -2503,7 +2510,7 @@ class WorkbookSummary3:
2503
2510
 
2504
2511
  # 如果未提供当前摘要长度,则计算之
2505
2512
  if cur_summary_len is None:
2506
- cur_summary_len = len(json.dumps(summary3, ensure_ascii=False))
2513
+ cur_summary_len = cls.count_length(summary3)
2507
2514
 
2508
2515
  # 1. 计算基准单元格长度
2509
2516
  total_cells_num = sum(len(st['cells']) + 5 for st in summary3['sheets'])
@@ -2534,7 +2541,7 @@ class WorkbookSummary3:
2534
2541
  @classmethod
2535
2542
  def reduce3_fold_rows(cls, summary3, summary_limit_len, *, cur_summary_len=None):
2536
2543
  if cur_summary_len is None:
2537
- cur_summary_len = len(json.dumps(summary3, ensure_ascii=False))
2544
+ cur_summary_len = cls.count_length(summary3)
2538
2545
 
2539
2546
  # 每个sheet本身其他摘要,按照5个单元格估算
2540
2547
  total_cells_num = sum([(len(st['cells']) + 5) for st in summary3['sheets']])
@@ -2610,7 +2617,7 @@ class WorkbookSummary3:
2610
2617
  @classmethod
2611
2618
  def reduce4_truncate_cells(cls, y, summary_limit_len, *, cur_summary_len=None):
2612
2619
  if cur_summary_len is None:
2613
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2620
+ cur_summary_len = cls.count_length(y)
2614
2621
 
2615
2622
  # 1 预计要删除单元格数
2616
2623
  sheet_cells_num = [len(st['cells']) for st in y['sheets']]
@@ -2624,14 +2631,14 @@ class WorkbookSummary3:
2624
2631
  if total_cells_num < target_reduce_cells_num:
2625
2632
  for st in y['sheets']:
2626
2633
  st['cells'] = {}
2627
- return len(json.dumps(y, ensure_ascii=False))
2634
+ return cls.count_length(y)
2628
2635
 
2629
2636
  # 3 否则每张表按照比例删单元格,只保留前面部分的单元格
2630
2637
  left_rate = 1 - target_reduce_cells_num / total_cells_num
2631
2638
  while True:
2632
2639
  for i, st in enumerate(y['sheets']):
2633
2640
  st['cells'] = dict(islice(st['cells'].items(), int(left_rate * sheet_cells_num[i])))
2634
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2641
+ cur_summary_len = cls.count_length(y)
2635
2642
  if cur_summary_len <= summary_limit_len:
2636
2643
  return cur_summary_len
2637
2644
  if left_rate * total_cells_num < 1:
@@ -2645,7 +2652,7 @@ class WorkbookSummary3:
2645
2652
  def reduce5_truncate_sheets(cls, y, summary_limit_len, *, cur_summary_len=None):
2646
2653
  """ 计算平均每张表的长度,保留前面部分的表格 """
2647
2654
  if cur_summary_len is None:
2648
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2655
+ cur_summary_len = cls.count_length(y)
2649
2656
 
2650
2657
  n = len(y['sheets'])
2651
2658
  avg_sheet_len = cur_summary_len / n
@@ -2653,7 +2660,7 @@ class WorkbookSummary3:
2653
2660
  y['sheets'] = y['sheets'][:n - target_reduce_sheet_num]
2654
2661
 
2655
2662
  while y['sheets']:
2656
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2663
+ cur_summary_len = cls.count_length(y)
2657
2664
  if cur_summary_len <= summary_limit_len:
2658
2665
  return cur_summary_len
2659
2666
  y['sheets'] = y['sheets'][:-1] # 依次尝试删除最后一张表格的详细信息
@@ -2672,13 +2679,13 @@ class WorkbookSummary3:
2672
2679
  ]
2673
2680
 
2674
2681
  # 0 摘要本来就不大
2675
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2682
+ cur_summary_len = cls.count_length(y)
2676
2683
  if cur_summary_len <= summary_limit_len:
2677
2684
  return y
2678
2685
 
2679
2686
  # 1 删除空单元格
2680
2687
  cls.reduce1_delete_empty_cell(y)
2681
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2688
+ cur_summary_len = cls.count_length(y)
2682
2689
  if cur_summary_len <= summary_limit_len:
2683
2690
  y['mode'] = ', '.join(mode_tags[:1])
2684
2691
  return y
@@ -2691,7 +2698,7 @@ class WorkbookSummary3:
2691
2698
 
2692
2699
  # 3 同构数据,省略显示(有大量相同行数据,折叠省略表达)
2693
2700
  cls.reduce3_fold_rows(y, summary_limit_len, cur_summary_len=cur_summary_len)
2694
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2701
+ cur_summary_len = cls.count_length(y)
2695
2702
  if cur_summary_len <= summary_limit_len:
2696
2703
  y['mode'] = ', '.join(mode_tags[:3])
2697
2704
  return y
@@ -2735,7 +2742,7 @@ class WorkbookSummary3:
2735
2742
  :param active_sheet_weight: 当前活动表格被删除的权重,0.5表示按比例被删除的量只有其他表格的一半
2736
2743
  """
2737
2744
  if cur_summary_len is None:
2738
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2745
+ cur_summary_len = cls.count_length(y)
2739
2746
 
2740
2747
  active_sheet = y['ActiveSheet']
2741
2748
 
@@ -2765,7 +2772,7 @@ class WorkbookSummary3:
2765
2772
  if total_cells_num < target_reduce_cells_num:
2766
2773
  for st in y['sheets']:
2767
2774
  st['cells'] = {}
2768
- return len(json.dumps(y, ensure_ascii=False))
2775
+ return cls.count_length(y)
2769
2776
 
2770
2777
  # 4 否则每张表按照比例删单元格,只保留前面部分的单元格
2771
2778
  left_rate = 1 - r # 原始保留比例
@@ -2777,7 +2784,7 @@ class WorkbookSummary3:
2777
2784
  else:
2778
2785
  # 其他sheet按照w2权重删除单元格
2779
2786
  st['cells'] = dict(islice(st['cells'].items(), int(left_rate * w2 * sheet_cells_num[i])))
2780
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2787
+ cur_summary_len = cls.count_length(y)
2781
2788
  if cur_summary_len <= summary_limit_len:
2782
2789
  return cur_summary_len
2783
2790
  if left_rate * total_cells_num < 1:
@@ -2791,7 +2798,7 @@ class WorkbookSummary3:
2791
2798
  def reduce5b(cls, y, summary_limit_len, *, cur_summary_len=None):
2792
2799
  """ 计算平均每张表的长度,保留前面部分的表格 """
2793
2800
  if cur_summary_len is None:
2794
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2801
+ cur_summary_len = cls.count_length(y)
2795
2802
 
2796
2803
  n = len(y['sheets'])
2797
2804
  active_sheet_name = y['ActiveSheet']
@@ -2801,7 +2808,7 @@ class WorkbookSummary3:
2801
2808
  # y['sheets'] = y['sheets'][:n - target_reduce_sheet_num]
2802
2809
 
2803
2810
  while y['sheets']:
2804
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2811
+ cur_summary_len = cls.count_length(y)
2805
2812
  if cur_summary_len <= summary_limit_len:
2806
2813
  return cur_summary_len
2807
2814
 
@@ -2830,13 +2837,13 @@ class WorkbookSummary3:
2830
2837
  ]
2831
2838
 
2832
2839
  # 0 摘要本来就不大
2833
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2840
+ cur_summary_len = cls.count_length(y)
2834
2841
  if cur_summary_len <= summary_limit_len:
2835
2842
  return y
2836
2843
 
2837
2844
  # 1 删除空单元格
2838
2845
  cls.reduce1_delete_empty_cell(y)
2839
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2846
+ cur_summary_len = cls.count_length(y)
2840
2847
  if cur_summary_len <= summary_limit_len:
2841
2848
  y['mode'] = ', '.join(mode_tags[:1])
2842
2849
  return y
@@ -2849,7 +2856,7 @@ class WorkbookSummary3:
2849
2856
 
2850
2857
  # 3 同构数据,省略显示(有大量相同行数据,折叠省略表达)
2851
2858
  cls.reduce3_fold_rows(y, summary_limit_len, cur_summary_len=cur_summary_len)
2852
- cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2859
+ cur_summary_len = cls.count_length(y)
2853
2860
  if cur_summary_len <= summary_limit_len:
2854
2861
  y['mode'] = ', '.join(mode_tags[:3])
2855
2862
  return y
@@ -2872,9 +2879,10 @@ class WorkbookSummary3:
2872
2879
  'sheets': x['sheets'],
2873
2880
  'mode': 'Complete information',
2874
2881
  'ActiveSheet': x['ActiveSheet'], # 当期激活的工作表
2875
- # 最多截取250个字符。(一般情况下这个很小的,只是在很极端情况,比如离散选中了非常多区域,这个可能就会太长
2876
- 'Selection': x['Selection'][:250],
2877
2882
  }
2883
+ if 'Selection' in x:
2884
+ # 最多截取250个字符。(一般情况下这个很小的,只是在很极端情况,比如离散选中了非常多区域,这个可能就会太长
2885
+ y['Selection'] = x['Selection'][:250]
2878
2886
 
2879
2887
  # 处理前确保下cells字段存在,避免后续很多处理过程要特判
2880
2888
  for st in y['sheets']:
@@ -2891,6 +2899,17 @@ class WorkbookSummary3:
2891
2899
  return y
2892
2900
 
2893
2901
 
2902
+ class WorkbookSummary3plus(WorkbookSummary3):
2903
+ """ 标准的token计算方式,不过暂不打算实装使用 """
2904
+
2905
+ @classmethod
2906
+ def count_length(cls, text):
2907
+ from pyxlpr.data.gptlib import Tokenizer
2908
+ if not isinstance(text, str):
2909
+ text = json.dumps(text, ensure_ascii=False, default=str)
2910
+ return Tokenizer.count_tokens(text)
2911
+
2912
+
2894
2913
  def extract_workbook_summary3(file_path, summary_limit_len=4000, **kwargs):
2895
2914
  """ 增加了全局ratio的计算 """
2896
2915
  data = extract_workbook_summary2(file_path, **kwargs)
@@ -2902,15 +2921,19 @@ def extract_workbook_summary3(file_path, summary_limit_len=4000, **kwargs):
2902
2921
 
2903
2922
  def extract_workbook_summary3b(file_path,
2904
2923
  summary_limit_len=4000,
2905
- timeout_seconds=60,
2924
+ timeout_seconds=10,
2906
2925
  return_mode=0,
2907
2926
  debug=False,
2927
+ len_mode=0,
2908
2928
  **kwargs):
2909
2929
  """
2910
2930
 
2911
2931
  :param summary_limit_len: 摘要长度限制
2912
2932
  :param timeout_seconds: 超时限制
2913
2933
  :param return_mode: 返回模式,0表示只返回摘要,1表示返回摘要和耗时
2934
+ :param len_mode:
2935
+ 0, 使用len作为token长度评估
2936
+ 1, 使用模型评估实际token长度
2914
2937
  :param kwargs: 其他是summary2读取文件的时候的参数,其实都不太关键,一般不用特地设置
2915
2938
  """
2916
2939
  res = {}
@@ -2924,7 +2947,10 @@ def extract_workbook_summary3b(file_path,
2924
2947
  # res = convert_to_json_compatible(res)
2925
2948
  summary2_time = time.time() - start_time - load_time
2926
2949
  start_time = time.time()
2927
- res = WorkbookSummary3.summary2_to_summary3b(res, summary_limit_len)
2950
+ if len_mode == 1:
2951
+ res = WorkbookSummary3plus.summary2_to_summary3b(res, summary_limit_len)
2952
+ else:
2953
+ res = WorkbookSummary3.summary2_to_summary3b(res, summary_limit_len)
2928
2954
  summary3_time = time.time() - start_time
2929
2955
  except TimeoutError as e:
2930
2956
  if debug:
@@ -405,7 +405,7 @@ def check_install_package(package, speccal_install_name=None, *, user=False):
405
405
  subprocess.check_call(cmds)
406
406
 
407
407
 
408
- def run_once(distinct_mode=0, *, limit=1):
408
+ def run_once(distinct_mode=0, *, limit=1, debug=False):
409
409
  """ 装饰器,装饰的函数在一次程序里其实只会运行一次
410
410
 
411
411
  :param int|str distinct_mode:
@@ -449,6 +449,7 @@ def run_once(distinct_mode=0, *, limit=1):
449
449
  if x[0] < limit:
450
450
  res = func(*args, **kwargs)
451
451
  x = counter[tag] = [x[0] + 1, res]
452
+
452
453
  return x[1]
453
454
 
454
455
  return wrapper
@@ -924,9 +925,10 @@ class OutputLogger(logging.Logger):
924
925
  '%Y-%m-%d %H:%M:%S')
925
926
 
926
927
  # 提前重置为空文件
927
- if log_file is not None and log_mode == 'w':
928
- with open(log_file, log_mode) as f:
929
- f.write('')
928
+ if log_file is not None:
929
+ if not os.path.isfile(log_file) or log_mode == 'w':
930
+ with open(log_file, 'w', encoding='utf8') as f:
931
+ f.write('')
930
932
 
931
933
  # 创建文件日志处理器
932
934
  if log_file:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.92
3
+ Version: 0.3.93
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -32,7 +32,7 @@ import requests
32
32
  from tqdm import tqdm
33
33
 
34
34
  try:
35
- from transformers import AutoTokenizer
35
+ from transformers import AutoTokenizer, GPT2TokenizerFast
36
36
  except ModuleNotFoundError:
37
37
  pass
38
38
 
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
30
30
 
31
31
  setup(
32
32
  name='pyxllib', # pip 安装时用的名字
33
- version='0.3.92', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
33
+ version='0.3.93', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
34
34
  author='code4101',
35
35
  author_email='877362867@qq.com',
36
36
  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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes