pyxllib 0.3.123__tar.gz → 0.3.125__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 (358) hide show
  1. pyxllib-0.3.125/MANIFEST.in +4 -0
  2. {pyxllib-0.3.123/pyxllib.egg-info → pyxllib-0.3.125}/PKG-INFO +1 -1
  3. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/pupil.py +0 -21
  4. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/data/echarts.py +56 -12
  5. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/data/sqlite.py +10 -0
  6. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/drissionlib.py +28 -0
  7. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/pdflib.py +1 -1
  8. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/pupil.py +50 -0
  9. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/specialist/__init__.py +128 -1
  10. pyxllib-0.3.125/pyxllib/text/templates/echart_base.html +11 -0
  11. pyxllib-0.3.125/pyxllib/text/templates/highlight_code.html +17 -0
  12. pyxllib-0.3.125/pyxllib/text/templates/latex_editor.html +103 -0
  13. {pyxllib-0.3.123 → pyxllib-0.3.125/pyxllib.egg-info}/PKG-INFO +1 -1
  14. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib.egg-info/SOURCES.txt +3 -0
  15. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ai/xlpaddle.py +5 -8
  16. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/openai2/_core/chat.py +5 -0
  17. {pyxllib-0.3.123 → pyxllib-0.3.125}/setup.py +1 -1
  18. pyxllib-0.3.123/MANIFEST.in +0 -3
  19. {pyxllib-0.3.123 → pyxllib-0.3.125}/LICENSE +0 -0
  20. {pyxllib-0.3.123 → pyxllib-0.3.125}/README.md +0 -0
  21. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/__init__.py +0 -0
  22. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/__init__.py +0 -0
  23. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/disjoint.py +0 -0
  24. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/geo.py +0 -0
  25. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/intervals.py +0 -0
  26. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/matcher.py +0 -0
  27. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/newbie.py +0 -0
  28. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/shapelylib.py +0 -0
  29. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/specialist.py +0 -0
  30. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/stat.py +0 -0
  31. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/treelib.py +0 -0
  32. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/algo/unitlib.py +0 -0
  33. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/__init__.py +0 -0
  34. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/expert.py +0 -0
  35. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/imfile.py +0 -0
  36. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/imhash.py +0 -0
  37. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/pupil.py +0 -0
  38. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/rgbfmt.py +0 -0
  39. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/trackbartools.py +0 -0
  40. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/xlcvlib.py +0 -0
  41. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/cv/xlpillib.py +0 -0
  42. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/data/__init__.py +0 -0
  43. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/data/jsonlib.py +0 -0
  44. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/data/oss.py +0 -0
  45. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/data/pglib.py +0 -0
  46. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/data/sqllib.py +0 -0
  47. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/JLineViewer.py +0 -0
  48. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/__init__.py +0 -0
  49. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/autogui/__init__.py +0 -0
  50. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/autogui/autogui.py +0 -0
  51. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/autogui/virtualkey.py +0 -0
  52. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/demolib.py +0 -0
  53. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/kq5034lib.py +0 -0
  54. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/old.py +0 -0
  55. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/qt.py +0 -0
  56. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/robustprocfile.py +0 -0
  57. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/seleniumlib.py +0 -0
  58. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/tk.py +0 -0
  59. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/unixlib.py +0 -0
  60. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/utools.py +0 -0
  61. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/webhook.py +0 -0
  62. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/win32lib.py +0 -0
  63. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/ext/yuquelib.py +0 -0
  64. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/__init__.py +0 -0
  65. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/docxlib.py +0 -0
  66. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/gitlib.py +0 -0
  67. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/libreoffice.py +0 -0
  68. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/movielib.py +0 -0
  69. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/newbie.py +0 -0
  70. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/onenotelib.py +0 -0
  71. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/packlib/__init__.py +0 -0
  72. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/packlib/zipfile.py +0 -0
  73. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/pupil.py +0 -0
  74. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/specialist/__init__.py +0 -0
  75. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/specialist/dirlib.py +0 -0
  76. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/specialist/download.py +0 -0
  77. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/specialist/filelib.py +0 -0
  78. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/file/xlsxlib.py +0 -0
  79. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/__init__.py +0 -0
  80. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/cachetools.py +0 -0
  81. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/deprecatedlib.py +0 -0
  82. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/ipyexec.py +0 -0
  83. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/multiprocs.py +0 -0
  84. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/newbie.py +0 -0
  85. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/scheduler.py +0 -0
  86. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/sitepackages.py +0 -0
  87. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/specialist/bc.py +0 -0
  88. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/specialist/browser.py +0 -0
  89. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/specialist/common.py +0 -0
  90. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/specialist/datetime.py +0 -0
  91. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/specialist/tictoc.py +0 -0
  92. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/specialist/xllog.py +0 -0
  93. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/prog/xlosenv.py +0 -0
  94. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/stdlib/__init__.py +0 -0
  95. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  96. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  97. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  98. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/__init__.py +0 -0
  99. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/ahocorasick.py +0 -0
  100. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/charclasslib.py +0 -0
  101. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/jiebalib.py +0 -0
  102. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/jinjalib.py +0 -0
  103. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/jscode.py +0 -0
  104. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/latex/__init__.py +0 -0
  105. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/levenshtein.py +0 -0
  106. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/nestenv.py +0 -0
  107. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/newbie.py +0 -0
  108. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/pupil/__init__.py +0 -0
  109. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/pupil/common.py +0 -0
  110. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/pupil/xlalign.py +0 -0
  111. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/pycode.py +0 -0
  112. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/specialist/__init__.py +0 -0
  113. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/specialist/common.py +0 -0
  114. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/specialist/ptag.py +0 -0
  115. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/spellchecker.py +0 -0
  116. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/vbacode.py +0 -0
  117. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/text/xmllib.py +0 -0
  118. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/xl.py +0 -0
  119. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib/xlcv.py +0 -0
  120. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib.egg-info/dependency_links.txt +0 -0
  121. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib.egg-info/requires.txt +10 -10
  122. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxllib.egg-info/top_level.txt +0 -0
  123. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/__init__.py +0 -0
  124. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ai/__init__.py +0 -0
  125. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ai/clientlib.py +0 -0
  126. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ai/specialist.py +0 -0
  127. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ai/torch_app.py +0 -0
  128. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ai/xltorch.py +0 -0
  129. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/__init__.py +0 -0
  130. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/coco.py +0 -0
  131. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/datacls.py +0 -0
  132. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/datasets.py +0 -0
  133. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/gptlib.py +0 -0
  134. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/icdar/__init__.py +0 -0
  135. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/icdar/deteval.py +0 -0
  136. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/icdar/icdar2013.py +0 -0
  137. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/icdar/iou.py +0 -0
  138. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  139. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/imtextline.py +0 -0
  140. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/labelme.py +0 -0
  141. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/removeline.py +0 -0
  142. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/specialist.py +0 -0
  143. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/data/tiktokenlib.py +0 -0
  144. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/eval/__init__.py +0 -0
  145. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/openai2/__init__.py +0 -0
  146. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
  147. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/openai2/_core/group_chat.py +0 -0
  148. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/openai2/openai2.py +0 -0
  149. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/paddleocr.py +0 -0
  150. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/__init__.py +0 -0
  151. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  152. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/__init__.py +0 -0
  153. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  154. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  155. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  156. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  157. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  158. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  159. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  160. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  161. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  162. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  163. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  164. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  165. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  166. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  167. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  168. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  169. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  170. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  171. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  172. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  173. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  174. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  175. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  176. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/__init__.py +0 -0
  177. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  178. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  179. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  180. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  181. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  182. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  183. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  184. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  185. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  186. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  187. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  188. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  189. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  190. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  191. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  192. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  193. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  194. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  195. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  196. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  197. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  198. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  199. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  200. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  201. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  202. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  203. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  204. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  205. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  206. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  207. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  208. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  209. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  210. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  211. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  212. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  213. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  214. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  215. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  216. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  217. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  218. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  219. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  220. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  221. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  222. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  223. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  224. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  225. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  226. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  227. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  228. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  229. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  230. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  231. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  232. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  233. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  234. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  235. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  236. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  237. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  238. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  239. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  240. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  241. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  242. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  243. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  244. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  245. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  246. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  247. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  248. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  249. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  250. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  251. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  252. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  253. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  254. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  255. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  256. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  257. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  258. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  259. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  260. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  261. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  262. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  263. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  264. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  265. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  266. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  267. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  268. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  269. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/__init__.py +0 -0
  270. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/eval.py +0 -0
  271. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/export_center.py +0 -0
  272. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/export_model.py +0 -0
  273. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  274. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  275. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  276. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  277. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  278. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  279. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  280. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  281. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  282. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  283. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  284. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  285. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/program.py +0 -0
  286. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  287. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/train.py +0 -0
  288. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  289. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  290. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/__init__.py +0 -0
  291. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  292. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  293. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  294. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  295. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  296. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  297. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  298. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  299. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  300. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  301. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  302. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  303. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  304. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  305. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  306. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  307. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  308. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  309. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  310. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  311. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  312. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  313. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  314. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  315. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  316. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  317. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  318. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  319. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  320. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  321. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  322. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  323. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  324. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  325. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  326. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  327. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  328. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  329. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  330. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  331. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  332. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  333. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  334. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/iou.py +0 -0
  335. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/logging.py +0 -0
  336. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/network.py +0 -0
  337. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  338. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/profiler.py +0 -0
  339. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/save_load.py +0 -0
  340. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/stats.py +0 -0
  341. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppocr/utils/utility.py +0 -0
  342. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/__init__.py +0 -0
  343. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/predict_system.py +0 -0
  344. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/__init__.py +0 -0
  345. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  346. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/matcher.py +0 -0
  347. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  348. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  349. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  350. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  351. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  352. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  353. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  354. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  355. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/ppstructure/utility.py +0 -0
  356. {pyxllib-0.3.123 → pyxllib-0.3.125}/pyxlpr/xlai.py +0 -0
  357. {pyxllib-0.3.123 → pyxllib-0.3.125}/requirements.txt +0 -0
  358. {pyxllib-0.3.123 → pyxllib-0.3.125}/setup.cfg +0 -0
@@ -0,0 +1,4 @@
1
+ include README.md
2
+ include requirements.txt
3
+ recursive-include pyxllib *.html
4
+ recursive-include pyxlpr *.py *.txt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.123
3
+ Version: 0.3.125
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
-
@@ -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
@@ -51,6 +51,34 @@ def get_dp_page(dp_page=None) -> 'XlPage':
51
51
  return ChromiumPage()
52
52
 
53
53
 
54
+ def get_dp_tab(dp_page=None) -> 'XlPage':
55
+ """ 智能获取一个标签页tab
56
+
57
+ :param dp_page:
58
+ 默认None, 返回默认的page,一般就是当前页面
59
+ True, 新建一个page
60
+ str, 新建一个对应url的page
61
+ func(tab), 通过规则筛选tab,返回符合条件的第1个tab,否则新建一个tab
62
+ """
63
+
64
+ if isinstance(dp_page, ChromiumPage):
65
+ return dp_page.latest_tab
66
+ elif isinstance(dp_page, ChromiumTab):
67
+ return dp_page
68
+ elif callable(dp_page):
69
+ page0 = ChromiumPage()
70
+ for tab in page0.get_tabs():
71
+ if dp_page(tab):
72
+ return tab
73
+ return page0.new_tab()
74
+ elif dp_page is True:
75
+ return ChromiumPage().new_tab()
76
+ elif isinstance(dp_page, str):
77
+ return ChromiumPage().new_tab(dp_page)
78
+ else:
79
+ return ChromiumPage().latest_tab
80
+
81
+
54
82
  def get_latest_not_dev_tab(page=None):
55
83
  """ 开发工具本身也会算一个tab,这个函数返回最新的一个不是开发工具的tab """
56
84
  if page is None:
@@ -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
@@ -1314,3 +1314,53 @@ def tprint(*args, **kwargs):
1314
1314
  def is_valid_identifier(name):
1315
1315
  """ 判断是否是合法的标识符 """
1316
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)
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>{{ title }}</title>
6
+ <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
7
+ </head>
8
+ <body>
9
+ {{ body }}
10
+ </body>
11
+ </html>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>{{ title }}</title>
5
+ <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>
6
+ {% if use_mathjax %}
7
+ <script src="https://a.cdn.histudy.com/lib/config/mathjax_config-klxx.js?v=1.1"></script>
8
+ <script type="text/javascript" async="" src="https://a.cdn.histudy.com/lib/mathjax/2.7.1/MathJax/MathJax.js?config=TeX-AMS-MML_SVG">
9
+ MathJax.Hub.Config(MATHJAX_KLXX_CONFIG);
10
+ </script>
11
+ {% else %}
12
+ {% endif%}
13
+ </head>
14
+ <body>
15
+ {{ body }}
16
+ </body>
17
+ </html>
@@ -0,0 +1,103 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <style>
6
+ body {
7
+ background-color: #A4C0A7;
8
+ }
9
+
10
+ topic {
11
+ display: block;
12
+ border-style: solid;
13
+ border-color: gray;
14
+ padding: 9px;
15
+ margin: 3px;
16
+ zoom: 1.5
17
+ }
18
+
19
+ textarea {
20
+ display: block;
21
+ border-style: solid;
22
+ background-color: #A4C0A7;
23
+ margin: 3px;
24
+ width: 99%;
25
+ border-color: gray;
26
+ zoom: 2
27
+ }
28
+ </style>
29
+ <title>LaTeX公式草稿 </title>
30
+ <script type="text/javascript" src="https://tr.histudy.com/static/js/load-mathjax.js"></script>
31
+ </head>
32
+ <body id="oliga">
33
+
34
+ <textarea id="mID1" rows="9" autofocus="autofocus" >
35
+ {{ text }}
36
+ </textarea>
37
+
38
+ <button accesskey="`" onclick="rTeX('mID1')" >
39
+ 按【Alt + `】刷新渲染
40
+ </button>
41
+ <button accesskey="A" onclick="混合渲染()" >
42
+ 按【Alt + A】 或 【F1】 刷新渲染混杂模式
43
+ </button>
44
+ 按 【F4】 开启/关闭时时渲染,按 【F5】 刷新重置
45
+
46
+ <topic id="mID1renderer">
47
+ </topic>
48
+
49
+ </body>
50
+
51
+ <script>
52
+
53
+ function 公式渲染(s){ return ' ' + MathJax.tex2svg(s.replace(/\$/g, '')).firstChild.outerHTML + ' '}
54
+
55
+ function tabular转html(s){
56
+ s = s.replace(/\\begin\{tabular\}.+?}/g, '<table border=1 >\n<tr><td>').replace(/(\\hline|\\cline\{.+?\})/g, ' ')
57
+ s = s.replace(/\\\\\s*\\end\{tabular\}/g, '\\end\{tabular\}')
58
+ s = s.replace(/\\end\{tabular\}/g, '</td></tr>\n</table>')
59
+ s = s.replace(/\\\\/g, '</td></tr>\n <tr><td>').replace(/&/g, '</td><td>')
60
+ return s
61
+ }
62
+
63
+ function 混合渲染(){
64
+ t = document.getElementById('mID1').value
65
+ // t = t.replace(/\$.+?\$/g, 公式渲染).replace(/\n\n+/g, '\n<p/>')
66
+ t = t.replace(/\$\n?([^\n\$]+\n?)+\$/g, 公式渲染).replace(/\n\n+/g, '\n<p/>')
67
+ t = t.replace(/\\begin\{tabular\}[\S\s]+?\\end\{tabular\}/gm, tabular转html)
68
+ t = t.replace(/\\ce\{.+?\}/g, 公式渲染) // 不严谨
69
+ document.getElementById("mID1renderer").innerHTML = t
70
+ document.getElementById('mID1').focus()
71
+ }
72
+
73
+ 时时渲染 = false
74
+ function relax(){console.log('休息')}
75
+ document.onkeyup = 混合渲染
76
+
77
+ document.onkeydown = function hotkey(keyboardPressed) {
78
+ var theKeyPressed = window.event.keyCode;
79
+ if (theKeyPressed == 112){console.log('按了F1,一次渲染'); 混合渲染() ; keyboardPressed.preventDefault(); return false;}
80
+ else if (theKeyPressed == 115){console.log('按了F4,开启动态渲染');
81
+ if (时时渲染) {时时渲染 = false; document.onkeyup = relax } else {时时渲染 = true; document.onkeyup = 混合渲染; 混合渲染()} ;
82
+ keyboardPressed.preventDefault(); return false;}
83
+ }
84
+
85
+
86
+ function rTeX(MathID) {
87
+ if (document.getElementById(MathID).value.includes('$')) {混合渲染(); alert('不用手工加美元符,会自动加,\n\n你加了美元符我就认为是《混合》型【公式+文本】'); return false}
88
+ document.getElementById(MathID + "renderer").innerHTML = MathJax.tex2svg(document.getElementById(MathID).value).firstChild.outerHTML
89
+ <!--let mathTopic = document.getElementById("da");-->
90
+ <!--MathJax.Hub.queue(["Typeset", MathJax.Hub]);-->
91
+ <!--MathJax.Hub.Typeset(["da"]);-->
92
+ document.getElementById(MathID).focus()
93
+ console.log('可以考虑用前后兄弟节点:previousSibling、nextSibling,相对节点')
94
+ }
95
+
96
+ function enableMathType() {
97
+ document.getElementById("MathLoader").src="https://tr.histudy.com/static/js/load-mathjax.js";
98
+ }
99
+ </script>
100
+
101
+ <script type="text/javascript" ID="MathLoader"></script>
102
+
103
+ </html>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.123
3
+ Version: 0.3.125
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -114,6 +114,9 @@ pyxllib/text/pupil/xlalign.py
114
114
  pyxllib/text/specialist/__init__.py
115
115
  pyxllib/text/specialist/common.py
116
116
  pyxllib/text/specialist/ptag.py
117
+ pyxllib/text/templates/echart_base.html
118
+ pyxllib/text/templates/highlight_code.html
119
+ pyxllib/text/templates/latex_editor.html
117
120
  pyxlpr/__init__.py
118
121
  pyxlpr/paddleocr.py
119
122
  pyxlpr/xlai.py
@@ -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.123', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
48
+ version='0.3.125', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
49
49
  author='code4101',
50
50
  author_email='877362867@qq.com',
51
51
  url='https://github.com/XLPRUtils/pyxllib',
@@ -1,3 +0,0 @@
1
- include README.md
2
- include requirements.txt
3
- recursive-include pyxlpr *.py *.txt
File without changes
File without changes
File without changes
File without changes