pyxllib 0.3.111__tar.gz → 0.3.112__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 (347) hide show
  1. {pyxllib-0.3.111/pyxllib.egg-info → pyxllib-0.3.112}/PKG-INFO +1 -1
  2. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/stat.py +14 -0
  3. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/data/pglib.py +75 -12
  4. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/data/sqlite.py +12 -2
  5. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/charclasslib.py +11 -4
  6. pyxllib-0.3.112/pyxllib/text/jinjalib.py +32 -0
  7. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/newbie.py +12 -0
  8. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/xmllib.py +1 -8
  9. {pyxllib-0.3.111 → pyxllib-0.3.112/pyxllib.egg-info}/PKG-INFO +1 -1
  10. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib.egg-info/SOURCES.txt +1 -0
  11. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/gptlib.py +1 -13
  12. {pyxllib-0.3.111 → pyxllib-0.3.112}/setup.py +1 -1
  13. {pyxllib-0.3.111 → pyxllib-0.3.112}/LICENSE +0 -0
  14. {pyxllib-0.3.111 → pyxllib-0.3.112}/MANIFEST.in +0 -0
  15. {pyxllib-0.3.111 → pyxllib-0.3.112}/README.md +0 -0
  16. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/__init__.py +0 -0
  17. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/__init__.py +0 -0
  18. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/disjoint.py +0 -0
  19. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/geo.py +0 -0
  20. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/intervals.py +0 -0
  21. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/matcher.py +0 -0
  22. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/newbie.py +0 -0
  23. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/pupil.py +0 -0
  24. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/shapelylib.py +0 -0
  25. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/specialist.py +0 -0
  26. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/treelib.py +0 -0
  27. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/algo/unitlib.py +0 -0
  28. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/__init__.py +0 -0
  29. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/expert.py +0 -0
  30. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/imfile.py +0 -0
  31. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/imhash.py +0 -0
  32. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/pupil.py +0 -0
  33. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/rgbfmt.py +0 -0
  34. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/trackbartools.py +0 -0
  35. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/xlcvlib.py +0 -0
  36. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/cv/xlpillib.py +0 -0
  37. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/data/__init__.py +0 -0
  38. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/data/echarts.py +0 -0
  39. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/data/jsonlib.py +0 -0
  40. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/data/oss.py +0 -0
  41. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/data/sqllib.py +0 -0
  42. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/JLineViewer.py +0 -0
  43. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/__init__.py +0 -0
  44. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/autogui/__init__.py +0 -0
  45. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/autogui/autogui.py +0 -0
  46. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/autogui/virtualkey.py +0 -0
  47. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/demolib.py +0 -0
  48. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/drissionlib.py +0 -0
  49. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/kq5034lib.py +0 -0
  50. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/old.py +0 -0
  51. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/qt.py +0 -0
  52. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/robustprocfile.py +0 -0
  53. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/seleniumlib.py +0 -0
  54. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/tk.py +0 -0
  55. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/unixlib.py +0 -0
  56. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/utools.py +0 -0
  57. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/webhook.py +0 -0
  58. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/win32lib.py +0 -0
  59. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/ext/yuquelib.py +0 -0
  60. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/__init__.py +0 -0
  61. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/docxlib.py +0 -0
  62. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/gitlib.py +0 -0
  63. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/libreoffice.py +0 -0
  64. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/movielib.py +0 -0
  65. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/newbie.py +0 -0
  66. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/onenotelib.py +0 -0
  67. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/packlib/__init__.py +0 -0
  68. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/packlib/zipfile.py +0 -0
  69. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/pdflib.py +0 -0
  70. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/pupil.py +0 -0
  71. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/specialist/__init__.py +0 -0
  72. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/specialist/dirlib.py +0 -0
  73. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/specialist/download.py +0 -0
  74. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/specialist/filelib.py +0 -0
  75. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/file/xlsxlib.py +0 -0
  76. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/__init__.py +0 -0
  77. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/deprecatedlib.py +0 -0
  78. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/ipyexec.py +0 -0
  79. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/multiprocs.py +0 -0
  80. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/newbie.py +0 -0
  81. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/pupil.py +0 -0
  82. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/sitepackages.py +0 -0
  83. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/specialist/__init__.py +0 -0
  84. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/specialist/bc.py +0 -0
  85. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/specialist/browser.py +0 -0
  86. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/specialist/common.py +0 -0
  87. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/specialist/datetime.py +0 -0
  88. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/specialist/tictoc.py +0 -0
  89. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/specialist/xllog.py +0 -0
  90. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/prog/xlosenv.py +0 -0
  91. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/stdlib/__init__.py +0 -0
  92. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  93. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  94. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  95. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/__init__.py +0 -0
  96. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/ahocorasick.py +0 -0
  97. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/jiebalib.py +0 -0
  98. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/jscode.py +0 -0
  99. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/latex/__init__.py +0 -0
  100. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/levenshtein.py +0 -0
  101. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/nestenv.py +0 -0
  102. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/pupil/__init__.py +0 -0
  103. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/pupil/common.py +0 -0
  104. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/pupil/xlalign.py +0 -0
  105. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/pycode.py +0 -0
  106. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/specialist/__init__.py +0 -0
  107. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/specialist/common.py +0 -0
  108. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/specialist/ptag.py +0 -0
  109. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/spellchecker.py +0 -0
  110. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/text/vbacode.py +0 -0
  111. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/xl.py +0 -0
  112. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib/xlcv.py +0 -0
  113. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib.egg-info/dependency_links.txt +0 -0
  114. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib.egg-info/requires.txt +4 -4
  115. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxllib.egg-info/top_level.txt +0 -0
  116. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/__init__.py +0 -0
  117. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ai/__init__.py +0 -0
  118. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ai/clientlib.py +0 -0
  119. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ai/specialist.py +0 -0
  120. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ai/torch_app.py +0 -0
  121. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ai/xlpaddle.py +0 -0
  122. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ai/xltorch.py +0 -0
  123. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/__init__.py +0 -0
  124. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/coco.py +0 -0
  125. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/datacls.py +0 -0
  126. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/datasets.py +0 -0
  127. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/icdar/__init__.py +0 -0
  128. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/icdar/deteval.py +0 -0
  129. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/icdar/icdar2013.py +0 -0
  130. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/icdar/iou.py +0 -0
  131. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  132. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/imtextline.py +0 -0
  133. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/labelme.py +0 -0
  134. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/removeline.py +0 -0
  135. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/specialist.py +0 -0
  136. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/data/tiktokenlib.py +0 -0
  137. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/eval/__init__.py +0 -0
  138. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/paddleocr.py +0 -0
  139. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/__init__.py +0 -0
  140. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  141. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/__init__.py +0 -0
  142. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  143. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  144. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  145. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  146. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  147. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  148. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  149. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  150. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  151. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  152. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  153. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  154. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  155. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  156. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  157. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  158. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  159. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  160. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  161. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  162. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  163. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  164. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  165. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/__init__.py +0 -0
  166. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  167. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  168. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  169. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  170. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  171. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  172. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  173. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  174. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  175. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  176. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  177. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  178. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  179. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  180. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  181. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  182. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  183. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  184. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  185. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  186. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  187. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  188. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  189. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  190. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  191. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  192. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  193. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  194. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  195. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  196. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  197. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  198. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  199. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  200. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  201. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  202. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  203. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  204. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  205. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  206. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  207. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  208. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  209. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  210. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  211. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  212. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  213. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  214. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  215. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  216. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  217. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  218. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  219. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  220. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  221. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  222. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  223. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  224. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  225. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  226. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  227. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  228. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  229. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  230. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  231. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  232. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  233. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  234. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  235. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  236. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  237. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  238. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  239. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  240. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  241. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  242. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  243. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  244. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  245. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  246. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  247. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  248. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  249. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  250. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  251. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  252. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  253. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  254. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  255. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  256. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  257. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  258. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/__init__.py +0 -0
  259. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/eval.py +0 -0
  260. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/export_center.py +0 -0
  261. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/export_model.py +0 -0
  262. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  263. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  264. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  265. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  266. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  267. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  268. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  269. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  270. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  271. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  272. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  273. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  274. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/program.py +0 -0
  275. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  276. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/train.py +0 -0
  277. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  278. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  279. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/__init__.py +0 -0
  280. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  281. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  282. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  283. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  284. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  285. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  286. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  287. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  288. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  289. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  290. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  291. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  292. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  293. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  294. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  295. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  296. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  297. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  298. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  299. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  300. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  301. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  302. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  303. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  304. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  305. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  306. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  307. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  308. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  309. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  310. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  311. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  312. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  313. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  314. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  315. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  316. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  317. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  318. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  319. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  320. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  321. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  322. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  323. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/iou.py +0 -0
  324. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/logging.py +0 -0
  325. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/network.py +0 -0
  326. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  327. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/profiler.py +0 -0
  328. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/save_load.py +0 -0
  329. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/stats.py +0 -0
  330. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppocr/utils/utility.py +0 -0
  331. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/__init__.py +0 -0
  332. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/predict_system.py +0 -0
  333. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/__init__.py +0 -0
  334. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  335. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/matcher.py +0 -0
  336. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  337. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  338. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  339. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  340. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  341. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  342. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  343. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  344. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/ppstructure/utility.py +0 -0
  345. {pyxllib-0.3.111 → pyxllib-0.3.112}/pyxlpr/xlai.py +0 -0
  346. {pyxllib-0.3.111 → pyxllib-0.3.112}/requirements.txt +0 -0
  347. {pyxllib-0.3.111 → pyxllib-0.3.112}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.111
3
+ Version: 0.3.112
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -254,6 +254,7 @@ def xlpivot(df, index=None, columns=None, values=None):
254
254
  :param columns: 列划分方式
255
255
  :param values: 显示的值
256
256
  Callable[items, value]:输出一个函数
257
+ list[str]: 支持输入属性列表,表示显示原始值的意思。如果原始值不唯一,则逗号分开拼接后显示。但这种用法就不太算是传统意义的数据透视表了
257
258
  :return: 数据透视表的表格
258
259
 
259
260
  使用示例:
@@ -261,6 +262,8 @@ def xlpivot(df, index=None, columns=None, values=None):
261
262
  x = items.iloc[0]
262
263
  return f'{x["precision"]:.0f},{x["recall"]:.0f},{x["hmean"]:.2f},{x["fps"]}' # 返回显示的值
263
264
  >> df2 = xlpivot(df, ['model_type'], ['dataset', 'total_frame'], {'precision,recall,hmean,fps': func})
265
+
266
+ 注意技巧:如果要在分组后约束特定顺序,可以使用特殊前缀进行编号对齐
264
267
  """
265
268
 
266
269
  # 1 将分组的格式标准化
@@ -275,6 +278,17 @@ def xlpivot(df, index=None, columns=None, values=None):
275
278
  index_, columns_ = reset_groups(index), reset_groups(columns)
276
279
 
277
280
  # 2 目标值的格式标准化
281
+ def make_col_func(col):
282
+ def func(rows):
283
+ if len(rows):
284
+ return ', '.join(map(str, rows[col].values))
285
+ return ''
286
+
287
+ return func
288
+
289
+ if isinstance(values, (list, tuple)):
290
+ values = {v: make_col_func(v) for v in values}
291
+
278
292
  if callable(values):
279
293
  values_ = {'values': values}
280
294
  elif isinstance(values, dict):
@@ -41,7 +41,7 @@ from tqdm import tqdm
41
41
  import psycopg
42
42
  import psycopg.rows
43
43
 
44
- from pyxllib.prog.newbie import round_int
44
+ from pyxllib.prog.newbie import round_int, human_readable_number
45
45
  from pyxllib.prog.pupil import utc_now, utc_timestamp
46
46
  from pyxllib.prog.specialist import XlOsEnv
47
47
  from pyxllib.algo.pupil import ValuesStat2
@@ -62,12 +62,10 @@ class Connection(psycopg.Connection, SqlBase):
62
62
  """
63
63
  检索当前数据库的活动信息。
64
64
  """
65
- sql = """
66
- SELECT pid, datname, usename, state, query, age(now(), query_start) AS "query_age"
67
- FROM pg_stat_activity
68
- WHERE state = 'active'
69
- """
70
- return self.exec2dict(sql).fetchall()
65
+ sql = SqlBuilder('pg_stat_activity')
66
+ sql.select('pid', 'datname', 'usename', 'state', 'query', 'age(now(), query_start) AS "query_age"')
67
+ sql.where("state = 'active'")
68
+ return self.exec2dict(sql.build_select()).fetchall()
71
69
 
72
70
  def __2_表格(self):
73
71
  pass
@@ -147,9 +145,14 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
147
145
  # cur.close()
148
146
  return data
149
147
 
150
- def exec2dict_batch(self, sql, batch_size=1000, **kwargs):
148
+ def exec2dict_batch(self, sql, batch_size=1000, use_offset=None, **kwargs):
151
149
  """ 分批返回数据的版本
152
150
 
151
+ :param use_offset: 是否使用offset分页,会根据sql中是否含有where自动判断,但有时候最好明确指定以防错误
152
+ 如果外部sql每次操作,会改变数据库的情况,导致sql的where规则虽然没变,但是数据本身发生变化,则offset应该要关闭
153
+ 每次取对应的满足条件的数据即可
154
+ 这种情况,也需要本函数内部主动执行commit_all的
155
+ 否则,只是一种遍历查询,没有where或者where获取的数据情况是不会变化的,则要使用offset
153
156
  :return:
154
157
  第1个值,是一个迭代器,看起来仍然能一条一条返回,实际后台是按照batch_size打包获取的
155
158
  第2个值,是数据总数
@@ -157,6 +160,9 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
157
160
  if not isinstance(sql, SqlBuilder):
158
161
  raise ValueError('暂时只能搭配SQLBuilder使用')
159
162
 
163
+ if use_offset is None:
164
+ use_offset = not sql._where
165
+
160
166
  num = self.exec2one(sql.build_count())
161
167
  offset = 0
162
168
 
@@ -164,9 +170,12 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
164
170
  nonlocal offset
165
171
  while True:
166
172
  sql2 = sql.copy()
173
+ if not use_offset: # 如果不使用offset,那么缓存的sql操作需要全部提交,确保数据都更新后,再提取数据
174
+ self.commit_all()
167
175
  sql2.limit(batch_size, offset)
168
176
  rows = self.exec2dict(sql2.build_select(), **kwargs).fetchall()
169
- offset += batch_size
177
+ if use_offset:
178
+ offset += len(rows)
170
179
  if not rows:
171
180
  break
172
181
  yield from rows
@@ -340,10 +349,10 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
340
349
 
341
350
  return vs
342
351
 
343
- def export_jsonl(self, file_path, table_name, key_col=None, batch_size=1000):
352
+ def export_jsonl(self, file_path, table_name, key_col=None, batch_size=1000, print_mode=0):
344
353
  """ 将某个表导出为本地jsonl文件
345
354
 
346
- :param table_name: 表名
355
+ :param str|SqlBuilder table_name: 表名
347
356
  支持传入SqlBuilder对象,这样可以更灵活的控制导出的数据规则
348
357
  :param file_path: 导出的文件路径
349
358
  :param batch_size: 每次读取的行数和保存的行数
@@ -377,10 +386,64 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
377
386
  # 2 获取数据
378
387
  file = StreamJsonlWriter(file_path, batch_size=batch_size) # 流式存储
379
388
  rows, total = self.exec2dict_batch(sql, batch_size=batch_size)
380
- for row in tqdm(rows, total=total, desc=table_name):
389
+ for row in tqdm(rows, total=total, desc=f'从{table_name}表导出数据', disable=not print_mode):
381
390
  file.append_line(row)
382
391
  file.flush()
383
392
 
393
+ def check_db_tables_size(self, db_name=None):
394
+ """ 查看指定数据下所有表格的大小 """
395
+ from datetime import datetime
396
+ import pandas as pd
397
+
398
+ if db_name is None:
399
+ # 使用sql获取当前self所在数据库
400
+ db_name = self.exec2one("SELECT current_database()")
401
+
402
+ data = []
403
+ tables = self.exec2col("SELECT table_name FROM information_schema.tables WHERE table_schema='public'")
404
+ for table_name in tables:
405
+ row = {
406
+ 'database': db_name,
407
+ 'table_name': table_name,
408
+ }
409
+ sz = self.exec2one(f"SELECT pg_total_relation_size('public.{table_name}')")
410
+ if not sz:
411
+ continue
412
+ lines = self.exec2one(f"SELECT COUNT(*) FROM {table_name}")
413
+ row['size'], row['lines'] = sz, lines
414
+ row['readable_size'] = human_readable_number(sz, 'KB')
415
+ row['perline_size'] = human_readable_number(sz / lines, 'KB') if lines else -1
416
+ row['update_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
417
+ data.append(row)
418
+
419
+ df = pd.DataFrame.from_dict(data)
420
+ if len(df):
421
+ df.sort_values(['size'], ascending=False, inplace=True)
422
+ df.reset_index(drop=True, inplace=True)
423
+ return df
424
+
425
+ def check_multi_db_size(self, db_list):
426
+ """ 这个功能一般要用postgres账号,才有权限处理所有数据库 """
427
+ from datetime import datetime
428
+ import pandas as pd
429
+
430
+ data = []
431
+ for db in db_list:
432
+ row = {
433
+ 'name': db,
434
+ }
435
+ sz = self.exec2one(f"SELECT pg_database_size('{db}')")
436
+ row['size'] = sz
437
+ row['readable_size'] = human_readable_number(sz, 'KB')
438
+ row['update_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
439
+
440
+ data.append(row)
441
+
442
+ df = pd.DataFrame.from_dict(data)
443
+ df.sort_values(['size'], ascending=False, inplace=True)
444
+ df.reset_index(drop=True, inplace=True)
445
+ return df
446
+
384
447
 
385
448
  """
386
449
  【关于为什么XlprDb要和pglib合一个文件】
@@ -50,7 +50,13 @@ class SqlBuilder:
50
50
  return self
51
51
 
52
52
  def where(self, condition):
53
- self._where.append(condition)
53
+ if isinstance(condition, (list, tuple)):
54
+ self._where.extend(condition)
55
+ elif isinstance(condition, str):
56
+ self._where.append(condition)
57
+ else:
58
+ raise ValueError(f'不支持的where条件类型{type(condition)}')
59
+
54
60
  return self
55
61
 
56
62
  def where_in(self, column, values):
@@ -85,7 +91,7 @@ class SqlBuilder:
85
91
  self._offset = offset
86
92
  return self
87
93
 
88
- def __2_build_命令(self):
94
+ def __2_build_初级命令(self):
89
95
  pass
90
96
 
91
97
  def build_select(self, *columns):
@@ -124,7 +130,11 @@ class SqlBuilder:
124
130
  sql.append(f"WHERE {' AND '.join(self._where)}")
125
131
  return '\n'.join(sql)
126
132
 
133
+ def __3_build_中级命令(self):
134
+ pass
135
+
127
136
  def build_check_data_type(self, column):
137
+ """ 检查column的数据类型 """
128
138
  sql = SqlBuilder('information_schema.columns')
129
139
  sql.select(f"data_type")
130
140
  sql.where(f"table_name='{self.table}' AND column_name='{column}'")
@@ -2,6 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
  # @Author : 陈坤泽
4
4
  # @Email : 877362867@qq.com
5
+ # @Date : 2023/12/29
5
6
 
6
7
  """
7
8
  字符分类
@@ -67,7 +68,7 @@ def get_charclass_num(content):
67
68
  return ct2
68
69
 
69
70
 
70
- def get_charclass_rate(content):
71
+ def get_charclass_rate(content, round_digits=4):
71
72
  """ 检查字符类型分布数量 """
72
73
  ct = get_charclass_num(content)
73
74
 
@@ -80,12 +81,18 @@ def get_charclass_rate(content):
80
81
  ct2 = Counter()
81
82
  for k, v in ct.most_common():
82
83
  ct2[k] = v / total
84
+ if round_digits is not None:
85
+ ct2[k] = round(ct2[k], round_digits)
83
86
  return ct2
84
87
 
85
88
 
86
89
  def check_language_from_counter(ct):
87
- """ 检查语言类型 """
88
- # todo 这里的规则应该还可以再优化,以及不同的业务场景,这些规则应该也要再调整
90
+ """ 检查语言类型
91
+
92
+ todo 这里的规则应该还可以再优化,以及不同的业务场景,这些规则应该也要再调整
93
+ 这个比例最早是给表格设计的,表格很可能表头是中文,中间都是英文、数字数据,此时仍然归为中文
94
+ 但如果是一般性的文档,可能要提高中文的比例,才能视为中文文档
95
+ """
89
96
 
90
97
  if '繁体汉字' in ct:
91
98
  if safe_div(ct['繁体汉字'], ct['常用汉字']) > 0.1:
@@ -95,7 +102,7 @@ def check_language_from_counter(ct):
95
102
  return '中文'
96
103
 
97
104
  if '其他字符' in ct:
98
- if ct['其他字符'] / ct['字母'] > 0.1:
105
+ if safe_div(ct['其他字符'], ct['字母']) > 0.1:
99
106
  return '其他'
100
107
 
101
108
  if '字母' in ct:
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # @Author : 陈坤泽
4
+ # @Email : 877362867@qq.com
5
+ # @Date : 2024/05/26
6
+
7
+ from pyxllib.prog.pupil import check_install_package
8
+
9
+ # 一个xpath解析库
10
+ check_install_package('jinja2')
11
+
12
+ import jinja2
13
+ from jinja2 import Template, Environment
14
+
15
+ from pyxllib.file.specialist import XlPath
16
+
17
+
18
+ def set_template(s, *args, **kwargs):
19
+ """ todo 这个名字会不会太容易冲突了? """
20
+ return Template(s.strip(), *args, **kwargs)
21
+
22
+
23
+ def set_meta_template(s, meta_start='[[', meta_end=']]', **kwargs):
24
+ """ 支持预先用某些格式渲染后,再返回标准渲染模板 """
25
+ t = Template(s.strip(), variable_start_string=meta_start,
26
+ variable_end_string=meta_end).render(**kwargs)
27
+ return Template(t)
28
+
29
+
30
+ def get_jinja_template(name, **kwargs):
31
+ template = Environment(**kwargs).from_string((XlPath(__file__).parent / f'templates/{name}').read_text())
32
+ return template
@@ -286,3 +286,15 @@ def fold_dict(d, m=5):
286
286
  vals = [f"'{k}': {v}" for k, v in d.items()]
287
287
  line = [', '.join(vals[i:i + 5]) for i in range(0, len(vals), m)]
288
288
  return '{' + ',\n'.join(line) + '}'
289
+
290
+
291
+ def remove_prefix(original_string, prefix):
292
+ if original_string.startswith(prefix):
293
+ return original_string[len(prefix):]
294
+ return original_string
295
+
296
+
297
+ def remove_suffix(original_string, suffix):
298
+ if original_string.endswith(suffix):
299
+ return original_string[:-len(suffix)]
300
+ return original_string
@@ -32,6 +32,7 @@ from pyxllib.algo.pupil import SearchBase
32
32
  from pyxllib.text.newbie import xldictstr
33
33
  from pyxllib.text.pupil import shorten, ensure_gbk, BookContents, strwidth, grp_chinese_char
34
34
  from pyxllib.file.specialist import File, Dir, get_etag
35
+ from pyxllib.text.jinjalib import get_jinja_template
35
36
 
36
37
 
37
38
  class XlBs4Tag(bs4.element.Tag):
@@ -670,14 +671,6 @@ class HtmlParser:
670
671
  getattr(self, method)(x)
671
672
 
672
673
 
673
- def get_jinja_template(name, **kwargs):
674
- from jinja2 import Environment
675
- from pyxllib.file.specialist import XlPath
676
-
677
- template = Environment(**kwargs).from_string((XlPath(__file__).parent / f'templates/{name}').read_text())
678
- return template
679
-
680
-
681
674
  def concat_htmlbody(ls):
682
675
  """ 对多份网页内容中的body进行拼接
683
676
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.111
3
+ Version: 0.3.112
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -96,6 +96,7 @@ pyxllib/text/__init__.py
96
96
  pyxllib/text/ahocorasick.py
97
97
  pyxllib/text/charclasslib.py
98
98
  pyxllib/text/jiebalib.py
99
+ pyxllib/text/jinjalib.py
99
100
  pyxllib/text/jscode.py
100
101
  pyxllib/text/levenshtein.py
101
102
  pyxllib/text/nestenv.py
@@ -25,7 +25,6 @@ import io
25
25
  import logging
26
26
  import warnings
27
27
 
28
- from jinja2 import Template
29
28
  from openpyxl import Workbook
30
29
  import pandas as pd
31
30
  import requests
@@ -41,6 +40,7 @@ from pyxllib.prog.specialist import browser, TicToc
41
40
  from pyxllib.algo.pupil import ValuesStat
42
41
  from pyxllib.file.specialist import XlPath, JsonlDataFile, JsonlDataDir, TwinDirs, ensure_localdir
43
42
  from pyxllib.file.xlsxlib import extract_workbook_summary
43
+ from pyxllib.text.jinjalib import set_template, set_meta_template
44
44
 
45
45
 
46
46
  def __1_生成提问数据():
@@ -181,18 +181,6 @@ def check_conversation_lengths(all_texts, n_values=(4, 4),
181
181
  # 比率越大,代表越接近中文场景,汉字越多,要注意len的控制不要让token某些场合超出长度
182
182
 
183
183
 
184
- def set_template(s, *args, **kwargs):
185
- """ todo 这个名字会不会太容易冲突了? """
186
- return Template(s.strip(), *args, **kwargs)
187
-
188
-
189
- def set_meta_template(s, meta_start='[[', meta_end=']]', **kwargs):
190
- """ 支持预先用某些格式渲染后,再返回标准渲染模板 """
191
- t = Template(s.strip(), variable_start_string=meta_start,
192
- variable_end_string=meta_end).render(**kwargs)
193
- return Template(t)
194
-
195
-
196
184
  class StyleParser:
197
185
  def __init__(self, text):
198
186
  # 使用正则表达式拆分文本,并获取权重和风格
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
30
30
 
31
31
  setup(
32
32
  name='pyxllib', # pip 安装时用的名字
33
- version='0.3.111', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
33
+ version='0.3.112', # 当前版本,每次更新上传到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