pyxllib 0.3.109__tar.gz → 0.3.110__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.109/pyxllib.egg-info → pyxllib-0.3.110}/PKG-INFO +1 -1
  2. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/pupil.py +29 -14
  3. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/data/pglib.py +17 -17
  4. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/data/sqlite.py +22 -3
  5. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/kq5034lib.py +1 -1
  6. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/specialist/filelib.py +2 -2
  7. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/specialist/bc.py +5 -2
  8. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/specialist/browser.py +8 -2
  9. {pyxllib-0.3.109 → pyxllib-0.3.110/pyxllib.egg-info}/PKG-INFO +1 -1
  10. {pyxllib-0.3.109 → pyxllib-0.3.110}/setup.py +1 -1
  11. {pyxllib-0.3.109 → pyxllib-0.3.110}/LICENSE +0 -0
  12. {pyxllib-0.3.109 → pyxllib-0.3.110}/MANIFEST.in +0 -0
  13. {pyxllib-0.3.109 → pyxllib-0.3.110}/README.md +0 -0
  14. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/__init__.py +0 -0
  15. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/__init__.py +0 -0
  16. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/disjoint.py +0 -0
  17. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/geo.py +0 -0
  18. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/intervals.py +0 -0
  19. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/matcher.py +0 -0
  20. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/newbie.py +0 -0
  21. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/shapelylib.py +0 -0
  22. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/specialist.py +0 -0
  23. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/stat.py +0 -0
  24. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/treelib.py +0 -0
  25. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/algo/unitlib.py +0 -0
  26. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/__init__.py +0 -0
  27. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/expert.py +0 -0
  28. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/imfile.py +0 -0
  29. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/imhash.py +0 -0
  30. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/pupil.py +0 -0
  31. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/rgbfmt.py +0 -0
  32. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/trackbartools.py +0 -0
  33. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/xlcvlib.py +0 -0
  34. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/cv/xlpillib.py +0 -0
  35. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/data/__init__.py +0 -0
  36. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/data/echarts.py +0 -0
  37. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/data/jsonlib.py +0 -0
  38. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/data/oss.py +0 -0
  39. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/data/sqllib.py +0 -0
  40. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/JLineViewer.py +0 -0
  41. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/__init__.py +0 -0
  42. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/autogui/__init__.py +0 -0
  43. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/autogui/autogui.py +0 -0
  44. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/autogui/virtualkey.py +0 -0
  45. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/demolib.py +0 -0
  46. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/drissionlib.py +0 -0
  47. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/old.py +0 -0
  48. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/qt.py +0 -0
  49. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/robustprocfile.py +0 -0
  50. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/seleniumlib.py +0 -0
  51. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/tk.py +0 -0
  52. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/unixlib.py +0 -0
  53. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/utools.py +0 -0
  54. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/webhook.py +0 -0
  55. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/win32lib.py +0 -0
  56. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/ext/yuquelib.py +0 -0
  57. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/__init__.py +0 -0
  58. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/docxlib.py +0 -0
  59. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/gitlib.py +0 -0
  60. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/libreoffice.py +0 -0
  61. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/movielib.py +0 -0
  62. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/newbie.py +0 -0
  63. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/onenotelib.py +0 -0
  64. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/packlib/__init__.py +0 -0
  65. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/packlib/zipfile.py +0 -0
  66. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/pdflib.py +0 -0
  67. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/pupil.py +0 -0
  68. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/specialist/__init__.py +0 -0
  69. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/specialist/dirlib.py +0 -0
  70. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/specialist/download.py +0 -0
  71. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/file/xlsxlib.py +0 -0
  72. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/__init__.py +0 -0
  73. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/deprecatedlib.py +0 -0
  74. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/ipyexec.py +0 -0
  75. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/multiprocs.py +0 -0
  76. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/newbie.py +0 -0
  77. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/pupil.py +0 -0
  78. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/sitepackages.py +0 -0
  79. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/specialist/__init__.py +0 -0
  80. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/specialist/common.py +0 -0
  81. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/specialist/datetime.py +0 -0
  82. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/specialist/tictoc.py +0 -0
  83. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/specialist/xllog.py +0 -0
  84. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/prog/xlosenv.py +0 -0
  85. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/stdlib/__init__.py +0 -0
  86. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  87. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  88. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  89. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/__init__.py +0 -0
  90. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/ahocorasick.py +0 -0
  91. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/charclasslib.py +0 -0
  92. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/jiebalib.py +0 -0
  93. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/jscode.py +0 -0
  94. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/latex/__init__.py +0 -0
  95. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/levenshtein.py +0 -0
  96. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/nestenv.py +0 -0
  97. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/newbie.py +0 -0
  98. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/pupil/__init__.py +0 -0
  99. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/pupil/common.py +0 -0
  100. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/pupil/xlalign.py +0 -0
  101. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/pycode.py +0 -0
  102. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/specialist/__init__.py +0 -0
  103. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/specialist/common.py +0 -0
  104. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/specialist/ptag.py +0 -0
  105. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/spellchecker.py +0 -0
  106. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/vbacode.py +0 -0
  107. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/text/xmllib.py +0 -0
  108. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/xl.py +0 -0
  109. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib/xlcv.py +0 -0
  110. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib.egg-info/SOURCES.txt +0 -0
  111. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib.egg-info/dependency_links.txt +0 -0
  112. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib.egg-info/requires.txt +3 -3
  113. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxllib.egg-info/top_level.txt +0 -0
  114. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/__init__.py +0 -0
  115. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ai/__init__.py +0 -0
  116. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ai/clientlib.py +0 -0
  117. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ai/specialist.py +0 -0
  118. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ai/torch_app.py +0 -0
  119. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ai/xlpaddle.py +0 -0
  120. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ai/xltorch.py +0 -0
  121. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/__init__.py +0 -0
  122. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/coco.py +0 -0
  123. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/datacls.py +0 -0
  124. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/datasets.py +0 -0
  125. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/gptlib.py +0 -0
  126. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/icdar/__init__.py +0 -0
  127. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/icdar/deteval.py +0 -0
  128. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/icdar/icdar2013.py +0 -0
  129. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/icdar/iou.py +0 -0
  130. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  131. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/imtextline.py +0 -0
  132. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/labelme.py +0 -0
  133. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/removeline.py +0 -0
  134. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/specialist.py +0 -0
  135. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/data/tiktokenlib.py +0 -0
  136. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/eval/__init__.py +0 -0
  137. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/paddleocr.py +0 -0
  138. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/__init__.py +0 -0
  139. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  140. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/__init__.py +0 -0
  141. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  142. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  143. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  144. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  145. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  146. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  147. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  148. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  149. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  150. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  151. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  152. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  153. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  154. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  155. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  156. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  157. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  158. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  159. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  160. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  161. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  162. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  163. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  164. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/__init__.py +0 -0
  165. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  166. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  167. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  168. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  169. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  170. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  171. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  172. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  173. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  174. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  175. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  176. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  177. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  178. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  179. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  180. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  181. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  182. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  183. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  184. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  185. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  186. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  187. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  188. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  189. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  190. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  191. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  192. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  193. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  194. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  195. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  196. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  197. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  198. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  199. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  200. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  201. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  202. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  203. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  204. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  205. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  206. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  207. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  208. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  209. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  210. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  211. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  212. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  213. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  214. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  215. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  216. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  217. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  218. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  219. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  220. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  221. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  222. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  223. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  224. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  225. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  226. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  227. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  228. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  229. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  230. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  231. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  232. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  233. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  234. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  235. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  236. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  237. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  238. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  239. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  240. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  241. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  242. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  243. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  244. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  245. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  246. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  247. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  248. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  249. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  250. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  251. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  252. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  253. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  254. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  255. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  256. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  257. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/__init__.py +0 -0
  258. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/eval.py +0 -0
  259. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/export_center.py +0 -0
  260. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/export_model.py +0 -0
  261. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  262. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  263. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  264. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  265. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  266. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  267. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  268. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  269. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  270. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  271. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  272. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  273. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/program.py +0 -0
  274. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  275. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/train.py +0 -0
  276. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  277. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  278. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/__init__.py +0 -0
  279. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  280. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  281. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  282. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  283. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  284. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  285. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  286. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  287. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  288. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  289. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  290. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  291. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  292. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  293. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  294. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  295. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  296. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  297. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  298. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  299. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  300. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  301. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  302. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  303. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  304. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  305. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  306. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  307. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  308. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  309. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  310. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  311. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  312. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  313. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  314. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  315. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  316. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  317. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  318. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  319. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  320. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  321. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  322. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/iou.py +0 -0
  323. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/logging.py +0 -0
  324. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/network.py +0 -0
  325. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  326. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/profiler.py +0 -0
  327. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/save_load.py +0 -0
  328. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/stats.py +0 -0
  329. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppocr/utils/utility.py +0 -0
  330. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/__init__.py +0 -0
  331. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/predict_system.py +0 -0
  332. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/__init__.py +0 -0
  333. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  334. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/matcher.py +0 -0
  335. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  336. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  337. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  338. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  339. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  340. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  341. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  342. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  343. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/ppstructure/utility.py +0 -0
  344. {pyxllib-0.3.109 → pyxllib-0.3.110}/pyxlpr/xlai.py +0 -0
  345. {pyxllib-0.3.109 → pyxllib-0.3.110}/requirements.txt +0 -0
  346. {pyxllib-0.3.109 → pyxllib-0.3.110}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.109
3
+ Version: 0.3.110
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -6,8 +6,10 @@
6
6
 
7
7
  from bisect import bisect_right
8
8
  from collections import defaultdict, Counter
9
+ import datetime
9
10
  import math
10
11
  import re
12
+ from statistics import quantiles
11
13
  import sys
12
14
  import textwrap
13
15
 
@@ -194,7 +196,8 @@ class ValuesStat2:
194
196
  def __len__(self):
195
197
  return self.n
196
198
 
197
- def summary(self, unit=None, precision=4, percentile_count=5):
199
+ def _summary(self, unit=None, precision=4, percentile_count=5):
200
+ """ 返回字典结构的总结 """
198
201
  """ 文本汇总性的报告
199
202
 
200
203
  :param percentile_count: 包括两个极值端点的切分点数,
@@ -204,8 +207,6 @@ class ValuesStat2:
204
207
  :param unit: 展示数值时使用的单位
205
208
  :param precision: 展示数值时的精度
206
209
  """
207
- import datetime
208
- from statistics import quantiles
209
210
 
210
211
  # 1 各种细分的格式化方法
211
212
  def fmt0(v):
@@ -238,19 +239,20 @@ class ValuesStat2:
238
239
  fmt = fmtb = fmt1
239
240
 
240
241
  # 2 生成统计报告
241
- desc = []
242
+ desc = {}
242
243
  if self.raw_n and self.raw_n > self.n:
243
- desc.append(f"非数值数量:{fmt0(self.raw_n - self.n)}")
244
+ desc["总数"] = f"{fmt0(self.n)}/{fmt0(self.raw_n)}≈{self.n / self.raw_n:.2%}"
245
+ else:
246
+ desc["总数"] = f"{fmt0(self.n)}"
244
247
 
245
- desc.append(f"总数:{fmt0(self.n)}")
246
248
  if self.sum is not None:
247
- desc.append(f"总和:{fmt(self.sum)}")
249
+ desc["总和"] = f"{fmt(self.sum)}"
248
250
  if self.mean is not None and self.std is not None:
249
- desc.append(f'均值±标准差:{fmt(self.mean)}±{fmtb(self.std)}')
251
+ desc["均值±标准差"] = f"{fmt(self.mean)}±{fmtb(self.std)}"
250
252
  elif self.mean is not None:
251
- desc.append(f'均值:{fmt(self.mean)}')
253
+ desc["均值"] = f"{fmt(self.mean)}"
252
254
  elif self.std is not None:
253
- desc.append(f'标准差:{fmtb(self.std)}')
255
+ desc["标准差"] = f"{fmtb(self.std)}"
254
256
 
255
257
  if self.values:
256
258
  dist = [self.values[0]]
@@ -259,11 +261,24 @@ class ValuesStat2:
259
261
  dist += quartiles
260
262
  dist.append(self.values[-1])
261
263
 
262
- desc.append(f"分布:{'/'.join([fmt(v) for v in dist])}")
263
- elif self.dist: # 此时当前函数的percentile设置失效,以dist中存储的情况为准
264
- desc.append(f"分布:{'/'.join([fmt(v) for v in self.dist])}")
264
+ desc["分布"] = '/'.join([fmt(v) for v in dist])
265
+ elif self.dist:
266
+ desc["分布"] = '/'.join([fmt(v) for v in self.dist])
265
267
 
266
- return '\t'.join(desc)
268
+ return desc
269
+
270
+ def summary(self, unit=None, precision=4, percentile_count=5):
271
+ """ 文本汇总性的报告
272
+
273
+ :param percentile_count: 包括两个极值端点的切分点数,
274
+ 设置2,就是不设置分位数,就是只展示最小、最大值
275
+ 如果设置了3,就表示"中位数、二分位数",在展示的时候,会显示50%位置的分位数值
276
+ 如果设置了5,就相当于"四分位数",会显示25%、50%、75%位置的分位数值
277
+ :param unit: 展示数值时使用的单位
278
+ :param precision: 展示数值时的精度
279
+ """
280
+ desc = self._summary(unit, precision, percentile_count)
281
+ return '\t'.join([f"{key}: {value}" for key, value in desc.items()])
267
282
 
268
283
  def calculate_ratios(self, x_values, fmt=False):
269
284
  """ 计算并返回一个字典,其中包含每个 x_values 中的值与其小于等于该值的元素的比例
@@ -46,7 +46,7 @@ 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
48
48
  from pyxllib.file.specialist import get_etag
49
- from pyxllib.data.sqlite import SqlBase, SQLBuilder
49
+ from pyxllib.data.sqlite import SqlBase, SqlBuilder
50
50
 
51
51
 
52
52
  class Connection(psycopg.Connection, SqlBase):
@@ -154,7 +154,7 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
154
154
  第1个值,是一个迭代器,看起来仍然能一条一条返回,实际后台是按照batch_size打包获取的
155
155
  第2个值,是数据总数
156
156
  """
157
- if not isinstance(sql, SQLBuilder):
157
+ if not isinstance(sql, SqlBuilder):
158
158
  raise ValueError('暂时只能搭配SQLBuilder使用')
159
159
 
160
160
  num = self.exec2one(sql.build_count())
@@ -256,42 +256,42 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
256
256
  def __6_高级统计(self):
257
257
  pass
258
258
 
259
- def get_field_valuesstat(self, table_name, field_name, percentile_count=5,
260
- filter_condition=None, by_data=False):
259
+ def get_column_valuesstat(self, table_name, column, percentile_count=5,
260
+ filter_condition=None, by_data=False):
261
261
  """ 获得指定表格的某个字段的统计特征ValuesStat2对象
262
262
 
263
263
  :param table_name: 表名
264
- :param field_name: 用于计算统计数据的字段名
264
+ :param column: 用于计算统计数据的字段名
265
265
  :param percentile_count: 分位数的数量,例如 3 表示只计算中位数
266
266
  :param by_data: 是否获得原始数据
267
267
  默认只获得统计特征,不获得原始数据
268
268
  """
269
269
 
270
270
  def init_from_db_data():
271
- sql = SQLBuilder(table_name)
271
+ sql = SqlBuilder(table_name)
272
272
  if filter_condition:
273
273
  sql.where(filter_condition)
274
- values = self.exec2col(sql.build_select(field_name))
274
+ values = self.exec2col(sql.build_select(column))
275
275
  if data_type == 'numeric':
276
276
  values = [x and float(x) for x in values]
277
277
  return ValuesStat2(raw_values=values, data_type=data_type)
278
278
 
279
279
  def init_from_db():
280
280
  # 1 构建基础的 SQL 查询
281
- sql = SQLBuilder(table_name)
281
+ sql = SqlBuilder(table_name)
282
282
  sql.select("COUNT(*) AS total_count")
283
- sql.select(f"COUNT({field_name}) AS non_null_count")
284
- sql.select(f"MIN({field_name}) AS min_value")
285
- sql.select(f"MAX({field_name}) AS max_value")
286
- if 'timestamp' in data_type:
283
+ sql.select(f"COUNT({column}) AS non_null_count")
284
+ sql.select(f"MIN({column}) AS min_value")
285
+ sql.select(f"MAX({column}) AS max_value")
286
+ if data_type and 'timestamp' in data_type:
287
287
  percentile_type = 'PERCENTILE_DISC'
288
288
  # todo 其实时间类也可以"泛化"一种平均值、标准差算法的,这需要获取全量数据,然后自己计算
289
289
  elif data_type == 'text':
290
290
  percentile_type = 'PERCENTILE_DISC'
291
291
  else: # 默认是正常的数值类型
292
- sql.select(f"SUM({field_name}) AS total_sum")
293
- sql.select(f"AVG({field_name}) AS average")
294
- sql.select(f"STDDEV({field_name}) AS standard_deviation")
292
+ sql.select(f"SUM({column}) AS total_sum")
293
+ sql.select(f"AVG({column}) AS average")
294
+ sql.select(f"STDDEV({column}) AS standard_deviation")
295
295
  percentile_type = 'PERCENTILE_CONT'
296
296
 
297
297
  percentiles = []
@@ -300,7 +300,7 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
300
300
  step = 1 / (percentile_count - 1)
301
301
  percentiles = [(i * step) for i in range(1, percentile_count - 1)]
302
302
  for p in percentiles:
303
- sql.select(f"{percentile_type}({p:.2f}) WITHIN GROUP (ORDER BY {field_name}) "
303
+ sql.select(f"{percentile_type}({p:.2f}) WITHIN GROUP (ORDER BY {column}) "
304
304
  f"AS percentile_{int(p * 100)}")
305
305
 
306
306
  if filter_condition:
@@ -326,7 +326,7 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
326
326
 
327
327
  return x
328
328
 
329
- data_type = self.get_column_data_type(table_name, field_name)
329
+ data_type = self.get_column_data_type(table_name, column)
330
330
  if by_data:
331
331
  vs = init_from_db_data()
332
332
  else:
@@ -19,7 +19,7 @@ warnings.filterwarnings('ignore', message="pandas only support SQLAlchemy connec
19
19
  warnings.filterwarnings('ignore', message="pandas only supports SQLAlchemy connectable")
20
20
 
21
21
 
22
- class SQLBuilder:
22
+ class SqlBuilder:
23
23
  def __init__(self, table=''):
24
24
  self.table = table
25
25
  self._select = []
@@ -53,6 +53,25 @@ class SQLBuilder:
53
53
  self._where.append(condition)
54
54
  return self
55
55
 
56
+ def where_in(self, column, values):
57
+ if values is None:
58
+ return self
59
+
60
+ if isinstance(values, str):
61
+ values = [values]
62
+ values_str = ', '.join(f"'{str(value)}'" for value in values)
63
+ if len(values) == 1:
64
+ self._where.append(f"{column} = {values_str[0]}")
65
+ else:
66
+ self._where.append(f"{column} IN ({values_str})")
67
+ return self
68
+
69
+ def where_or(self, *conditions):
70
+ """ 输入的这一批条件,作为OR组合后成为一个整体条件
71
+ """
72
+ self._where.append(f"({' OR '.join(conditions)})")
73
+ return self
74
+
56
75
  def group_by(self, *columns):
57
76
  self._group_by.extend(columns)
58
77
  return self
@@ -106,7 +125,7 @@ class SQLBuilder:
106
125
  return '\n'.join(sql)
107
126
 
108
127
  def build_check_data_type(self, column):
109
- sql = SQLBuilder('information_schema.columns')
128
+ sql = SqlBuilder('information_schema.columns')
110
129
  sql.select(f"data_type")
111
130
  sql.where(f"table_name='{self.table}' AND column_name='{column}'")
112
131
  return sql.build_select()
@@ -381,7 +400,7 @@ class SqlBase:
381
400
 
382
401
  def get_column_data_type(self, table_name, col_name):
383
402
  """ 获取表格中某一列的数据类型 """
384
- return self.exec2one(SQLBuilder(table_name).build_check_data_type(col_name))
403
+ return self.exec2one(SqlBuilder(table_name).build_check_data_type(col_name))
385
404
 
386
405
 
387
406
  class Connection(sqlite3.Connection, SqlBase):
@@ -28,7 +28,7 @@ import fire
28
28
  import pandas as pd
29
29
  from tqdm import tqdm
30
30
  import requests
31
- import requests_cache
31
+ # import requests_cache
32
32
 
33
33
  from pyxllib.text.pupil import chinese2digits, grp_chinese_char
34
34
  from pyxllib.file.xlsxlib import openpyxl
@@ -1437,9 +1437,9 @@ class XlPath(type(pathlib.Path())):
1437
1437
  dst = XlPath(dst)
1438
1438
  if dst.exist_preprcs(if_exists):
1439
1439
  if self.is_file():
1440
- shutil.copy2(self, dst)
1440
+ return shutil.copy2(self, dst)
1441
1441
  else:
1442
- shutil.copytree(self, dst)
1442
+ return shutil.copytree(self, dst)
1443
1443
 
1444
1444
  def move(self, dst, if_exists=None):
1445
1445
  if not self.exists():
@@ -16,7 +16,10 @@ from pyxllib.file.specialist import File, Dir, filesmatch, get_encoding, XlPath
16
16
  # BCompare.exe, bcompare函数要用
17
17
 
18
18
  class BCompare(Explorer):
19
- def __init__(self, app='BCompare', shell=False):
19
+ def __init__(self, app='bcomp', shell=False):
20
+ """
21
+ 240512周日20:06,本来写的是BCompare,但是友鑫mac电脑上发现似乎有问题,所以改成bcomp,这种在windows上也能用
22
+ """
20
23
  super().__init__(app, shell)
21
24
 
22
25
  @classmethod
@@ -48,7 +51,7 @@ class BCompare(Explorer):
48
51
  default_suffix = None
49
52
  for i, arg in enumerate(args):
50
53
  f = XlPath.safe_init(arg)
51
- if f.is_file(): # 是文件对象,且存在
54
+ if f is not None and f.is_file(): # 是文件对象,且存在
52
55
  new_args.append(f)
53
56
  if not default_suffix:
54
57
  default_suffix = f.suffix
@@ -13,6 +13,7 @@ import subprocess
13
13
  import sys
14
14
  import datetime
15
15
  import platform
16
+ import re
16
17
 
17
18
  import pandas as pd
18
19
  from bs4 import BeautifulSoup
@@ -118,9 +119,12 @@ class Explorer:
118
119
  TODO 获得返回值分析
119
120
  """
120
121
  args = [self.app] + list(args)
122
+
121
123
  if 'shell' not in kwargs:
122
124
  kwargs.update({'shell': self.shell})
123
-
125
+ if re.match(r'open\s', self.app):
126
+ args = args[0] + ' ' + args[1]
127
+ kwargs.update({'shell': True})
124
128
  try:
125
129
  if wait:
126
130
  subprocess.run(args, **kwargs)
@@ -161,6 +165,7 @@ class Browser(Explorer):
161
165
  # 这里默认设置为 'google-chrome',如果你想使用其他的浏览器,例如Firefox,可以修改为 'firefox'
162
166
  app = 'google-chrome'
163
167
  else:
168
+ app = 'open -a "Google Chrome"'
164
169
  # 其他系统的处理
165
170
  pass
166
171
  super().__init__(app, shell)
@@ -232,7 +237,8 @@ class Browser(Explorer):
232
237
  :param file: 默认可以不输入,会按七牛的etag哈希值生成临时文件
233
238
  如果输入,则按照指定的名称生成文件
234
239
  """
235
- if XlPath.safe_init(arg).is_file():
240
+ f = XlPath.safe_init(arg)
241
+ if f is not None and f.is_file():
236
242
  file = arg
237
243
  else:
238
244
  file = str(self.to_brower_file(arg, file, clsmsg=clsmsg, to_html_args=to_html_args))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.109
3
+ Version: 0.3.110
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
30
30
 
31
31
  setup(
32
32
  name='pyxllib', # pip 安装时用的名字
33
- version='0.3.109', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
33
+ version='0.3.110', # 当前版本,每次更新上传到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
@@ -22,13 +22,13 @@ pandas>=0.23.4
22
22
 
23
23
  [xlai]
24
24
  visdom
25
- opencv-python
26
25
  opsdroid-get-image-size
27
- pillow
28
26
  xlcocotools
29
27
  pynvml
28
+ pillow
29
+ opencv-python
30
30
 
31
31
  [xlcv]
32
- pillow
33
32
  opencv-python
33
+ pillow
34
34
  opsdroid-get-image-size
File without changes