pyxllib 0.3.122__tar.gz → 0.3.124__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 (354) hide show
  1. {pyxllib-0.3.122/pyxllib.egg-info → pyxllib-0.3.124}/PKG-INFO +1 -1
  2. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/pupil.py +0 -21
  3. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/data/echarts.py +56 -12
  4. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/data/pglib.py +5 -1
  5. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/data/sqlite.py +10 -0
  6. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/pdflib.py +1 -1
  7. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/specialist/filelib.py +4 -4
  8. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/xlsxlib.py +9 -2
  9. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/pupil.py +52 -1
  10. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/specialist/__init__.py +128 -1
  11. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/jiebalib.py +1 -1
  12. {pyxllib-0.3.122 → pyxllib-0.3.124/pyxllib.egg-info}/PKG-INFO +1 -1
  13. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ai/xlpaddle.py +5 -8
  14. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/openai2/_core/chat.py +5 -0
  15. {pyxllib-0.3.122 → pyxllib-0.3.124}/setup.py +1 -1
  16. {pyxllib-0.3.122 → pyxllib-0.3.124}/LICENSE +0 -0
  17. {pyxllib-0.3.122 → pyxllib-0.3.124}/MANIFEST.in +0 -0
  18. {pyxllib-0.3.122 → pyxllib-0.3.124}/README.md +0 -0
  19. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/__init__.py +0 -0
  20. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/__init__.py +0 -0
  21. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/disjoint.py +0 -0
  22. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/geo.py +0 -0
  23. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/intervals.py +0 -0
  24. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/matcher.py +0 -0
  25. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/newbie.py +0 -0
  26. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/shapelylib.py +0 -0
  27. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/specialist.py +0 -0
  28. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/stat.py +0 -0
  29. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/treelib.py +0 -0
  30. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/algo/unitlib.py +0 -0
  31. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/__init__.py +0 -0
  32. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/expert.py +0 -0
  33. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/imfile.py +0 -0
  34. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/imhash.py +0 -0
  35. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/pupil.py +0 -0
  36. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/rgbfmt.py +0 -0
  37. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/trackbartools.py +0 -0
  38. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/xlcvlib.py +0 -0
  39. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/cv/xlpillib.py +0 -0
  40. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/data/__init__.py +0 -0
  41. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/data/jsonlib.py +0 -0
  42. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/data/oss.py +0 -0
  43. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/data/sqllib.py +0 -0
  44. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/JLineViewer.py +0 -0
  45. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/__init__.py +0 -0
  46. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/autogui/__init__.py +0 -0
  47. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/autogui/autogui.py +0 -0
  48. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/autogui/virtualkey.py +0 -0
  49. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/demolib.py +0 -0
  50. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/drissionlib.py +0 -0
  51. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/kq5034lib.py +0 -0
  52. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/old.py +0 -0
  53. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/qt.py +0 -0
  54. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/robustprocfile.py +0 -0
  55. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/seleniumlib.py +0 -0
  56. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/tk.py +0 -0
  57. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/unixlib.py +0 -0
  58. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/utools.py +0 -0
  59. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/webhook.py +0 -0
  60. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/win32lib.py +0 -0
  61. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/ext/yuquelib.py +0 -0
  62. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/__init__.py +0 -0
  63. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/docxlib.py +0 -0
  64. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/gitlib.py +0 -0
  65. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/libreoffice.py +0 -0
  66. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/movielib.py +0 -0
  67. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/newbie.py +0 -0
  68. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/onenotelib.py +0 -0
  69. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/packlib/__init__.py +0 -0
  70. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/packlib/zipfile.py +0 -0
  71. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/pupil.py +0 -0
  72. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/specialist/__init__.py +0 -0
  73. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/specialist/dirlib.py +0 -0
  74. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/file/specialist/download.py +0 -0
  75. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/__init__.py +0 -0
  76. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/cachetools.py +0 -0
  77. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/deprecatedlib.py +0 -0
  78. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/ipyexec.py +0 -0
  79. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/multiprocs.py +0 -0
  80. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/newbie.py +0 -0
  81. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/scheduler.py +0 -0
  82. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/sitepackages.py +0 -0
  83. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/specialist/bc.py +0 -0
  84. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/specialist/browser.py +0 -0
  85. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/specialist/common.py +0 -0
  86. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/specialist/datetime.py +0 -0
  87. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/specialist/tictoc.py +0 -0
  88. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/specialist/xllog.py +0 -0
  89. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/prog/xlosenv.py +0 -0
  90. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/stdlib/__init__.py +0 -0
  91. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  92. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  93. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  94. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/__init__.py +0 -0
  95. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/ahocorasick.py +0 -0
  96. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/charclasslib.py +0 -0
  97. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/jinjalib.py +0 -0
  98. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/jscode.py +0 -0
  99. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/latex/__init__.py +0 -0
  100. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/levenshtein.py +0 -0
  101. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/nestenv.py +0 -0
  102. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/newbie.py +0 -0
  103. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/pupil/__init__.py +0 -0
  104. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/pupil/common.py +0 -0
  105. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/pupil/xlalign.py +0 -0
  106. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/pycode.py +0 -0
  107. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/specialist/__init__.py +0 -0
  108. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/specialist/common.py +0 -0
  109. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/specialist/ptag.py +0 -0
  110. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/spellchecker.py +0 -0
  111. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/vbacode.py +0 -0
  112. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/text/xmllib.py +0 -0
  113. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/xl.py +0 -0
  114. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib/xlcv.py +0 -0
  115. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib.egg-info/SOURCES.txt +0 -0
  116. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib.egg-info/dependency_links.txt +0 -0
  117. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib.egg-info/requires.txt +10 -10
  118. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxllib.egg-info/top_level.txt +0 -0
  119. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/__init__.py +0 -0
  120. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ai/__init__.py +0 -0
  121. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ai/clientlib.py +0 -0
  122. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ai/specialist.py +0 -0
  123. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ai/torch_app.py +0 -0
  124. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ai/xltorch.py +0 -0
  125. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/__init__.py +0 -0
  126. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/coco.py +0 -0
  127. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/datacls.py +0 -0
  128. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/datasets.py +0 -0
  129. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/gptlib.py +0 -0
  130. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/icdar/__init__.py +0 -0
  131. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/icdar/deteval.py +0 -0
  132. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/icdar/icdar2013.py +0 -0
  133. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/icdar/iou.py +0 -0
  134. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  135. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/imtextline.py +0 -0
  136. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/labelme.py +0 -0
  137. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/removeline.py +0 -0
  138. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/specialist.py +0 -0
  139. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/data/tiktokenlib.py +0 -0
  140. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/eval/__init__.py +0 -0
  141. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/openai2/__init__.py +0 -0
  142. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
  143. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/openai2/_core/group_chat.py +0 -0
  144. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/openai2/openai2.py +0 -0
  145. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/paddleocr.py +0 -0
  146. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/__init__.py +0 -0
  147. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  148. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/__init__.py +0 -0
  149. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  150. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  151. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  152. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  153. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  154. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  155. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  156. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  157. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  158. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  159. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  160. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  161. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  162. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  163. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  164. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  165. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  166. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  167. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  168. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  169. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  170. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  171. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  172. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/__init__.py +0 -0
  173. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  174. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  175. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  176. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  177. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  178. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  179. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  180. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  181. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  182. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  183. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  184. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  185. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  186. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  187. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  188. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  189. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  190. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  191. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  192. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  193. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  194. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  195. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  196. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  197. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  198. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  199. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  200. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  201. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  202. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  203. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  204. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  205. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  206. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  207. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  208. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  209. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  210. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  211. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  212. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  213. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  214. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  215. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  216. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  217. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  218. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  219. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  220. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  221. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  222. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  223. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  224. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  225. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  226. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  227. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  228. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  229. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  230. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  231. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  232. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  233. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  234. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  235. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  236. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  237. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  238. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  239. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  240. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  241. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  242. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  243. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  244. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  245. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  246. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  247. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  248. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  249. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  250. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  251. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  252. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  253. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  254. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  255. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  256. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  257. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  258. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  259. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  260. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  261. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  262. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  263. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  264. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  265. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/__init__.py +0 -0
  266. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/eval.py +0 -0
  267. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/export_center.py +0 -0
  268. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/export_model.py +0 -0
  269. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  270. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  271. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  272. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  273. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  274. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  275. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  276. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  277. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  278. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  279. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  280. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  281. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/program.py +0 -0
  282. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  283. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/train.py +0 -0
  284. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  285. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  286. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/__init__.py +0 -0
  287. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  288. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  289. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  290. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  291. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  292. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  293. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  294. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  295. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  296. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  297. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  298. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  299. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  300. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  301. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  302. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  303. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  304. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  305. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  306. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  307. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  308. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  309. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  310. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  311. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  312. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  313. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  314. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  315. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  316. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  317. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  318. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  319. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  320. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  321. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  322. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  323. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  324. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  325. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  326. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  327. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  328. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  329. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  330. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/iou.py +0 -0
  331. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/logging.py +0 -0
  332. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/network.py +0 -0
  333. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  334. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/profiler.py +0 -0
  335. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/save_load.py +0 -0
  336. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/stats.py +0 -0
  337. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppocr/utils/utility.py +0 -0
  338. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/__init__.py +0 -0
  339. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/predict_system.py +0 -0
  340. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/__init__.py +0 -0
  341. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  342. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/matcher.py +0 -0
  343. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  344. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  345. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  346. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  347. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  348. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  349. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  350. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  351. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/ppstructure/utility.py +0 -0
  352. {pyxllib-0.3.122 → pyxllib-0.3.124}/pyxlpr/xlai.py +0 -0
  353. {pyxllib-0.3.122 → pyxllib-0.3.124}/requirements.txt +0 -0
  354. {pyxllib-0.3.122 → pyxllib-0.3.124}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.122
3
+ Version: 0.3.124
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -7,7 +7,6 @@
7
7
  from bisect import bisect_right
8
8
  from collections import defaultdict, Counter
9
9
  import datetime
10
- import math
11
10
  import re
12
11
  from statistics import quantiles
13
12
  import sys
@@ -482,26 +481,6 @@ def matchpairs(xs, ys, cmp_func, least_score=sys.float_info.epsilon, *,
482
481
  return pairs
483
482
 
484
483
 
485
- def get_number_width(n):
486
- """ 判断数值n的长度
487
-
488
- 参考资料:https://jstrieb.github.io/posts/digit-length/
489
-
490
- >>> get_number_width(0)
491
- 1
492
- >>> get_number_width(9)
493
- 1
494
- >>> get_number_width(10)
495
- 2
496
- >>> get_number_width(97)
497
- 2
498
- """
499
- # assert n > 0
500
- # return math.ceil(math.log10(n + 1))
501
-
502
- return 1 if n == 0 else (math.floor(math.log10(n)) + 1)
503
-
504
-
505
484
  class SearchBase:
506
485
  """ 一个dfs、bfs模板类 """
507
486
 
@@ -75,28 +75,71 @@ class XlChart(Chart):
75
75
  inject_members(XlChart, Chart)
76
76
 
77
77
 
78
+ class XlLine(Line):
79
+ @classmethod
80
+ def from_dict(cls, yaxis, xaxis=None, *, title=None,
81
+ xaxis_name=None, yaxis_name=None, **kwargs):
82
+ """ 查看一个数据的折线图
83
+
84
+ :param list|dict yaxis: 列表数据,或者字典name: values表示的多组数据
85
+ """
86
+ c = cls()
87
+
88
+ if isinstance(yaxis, (list, tuple)):
89
+ yaxis = {'value': yaxis}
90
+ if xaxis is None:
91
+ xaxis = list(range(max([len(v) for v in yaxis.values()])))
92
+ c.add_xaxis(xaxis)
93
+ for k, v in yaxis.items():
94
+ c.add_yaxis(k, v)
95
+
96
+ configs = {
97
+ 'tooltip_opts': opts.TooltipOpts(trigger="axis"),
98
+ **kwargs,
99
+ }
100
+ c.set_global_opts(tooltip_opts=opts.TooltipOpts(trigger="axis"))
101
+ if title:
102
+ configs['title_opts'] = opts.TitleOpts(title=title)
103
+ if xaxis_name:
104
+ configs['xaxis_opts'] = opts.AxisOpts(name=xaxis_name, axislabel_opts=opts.LabelOpts(rotate=45, interval=0))
105
+ if yaxis_name:
106
+ configs['yaxis_opts'] = opts.AxisOpts(name=yaxis_name)
107
+ c.set_global_opts(**configs)
108
+ return c
109
+
110
+
78
111
  class XlBar(Bar):
79
112
 
80
113
  @classmethod
81
- def from_dict(cls, yaxis, xaxis=None, *, title=None):
114
+ def from_dict(cls, yaxis, xaxis=None, *, title=None,
115
+ xaxis_name=None, yaxis_name=None, **kwargs):
82
116
  """ 查看一个数据的条形图
83
117
 
84
- :param dict yaxis: 列表数据,或者字典name: values表示的多组数据
118
+ :param list|dict yaxis: 列表数据,或者字典name: values表示的多组数据
85
119
  """
86
- b = cls()
120
+ c = cls()
87
121
 
122
+ if isinstance(yaxis, (list, tuple)):
123
+ yaxis = {'value': yaxis}
88
124
  if xaxis is None:
89
125
  xaxis = list(range(max([len(v) for v in yaxis.values()])))
90
-
91
- b.add_xaxis(xaxis)
92
-
126
+ c.add_xaxis(xaxis)
93
127
  for k, v in yaxis.items():
94
- b.add_yaxis(k, v)
128
+ c.add_yaxis(k, v)
95
129
 
130
+ configs = {
131
+ 'tooltip_opts': opts.TooltipOpts(trigger="axis"),
132
+ **kwargs,
133
+ }
134
+ c.set_global_opts(tooltip_opts=opts.TooltipOpts(trigger="axis"))
96
135
  if title:
97
- b.set_title(title)
98
-
99
- return b
136
+ configs['title_opts'] = opts.TitleOpts(title=title)
137
+ if xaxis_name:
138
+ configs['xaxis_opts'] = opts.AxisOpts(name=xaxis_name)
139
+ if yaxis_name:
140
+ configs['yaxis_opts'] = opts.AxisOpts(name=yaxis_name)
141
+ c.set_global_opts(**configs)
142
+ return c
100
143
 
101
144
  @classmethod
102
145
  def from_list(cls, yaxis, xaxis=None, *, title=None):
@@ -128,11 +171,13 @@ class XlBar(Bar):
128
171
  for i in range(groups):
129
172
  labels.append(f"{min_val + interval * i:.2f}-{min_val + interval * (i + 1):.2f}")
130
173
  # t = cls.from_dict({'value': group_counts}, xaxis=labels, title=title)
131
-
174
+
132
175
  return cls.from_dict({'value': group_counts}, xaxis=labels, title=title)
133
176
 
134
177
 
135
178
  class XlRadar(Radar):
179
+ """ 雷达图 """
180
+
136
181
  def __init__(self, *args, **kwargs):
137
182
  super().__init__(*args, **kwargs)
138
183
  self.color_idx = 0
@@ -193,4 +238,3 @@ def draw_pareto_chart(data, accuracy=0.1, *, title='帕累托累积权重', valu
193
238
  if __name__ == '__main__':
194
239
  with TicToc(__name__):
195
240
  pass
196
-
@@ -58,13 +58,17 @@ class Connection(psycopg.Connection, SqlBase):
58
58
  def __1_库(self):
59
59
  pass
60
60
 
61
- def get_db_activities(self):
61
+ def get_db_activities(self, datname=None):
62
62
  """
63
63
  检索当前数据库的活动信息。
64
+
65
+ :param datname: 这个字段理论上应该要能自动检测出来才对,但这会急着没空钻研,先手动输入吧
64
66
  """
65
67
  sql = SqlBuilder('pg_stat_activity')
66
68
  sql.select('pid', 'datname', 'usename', 'state', 'query', 'age(now(), query_start) AS "query_age"')
67
69
  sql.where("state = 'active'")
70
+ if datname:
71
+ sql.where(f"datname = '{datname}'")
68
72
  return self.exec2dict(sql.build_select()).fetchall()
69
73
 
70
74
  def __2_表格(self):
@@ -59,6 +59,16 @@ class SqlBuilder:
59
59
 
60
60
  return self
61
61
 
62
+ def where_dict_match(self, items):
63
+ """ 输入一个字典,要求每个key的字段对应上具体的某个取值value """
64
+ for k, v in items.items():
65
+ if isinstance(v, str):
66
+ self._where.append(f"{k} = '{v}'")
67
+ elif isinstance(v, (int, float)):
68
+ self._where.append(f"{k} = {v}")
69
+ else:
70
+ raise TypeError
71
+
62
72
  def where_in(self, column, values):
63
73
  if values is None:
64
74
  return self
@@ -19,7 +19,7 @@ from pyxllib.prog.newbie import round_int, decode_bitflags
19
19
  from pyxllib.prog.pupil import DictTool, inject_members, dprint
20
20
  from pyxllib.prog.specialist import browser
21
21
  from pyxllib.algo.newbie import round_unit
22
- from pyxllib.algo.pupil import get_number_width
22
+ from pyxllib.prog.pupil import get_number_width
23
23
  from pyxllib.file.specialist import XlPath, writefile, get_etag
24
24
  from pyxllib.cv.expert import xlcv, xlpil
25
25
  from pyxlpr.data.labelme import LabelmeDict
@@ -1112,7 +1112,7 @@ class XlPath(type(pathlib.Path())):
1112
1112
  s = str(best_match)
1113
1113
  encoding = best_match.encoding
1114
1114
  else:
1115
- with open(self, 'r', encoding=encoding) as f:
1115
+ with open(self, 'r', encoding=encoding, errors=errors) as f:
1116
1116
  s = f.read()
1117
1117
 
1118
1118
  # 如果用\r\n作为换行符会有一些意外不好处理
@@ -1212,7 +1212,7 @@ class XlPath(type(pathlib.Path())):
1212
1212
  :param int max_items: 限制读取的条目数,默认为None,表示读取所有条目
1213
1213
  :param int batch_size:
1214
1214
  默认为None,表示一次性读取所有数据
1215
- 如果设置了数值,则会流式读取,常用语太大,超过内存大小等的jsonl文件读取
1215
+ 如果设置了数值,则会流式读取,常用于太大,超过内存大小等的jsonl文件读取
1216
1216
  注意如果设置了大小,只是底层每次一批读取的大小,但返回的data仍然是一维的数据格式迭代器
1217
1217
  :return: 返回读取到的数据列表,如果return_mode为True,则同时返回文件编码格式
1218
1218
 
@@ -1248,10 +1248,10 @@ class XlPath(type(pathlib.Path())):
1248
1248
  else:
1249
1249
  return data
1250
1250
 
1251
- def write_jsonl(self, list_data, ensure_ascii=False, default=None, mode='w'):
1251
+ def write_jsonl(self, list_data, ensure_ascii=False, default=None, mode='w', errors=None):
1252
1252
  """ 由于这种格式主要是跟商汤这边对接,就尽量跟它们的格式进行兼容 """
1253
1253
  content = '\n'.join([json.dumps(x, ensure_ascii=ensure_ascii, default=default) for x in list_data])
1254
- self.write_text_unix(content + '\n', mode=mode)
1254
+ self.write_text_unix(content + '\n', mode=mode, errors=errors)
1255
1255
 
1256
1256
  def add_json_line(self, data, ensure_ascii=False, default=None, mode='a'):
1257
1257
  """ 在文件末尾添加一行JSON数据 """
@@ -121,7 +121,7 @@ def is_valid_excel_address(address):
121
121
  return is_valid_excel_cell(address)
122
122
 
123
123
 
124
- @run_once('str', debug=True)
124
+ @run_once('str')
125
125
  def xlfmt2pyfmt_date(xl_fmt):
126
126
  """ 日期的渲染操作
127
127
 
@@ -2478,7 +2478,11 @@ def extract_workbook_summary2(file_path, *,
2478
2478
  res['fileName'] = file_path.name
2479
2479
  start_time = time.time()
2480
2480
  wb, suffix = load_as_xlsx_file(file_path, keep_links=keep_links, keep_vba=keep_vba)
2481
- res['fileType'] = suffix or 'error'
2481
+ if suffix:
2482
+ res['fileType'] = suffix
2483
+ else:
2484
+ res['error'] = 'fileType error'
2485
+
2482
2486
  load_time = time.time() - start_time
2483
2487
  if wb is None: # 不支持的文件类型,不报错,只是返回最基本的文件名信息
2484
2488
  if return_mode == 1:
@@ -2959,6 +2963,9 @@ class WorkbookSummary3:
2959
2963
  return y
2960
2964
 
2961
2965
  x = summary2
2966
+ if 'error' in x:
2967
+ return x
2968
+
2962
2969
  y = {
2963
2970
  'fileName': x['fileName'],
2964
2971
  'fileType': x['fileType'],
@@ -1129,6 +1129,7 @@ def support_multi_processes(default_processes=1):
1129
1129
  def wrapper(*args, **kwargs):
1130
1130
  process_count = int(kwargs.pop('process_count', default_processes))
1131
1131
  process_id = kwargs.pop('process_id', None)
1132
+ shell = kwargs.pop('shell', False)
1132
1133
 
1133
1134
  if process_count == 1 or process_id is not None:
1134
1135
  if process_id is None:
@@ -1150,7 +1151,7 @@ def support_multi_processes(default_processes=1):
1150
1151
  for k, v in kwargs.items():
1151
1152
  cmds.append(f'--{k}') # 添加关键字参数的键
1152
1153
  cmds.append(str(v)) # 添加关键字参数的值
1153
- mpl.add_process_python(sys.argv[0], cmds)
1154
+ mpl.add_process_python(sys.argv[0], cmds, shell=shell)
1154
1155
  mpl.run_endless()
1155
1156
 
1156
1157
  return wrapper
@@ -1313,3 +1314,53 @@ def tprint(*args, **kwargs):
1313
1314
  def is_valid_identifier(name):
1314
1315
  """ 判断是否是合法的标识符 """
1315
1316
  return re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', name)
1317
+
1318
+
1319
+ def get_number_width(n):
1320
+ """ 判断数值n的长度
1321
+
1322
+ 参考资料:https://jstrieb.github.io/posts/digit-length/
1323
+
1324
+ >>> get_number_width(0)
1325
+ 1
1326
+ >>> get_number_width(9)
1327
+ 1
1328
+ >>> get_number_width(10)
1329
+ 2
1330
+ >>> get_number_width(97)
1331
+ 2
1332
+ """
1333
+ # assert n > 0
1334
+ # return math.ceil(math.log10(n + 1))
1335
+
1336
+ return 1 if n == 0 else (math.floor(math.log10(n)) + 1)
1337
+
1338
+
1339
+ def aligned_range(start, stop=None, step=1):
1340
+ """ 返回按照域宽对齐的数字序列 """
1341
+ if stop is None:
1342
+ start, stop = 0, start
1343
+
1344
+ max_width = get_number_width(stop - step)
1345
+ format_str = '{:0' + str(max_width) + 'd}'
1346
+
1347
+ return [format_str.format(i) for i in range(start, stop, step)]
1348
+
1349
+
1350
+ def percentage_and_value(numbers, precision=2, *, total=None, sep='.'):
1351
+ """ 对输入的一串数值,转换成一种特殊的表达格式 "百分比.次数"
1352
+
1353
+ :param list numbers: 数值列表
1354
+ :param int precision: 百分比的精度(小数点后的位数),默认为 2
1355
+ :param int total: 总数,如果不输入,则默认为输入数值的和
1356
+ :param str sep: 分隔符
1357
+ :return: 整数部分是比例,小数部分是原始数值的整数部分
1358
+ """
1359
+ if total is None:
1360
+ total = sum(numbers)
1361
+ width = get_number_width(total)
1362
+ result = []
1363
+ for num in numbers:
1364
+ percent = safe_div(num, total) * 10 ** precision
1365
+ result.append(f"{percent:.0f}{sep}{num:0{width}d}")
1366
+ return result
@@ -25,7 +25,7 @@ import requests
25
25
  from humanfriendly import parse_size
26
26
 
27
27
  from pyxllib.prog.newbie import human_readable_size
28
- from pyxllib.prog.pupil import get_installed_packages
28
+ from pyxllib.prog.pupil import get_installed_packages, aligned_range, percentage_and_value
29
29
  from pyxllib.prog.xlosenv import XlOsEnv
30
30
  from pyxllib.file.specialist import cache_file
31
31
 
@@ -215,3 +215,130 @@ class ProgressBar:
215
215
  time.sleep(1)
216
216
  pbar.n = self.progress
217
217
  pbar.refresh()
218
+
219
+
220
+ class BitMaskTool:
221
+ """ 二进制位掩码工具
222
+
223
+ 概念术语
224
+ bitval,每一个位上的具体取值,0或1
225
+ bitsum,所有位上的取值的和,即二进制数的十进制表示
226
+ """
227
+
228
+ def __init__(self, bit_names=None, bitsum_counter=None):
229
+ """ 初始化 BitMaskTool 对象
230
+
231
+ :param list bit_names: 每一位功能开启时,显示的标签名。未输入时,填充0,1,2,3...注意总数,要按域宽对齐
232
+ :param dict/list bitsum_counter: 各种值出现的次数,可以是一个字典或者一个包含出现次数的列表
233
+ """
234
+ # 1 每一位功能开启时,显示的标签名。未输入时,填充0,1,2,3...注意总数,要按域宽对齐
235
+ if bit_names is None:
236
+ bit_names = list(aligned_range(len(bit_names)))
237
+ self.bit_names = bit_names
238
+ # 2 各种值出现的次数
239
+ if isinstance(bitsum_counter, (list, tuple)):
240
+ bitsum_counter = Counter(bitsum_counter)
241
+ self.bitsum_counter = bitsum_counter or {}
242
+
243
+ def get_bitsum_names(self, bitsum):
244
+ """ 从bitsum得到names的拼接
245
+
246
+ >> get_bitsum_names(3)
247
+ '语义定位,图表'
248
+ """
249
+ if not isinstance(bitsum, int):
250
+ try:
251
+ bitsum = int(bitsum)
252
+ except ValueError:
253
+ bitsum = 0
254
+
255
+ tags = []
256
+ for i, k in enumerate(self.bit_names):
257
+ if (1 << i) & bitsum:
258
+ tags.append(k)
259
+ return ','.join(tags)
260
+
261
+ def count_bitsum_relations(self, target_bitsum, relation='='):
262
+ """ 计算特定关系的 bitsum 数量
263
+
264
+ :param int target_bitsum: 目标 bitsum
265
+ :param str relation: 关系类型,可以是 '=', '⊂', '⊃'
266
+ 假设bitval对应的bit_names为n1,n2,n3,n4。
267
+ 那么bitsum相当于是bitval的一个集合
268
+ 比如a={n1,n3,n4},b={n1,n3},因为a完全包含b,所以认为a⊃b,或者a⊋b、b⊂a、b⊊a
269
+ :return int: 符合条件的 bitsum 数量
270
+ """
271
+ count = 0
272
+ if relation == '=':
273
+ # 直接计算等于 target_bitsum 的数量
274
+ count = self.bitsum_counter.get(target_bitsum, 0)
275
+ elif relation == '⊂':
276
+ # 计算所有被 target_bitsum 包含的 bitsum 的数量
277
+ for bitsum, num in self.bitsum_counter.items():
278
+ if bitsum and bitsum & target_bitsum == bitsum:
279
+ count += num
280
+ elif relation == '⊃':
281
+ # 计算所有包含 target_bitsum 的 bitsum 的数量
282
+ for bitsum, num in self.bitsum_counter.items():
283
+ if bitsum & target_bitsum == target_bitsum:
284
+ count += num
285
+ return count
286
+
287
+ def check_bitflag(self, max_bitsum_len=None, reletion='=',
288
+ filter_zero=False, sort_by=None, *,
289
+ min_bitsum_len=0):
290
+ """ 检查并返回 bitsum 关系的 DataFrame
291
+
292
+ :param int max_bitsum_len: 最大 bitsum 长度
293
+ :param str reletion: 关系类型,可以是 '=', '⊂', '⊃'
294
+ 支持输入多个字符,表示要同时计算多种关系
295
+ :param bool filter_zero: 是否过滤掉零值
296
+ :param None|str sort_by: 排序字段
297
+ None, 默认排序
298
+ count, 按照数量从大到小排序
299
+ bitsum, 按照 bitsum 从小到大排序
300
+ :param int min_bitsum_len: 最小 bitsum 长度
301
+ :return: 包含 bitsum 关系的 DataFrame
302
+ """
303
+ from itertools import combinations
304
+
305
+ total = sum(self.bitsum_counter.values())
306
+ rows, columns = [], ['类型', '名称', '百分比.次数']
307
+ rows.append([-1, '总计', total])
308
+
309
+ if max_bitsum_len is None:
310
+ max_bitsum_len = len(self.bit_names)
311
+
312
+ bitvals = [(1 << i) for i in range(len(self.bit_names))]
313
+ for m in range(min_bitsum_len, max_bitsum_len + 1):
314
+ for comb in combinations(bitvals, m):
315
+ bitsum = sum(comb)
316
+ count = self.count_bitsum_relations(bitsum, relation=reletion)
317
+ if filter_zero and count == 0:
318
+ continue
319
+ rows.append([f'{reletion}{bitsum}',
320
+ self.get_bitsum_names(bitsum),
321
+ count])
322
+
323
+ if sort_by == 'count':
324
+ rows.sort(key=lambda x: x[2], reverse=True)
325
+ elif sort_by == 'bitsum':
326
+ rows.sort(key=lambda x: int(x[0][1:]) if isinstance(x[0], str) else x[0])
327
+
328
+ df = pd.DataFrame.from_records(rows, columns=columns)
329
+ df['百分比.次数'] = percentage_and_value(df['百分比.次数'], 2, total=total)
330
+ return df
331
+
332
+ def report(self):
333
+ """ 生成统计报告 """
334
+ html_content = []
335
+
336
+ html_content.append('<h1>1 包含每一位bitval特征的数量</h1>')
337
+ df1 = self.check_bitflag(1, '⊃')
338
+ html_content.append(df1.to_html())
339
+
340
+ html_content.append('<h1>2 每一种具体bitsum组合的数量</h1>')
341
+ df2 = self.check_bitflag(reletion='=', filter_zero=True, sort_by='bitsum')
342
+ html_content.append(df2.to_html())
343
+
344
+ return '\n'.join(html_content)
@@ -250,7 +250,7 @@ class TextClassifier:
250
250
  return sims[:maxn]
251
251
 
252
252
  def refine_vecs(self):
253
- """ 优化向量数据 """
253
+ """ 优化向量数据,去掉权重小余0.0001的维度 """
254
254
  # 1 计算每个向量的长度
255
255
  vecs = []
256
256
  for vec in tqdm(self.vecs, '优化向量'):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.122
3
+ Version: 0.3.124
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -22,6 +22,8 @@ import humanfriendly
22
22
 
23
23
  import paddle
24
24
  import paddle.inference as paddle_infer
25
+ import paddle.io
26
+ # from paddle.io import DataLoader, Dataset
25
27
 
26
28
  from pyxllib.algo.pupil import natural_sort
27
29
  from pyxllib.xl import XlPath, browser
@@ -53,18 +55,13 @@ class SequenceDataset(paddle.io.Dataset):
53
55
  if self.labels is not None:
54
56
  return x, self.labels[index]
55
57
  else:
56
- return x
58
+ return x
57
59
 
58
60
 
59
61
  def build_testdata_loader(samples, *, labels=None, transform=None, **kwargs):
60
- """ 简化的一个创建paddle的DataLoader的函数。主要用于简化部署阶段的推理。
61
-
62
- :param samples: list类型的输入格式
63
62
  """
64
- import paddle.fluid.dataloader.fetcher
65
- # 暂时不知道怎么关闭这个警告,先用暴力方法
66
- paddle.fluid.dataloader.fetcher._WARNING_TO_LOG = False
67
-
63
+ 简化的一个创建paddle的DataLoader的函数。主要用于简化部署阶段的推理。
64
+ """
68
65
  if isinstance(samples, paddle.io.DataLoader):
69
66
  return samples
70
67
  elif isinstance(samples, paddle.io.Dataset):
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import json
2
3
  from json import dumps as jsonDumps
3
4
  from json import loads as jsonLoads
4
5
  from pathlib import Path
@@ -423,6 +424,10 @@ class Chat:
423
424
  })
424
425
  answer: str = completion.choices[0].message.content
425
426
  self._messages.add_many(*messages, {"role": "assistant", "content": answer})
427
+
428
+ if response_json:
429
+ answer = json.loads(answer)
430
+
426
431
  return answer
427
432
 
428
433
  def query_image(self, prompt,
@@ -45,7 +45,7 @@ _dir = Path(__file__).parent
45
45
 
46
46
  setup(
47
47
  name='pyxllib', # pip 安装时用的名字
48
- version='0.3.122', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
48
+ version='0.3.124', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
49
49
  author='code4101',
50
50
  author_email='877362867@qq.com',
51
51
  url='https://github.com/XLPRUtils/pyxllib',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes