pyxllib 0.3.56__tar.gz → 0.3.57__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 (333) hide show
  1. {pyxllib-0.3.56/pyxllib.egg-info → pyxllib-0.3.57}/PKG-INFO +1 -1
  2. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/JLineViewer.py +4 -3
  3. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/kq5034lib.py +2 -2
  4. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/specialist/filelib.py +1 -0
  5. {pyxllib-0.3.56 → pyxllib-0.3.57/pyxllib.egg-info}/PKG-INFO +1 -1
  6. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/gptlib.py +212 -25
  7. {pyxllib-0.3.56 → pyxllib-0.3.57}/setup.py +1 -1
  8. {pyxllib-0.3.56 → pyxllib-0.3.57}/LICENSE +0 -0
  9. {pyxllib-0.3.56 → pyxllib-0.3.57}/MANIFEST.in +0 -0
  10. {pyxllib-0.3.56 → pyxllib-0.3.57}/README.md +0 -0
  11. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/__init__.py +0 -0
  12. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/__init__.py +0 -0
  13. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/disjoint.py +0 -0
  14. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/geo.py +0 -0
  15. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/intervals.py +0 -0
  16. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/newbie.py +0 -0
  17. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/pupil.py +0 -0
  18. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/shapelylib.py +0 -0
  19. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/specialist.py +0 -0
  20. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/stat.py +0 -0
  21. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/treelib.py +0 -0
  22. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/unitlib.py +0 -0
  23. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/__init__.py +0 -0
  24. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/expert.py +0 -0
  25. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/imfile.py +0 -0
  26. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/imhash.py +0 -0
  27. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/pupil.py +0 -0
  28. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/rgbfmt.py +0 -0
  29. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/trackbartools.py +0 -0
  30. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/xlcvlib.py +0 -0
  31. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/xlpillib.py +0 -0
  32. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/__init__.py +0 -0
  33. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/echarts.py +0 -0
  34. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/oss.py +0 -0
  35. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/pglib.py +0 -0
  36. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/sqlite.py +0 -0
  37. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/sqllib.py +0 -0
  38. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/__init__.py +0 -0
  39. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/autogui/__init__.py +0 -0
  40. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/autogui/autogui.py +0 -0
  41. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/autogui/virtualkey.py +0 -0
  42. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/demolib.py +0 -0
  43. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/old.py +0 -0
  44. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/qt.py +0 -0
  45. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/seleniumlib.py +0 -0
  46. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/tk.py +0 -0
  47. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/unixlib.py +0 -0
  48. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/utools.py +0 -0
  49. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/webhook.py +0 -0
  50. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/win32lib.py +0 -0
  51. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/__init__.py +0 -0
  52. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/docxlib.py +0 -0
  53. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/gitlib.py +0 -0
  54. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/movielib.py +0 -0
  55. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/newbie.py +0 -0
  56. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/onenotelib.py +0 -0
  57. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/packlib/__init__.py +0 -0
  58. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/packlib/zipfile.py +0 -0
  59. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/pdflib.py +0 -0
  60. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/pupil.py +0 -0
  61. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/specialist/__init__.py +0 -0
  62. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/specialist/dirlib.py +0 -0
  63. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/specialist/download.py +0 -0
  64. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/xlsxlib.py +0 -0
  65. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/__init__.py +0 -0
  66. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/deprecatedlib.py +0 -0
  67. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/newbie.py +0 -0
  68. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/pupil.py +0 -0
  69. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/sitepackages.py +0 -0
  70. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/__init__.py +0 -0
  71. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/bc.py +0 -0
  72. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/browser.py +0 -0
  73. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/common.py +0 -0
  74. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/datetime.py +0 -0
  75. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/tictoc.py +0 -0
  76. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/xllog.py +0 -0
  77. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/xlosenv.py +0 -0
  78. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/stdlib/__init__.py +0 -0
  79. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  80. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  81. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  82. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/__init__.py +0 -0
  83. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/ahocorasick.py +0 -0
  84. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/latex/__init__.py +0 -0
  85. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/levenshtein.py +0 -0
  86. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/nestenv.py +0 -0
  87. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/newbie.py +0 -0
  88. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/pupil/__init__.py +0 -0
  89. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/pupil/common.py +0 -0
  90. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/pupil/xlalign.py +0 -0
  91. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/pycode.py +0 -0
  92. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/specialist/__init__.py +0 -0
  93. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/specialist/common.py +0 -0
  94. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/specialist/ptag.py +0 -0
  95. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/spellchecker.py +0 -0
  96. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/xmllib.py +0 -0
  97. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/xl.py +0 -0
  98. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/xlcv.py +0 -0
  99. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib.egg-info/SOURCES.txt +0 -0
  100. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib.egg-info/dependency_links.txt +0 -0
  101. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib.egg-info/requires.txt +6 -6
  102. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib.egg-info/top_level.txt +0 -0
  103. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/__init__.py +0 -0
  104. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/__init__.py +0 -0
  105. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/clientlib.py +0 -0
  106. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/specialist.py +0 -0
  107. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/torch_app.py +0 -0
  108. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/xlpaddle.py +0 -0
  109. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/xltorch.py +0 -0
  110. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/__init__.py +0 -0
  111. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/coco.py +0 -0
  112. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/datacls.py +0 -0
  113. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/datasets.py +0 -0
  114. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/__init__.py +0 -0
  115. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/deteval.py +0 -0
  116. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/icdar2013.py +0 -0
  117. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/iou.py +0 -0
  118. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  119. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/imtextline.py +0 -0
  120. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/labelme.py +0 -0
  121. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/removeline.py +0 -0
  122. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/specialist.py +0 -0
  123. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/eval/__init__.py +0 -0
  124. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/paddleocr.py +0 -0
  125. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/__init__.py +0 -0
  126. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  127. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/__init__.py +0 -0
  128. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  129. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  130. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  131. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  132. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  133. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  134. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  135. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  136. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  137. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  138. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  139. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  140. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  141. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  142. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  143. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  144. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  145. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  146. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  147. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  148. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  149. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  150. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  151. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/__init__.py +0 -0
  152. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  153. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  154. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  155. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  156. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  157. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  158. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  159. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  160. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  161. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  162. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  163. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  164. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  165. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  166. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  167. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  168. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  169. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  170. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  171. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  172. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  173. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  174. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  175. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  176. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  177. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  178. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  179. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  180. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  181. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  182. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  183. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  184. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  185. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  186. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  187. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  188. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  189. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  190. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  191. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  192. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  193. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  194. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  195. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  196. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  197. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  198. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  199. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  200. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  201. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  202. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  203. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  204. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  205. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  206. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  207. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  208. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  209. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  210. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  211. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  212. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  213. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  214. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  215. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  216. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  217. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  218. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  219. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  220. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  221. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  222. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  223. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  224. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  225. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  226. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  227. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  228. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  229. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  230. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  231. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  232. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  233. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  234. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  235. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  236. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  237. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  238. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  239. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  240. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  241. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  242. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  243. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  244. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/__init__.py +0 -0
  245. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/eval.py +0 -0
  246. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/export_center.py +0 -0
  247. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/export_model.py +0 -0
  248. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  249. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  250. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  251. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  252. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  253. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  254. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  255. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  256. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  257. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  258. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  259. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  260. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/program.py +0 -0
  261. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  262. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/train.py +0 -0
  263. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  264. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  265. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/__init__.py +0 -0
  266. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  267. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  268. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  269. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  270. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  271. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  272. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  273. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  274. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  275. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  276. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  277. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  278. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  279. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  280. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  281. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  282. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  283. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  284. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  285. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  286. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  287. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  288. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  289. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  290. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  291. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  292. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  293. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  294. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  295. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  296. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  297. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  298. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  299. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  300. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  301. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  302. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  303. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  304. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  305. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  306. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  307. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  308. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  309. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/iou.py +0 -0
  310. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/logging.py +0 -0
  311. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/network.py +0 -0
  312. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  313. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/profiler.py +0 -0
  314. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/save_load.py +0 -0
  315. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/stats.py +0 -0
  316. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/utility.py +0 -0
  317. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/__init__.py +0 -0
  318. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/predict_system.py +0 -0
  319. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/__init__.py +0 -0
  320. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  321. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/matcher.py +0 -0
  322. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  323. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  324. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  325. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  326. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  327. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  328. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  329. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  330. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/utility.py +0 -0
  331. {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/xlai.py +0 -0
  332. {pyxllib-0.3.56 → pyxllib-0.3.57}/requirements.txt +0 -0
  333. {pyxllib-0.3.56 → pyxllib-0.3.57}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.56
3
+ Version: 0.3.57
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -75,7 +75,7 @@ class TextEditDelegate(QItemDelegate):
75
75
 
76
76
  def sizeHint(self, option, index):
77
77
  size = super().sizeHint(option, index)
78
- size.setHeight(20) # 限制最大高度为20像素
78
+ size.setHeight(20) # 限制最大高度为20像素,限定每个条目只展示一行
79
79
  return size
80
80
 
81
81
  def setModelData(self, editor, model, index):
@@ -173,13 +173,14 @@ class JLineViewer(QMainWindow):
173
173
  self.setWindowTitle('JLineEditor')
174
174
  self.treeView.setAlternatingRowColors(True)
175
175
  self.treeView.setIndentation(20)
176
- self.treeView.setSortingEnabled(True)
177
- self.treeView.setStyleSheet(LargeStrings.treeViewStyles)
176
+ # self.treeView.setSortingEnabled(True)
177
+ # self.treeView.setStyleSheet(LargeStrings.treeViewStyles)
178
178
  self.plainTextEdit.setWordWrapMode(QTextOption.WordWrap)
179
179
  self.plainTextEdit.setReadOnly(True)
180
180
  self.showMaximized()
181
181
 
182
182
  self.treeView.setSortingEnabled(False) # 禁止排序
183
+ self.treeView.setAnimated(False)
183
184
  self.plainTextEdit.textChanged.connect(self.updateJson) # 连接 textChanged 信号到新的槽函数
184
185
 
185
186
  def addPane(self, widget, title):
@@ -1334,10 +1334,10 @@ class 课次数据:
1334
1334
  else:
1335
1335
  return '未开始学习'
1336
1336
 
1337
- def 小鹅通考勤结果2(self, user_id, 返款梯度, 需求分钟=30):
1337
+ def 小鹅通考勤结果2(self, user_id, 返款梯度, 要求在线分钟=30):
1338
1338
  """ 输入视频返款的梯度,这个函数相比`小鹅通考勤结果`,还会返回单元格颜色格式,对应的返款额 """
1339
1339
  # 1 判断课程回放是不是结束了
1340
- text = self.小鹅通考勤结果(user_id, 需求分钟)
1340
+ text = self.小鹅通考勤结果(user_id, 要求在线分钟)
1341
1341
  if text == '未开始学习' or '不足' in text: # 判断该课次是否已经结束了
1342
1342
  delta_day = datetime.timedelta(days=len(返款梯度))
1343
1343
  if (delta_day + self.start_day) <= datetime.date.today():
@@ -2211,6 +2211,7 @@ class TwinDirs:
2211
2211
 
2212
2212
  :param XlPath src_file: 原文件位置(其实输入目录类型也是可以的,内部实现逻辑一致的)
2213
2213
  """
2214
+ src_file = XlPath(src_file)
2214
2215
  _src_file = src_file.relpath(self.src_dir)
2215
2216
  dst_file = self.dst_dir / _src_file
2216
2217
  dst_dir = dst_file.parent
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.56
3
+ Version: 0.3.57
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -3,6 +3,7 @@
3
3
  # @Author : 陈坤泽
4
4
  # @Email : 877362867@qq.com
5
5
  # @Date : 2023/07/13 14:26
6
+ import copy
6
7
 
7
8
  from pyxllib.prog.pupil import check_install_package
8
9
 
@@ -20,7 +21,7 @@ from transformers import GPT2TokenizerFast
20
21
 
21
22
  from pyxllib.prog.specialist import browser
22
23
  from pyxllib.algo.pupil import ValuesStat
23
- from pyxllib.file.specialist import XlPath, JsonlDataFile
24
+ from pyxllib.file.specialist import XlPath, JsonlDataFile, TwinDirs
24
25
 
25
26
 
26
27
  def __1_生成提问数据():
@@ -295,7 +296,7 @@ class GptChatJsonl(JsonlDataFile):
295
296
  ls.append(t)
296
297
  else:
297
298
  if "file_path" in t:
298
- ls.append(("filep_path=" + t["file_path"] + "\n\n") + t["content"])
299
+ ls.append(("filep_path=" + str(t["file_path"]) + "\n\n") + t["content"])
299
300
  else:
300
301
  ls.append(t["content"])
301
302
  return ls
@@ -336,36 +337,124 @@ class GptChatJsonl(JsonlDataFile):
336
337
  # 输出过滤后的sessions数量
337
338
  print(f"过滤后的sessions数量:{len(self.records)}")
338
339
 
340
+ @classmethod
341
+ def _parse_single_record_answer_contents(cls, record):
342
+ """ 注意本函数不做record备份 """
343
+ for answer in record.get('all_answers', []):
344
+ if isinstance(answer, dict) and 'contents' in answer:
345
+ n = len(answer['contents'])
346
+ for i in range(n - 1, -1, -1):
347
+ message = answer['contents'][i]['message']
348
+ if message and 'content' in message and 'error' not in message:
349
+ break
350
+ else:
351
+ answer['contents'] = ''
352
+ continue
353
+
354
+ content = message['content']
355
+ if 'parts' in content:
356
+ content = '\n'.join(content['parts'])
357
+ else:
358
+ content = content['text']
359
+ answer['contents'] = content
360
+
361
+ @classmethod
362
+ def _parse_single_record_answer_downloads(cls, record):
363
+ for answer in record.get('all_answers', []):
364
+ if 'downloads' in answer:
365
+ for i, link in enumerate(answer['downloads']):
366
+ m = re.search(r'filename%3D(.+?)&sig=', link)
367
+ if m:
368
+ answer['downloads'][i] = unquote(unquote(m.group(1)))
369
+
370
+ @classmethod
371
+ def parse_single_record_answer(cls, record):
372
+ cls._parse_single_record_answer_contents(record)
373
+ cls._parse_single_record_answer_downloads(record)
374
+
339
375
  def parse_answer_contents(self):
340
376
  """ 简化解释器返回结果中,contents的结构信息 """
341
377
  for record in self.records:
342
- for answer in record['all_answers']:
343
- if isinstance(answer, dict) and 'contents' in answer:
344
- n = len(answer['contents'])
345
- for i in range(n - 1, -1, -1):
346
- message = answer['contents'][i]['message']
347
- if message and 'content' in message and 'error' not in message:
348
- break
349
- else:
350
- answer['contents'] = ''
351
- continue
352
-
353
- content = message['content']
354
- if 'parts' in content:
355
- content = '\n'.join(content['parts'])
356
- else:
357
- content = content['text']
358
- answer['contents'] = content
378
+ self._parse_single_record_answer_contents(record)
359
379
 
360
380
  def parse_answer_downloads(self):
361
381
  """ 解析,简化下载链接的表达形式 """
362
382
  for record in self.records:
363
- for answer in record['all_answers']:
364
- if 'downloads' in answer:
365
- for i, link in enumerate(answer['downloads']):
366
- m = re.search(r'filename%3D(.+?)&sig=', link)
367
- if m:
368
- answer['downloads'][i] = unquote(unquote(m.group(1)))
383
+ self._parse_single_record_answer_downloads(record)
384
+
385
+ # 目录里的文件名也同理做精简
386
+ for f in self.infile.parent.glob_files():
387
+ if f.name.startswith('OpenAI-download-'):
388
+ f.rename2(f.parent / re.sub(r'OpenAI-download-\d+-', '', f.name),
389
+ if_exists='replace')
390
+
391
+ def filter_to_rechat(self, check_func, rechat_path=None):
392
+ """ 筛选失败的数据到一个新的目录,常用于对chatted数据筛选出未成功的样例,上池子重跑
393
+ 这个不是简单的找出得不到all_answers的,而是可以很精细,包含复杂post、verify的情况
394
+
395
+ :param check_func: 一个函数,接收一个record,返回True或False
396
+ True,表示这个record是对的
397
+ False,表示这个record是错的,要挑选出来
398
+ :param rechat_path: 把挑选出来的数据放到新路径
399
+ """
400
+ if rechat_path is None:
401
+ rechat_path = XlPath(self.infile.parent.as_posix() + '_rechat/in.jsonl')
402
+
403
+ rechat_path = XlPath(rechat_path)
404
+ td = TwinDirs(self.infile.parent, rechat_path.parent)
405
+
406
+ gcj = type(self)()
407
+ for record in self.records:
408
+ if not check_func(record):
409
+ record2 = {}
410
+ for k in ['id', 'text', 'first_text_length', 'extra']:
411
+ record2[k] = record[k]
412
+ gcj.records.append(record2)
413
+ for x in record['text']:
414
+ if 'file_path' in x:
415
+ td.copy_file(td.src_dir / x['file_path'])
416
+
417
+ gcj.save(rechat_path)
418
+ return gcj
419
+
420
+ def update_from_rechat(self, check_func, rechat_path=None):
421
+ """ 从另一份rechat的数据,更新回主master数据
422
+
423
+ :param check_func: 原chatted没过,但是rechatted通过的,需要把数据更新过来
424
+ :param rechat_path: 注意只能传路径,因为可能涉及到文件操作,需要知道目录所在
425
+ 依据这个文件里的record记录更新回self
426
+ """
427
+ if rechat_path is None:
428
+ rechat_path = XlPath(self.infile.parent.as_posix() + '_rechat') / 'out.jsonl'
429
+
430
+ rechat_path = XlPath(rechat_path)
431
+ td = TwinDirs(rechat_path.parent, self.infile.parent)
432
+
433
+ id2index = {x['id']: i for i, x in enumerate(self.records)}
434
+
435
+ gcj = type(self)(rechat_path)
436
+ gcj.parse_answer_contents()
437
+ gcj.parse_answer_downloads()
438
+
439
+ # 需要处理下下载链接名称
440
+ self.parse_answer_downloads()
441
+ gcj.parse_answer_downloads()
442
+
443
+ for y in gcj.records:
444
+ index = id2index[y['id']]
445
+ x = self.records[index]
446
+ if not check_func(x) and check_func(y):
447
+ # 先把x相关的数据删掉
448
+ if 'all_answers' in x:
449
+ for answer in x['all_answers']:
450
+ for fname in answer.get('downloads', []):
451
+ (XlPath(self.infile.parent) / fname).delete()
452
+ # 再把y拷贝过来
453
+ for answer in y['all_answers']:
454
+ for fname in answer.get('downloads', []):
455
+ td.copy_file(td.src_dir / fname)
456
+ self.records[index] = y
457
+ return gcj
369
458
 
370
459
 
371
460
  GptQuestionJsonl = GptChatJsonl # 名称向下兼容
@@ -484,3 +573,101 @@ class GptTrainJsonl(JsonlDataFile):
484
573
 
485
574
  # 或者返回HTML字符串
486
575
  return html_content
576
+
577
+
578
+ def __4_综合集成类():
579
+ pass
580
+
581
+
582
+ class GptChatDir:
583
+ """ 一个目录,包含了一个任务的所有数据,包括in、out、post等文件 """
584
+
585
+ def __init__(self, root):
586
+ self.root = root = XlPath(root)
587
+
588
+ self.chat_file = root / 'in.jsonl'
589
+ self.chatted_file = root / 'out.jsonl'
590
+ self.post_file = root / 'post.jsonl'
591
+
592
+ self.upload_files_dir = root / 'upload_files'
593
+ self.download_files_dir = root / 'download_files'
594
+
595
+ for dir_path in [self.root, self.upload_files_dir, self.download_files_dir]:
596
+ if not dir_path.is_dir():
597
+ dir_path.mkdir(parents=True, exist_ok=True)
598
+
599
+ def init(self):
600
+ """ 一些基础处理 """
601
+ # 1 chat信息
602
+ if self.chatted_file.is_file():
603
+ gcj1 = GptChatJsonl(self.chatted_file)
604
+ elif self.chat_file.is_file():
605
+ gcj1 = GptChatJsonl(self.chat_file)
606
+ else:
607
+ print('请确认是否有生成初始的chat数据')
608
+ return
609
+
610
+ print(f'【{self.root.name}】')
611
+ n = len(gcj1.records)
612
+ m = sum([len(x['text']) for x in gcj1.records])
613
+ print(f'1、chat:{n}条会话*{m / n:.2g}条消息')
614
+ gcj1.check_records()
615
+ print()
616
+
617
+ # 2 chatted信息
618
+ filter_records = [x for x in gcj1.records if 'all_answers' in x]
619
+ if filter_records:
620
+ print(f'2、chatted:已获得{len(filter_records)}条会话')
621
+ else:
622
+ print('2、chatted:暂未获得生成数据')
623
+
624
+ # 3 post信息
625
+ if filter_records and not self.post_file.is_file(): # 待生成后处理文件
626
+ gcj2 = GptChatJsonl()
627
+ gcj2.infile = self.post_file
628
+ gcj2.records = filter_records
629
+ gcj2.parse_answer_contents()
630
+ gcj2.parse_answer_downloads()
631
+ gcj2.save()
632
+ elif self.post_file.is_file(): # 已经有后处理文件
633
+ gcj2 = GptChatJsonl(self.post_file)
634
+ else:
635
+ return
636
+
637
+ print(f'3、post:{len(gcj2.records)}条会话')
638
+
639
+ def merge_rechatted(self, check_func, rechat_dir):
640
+ """ 从另一份重跑的数据,更新数据回来
641
+
642
+ :param check_func: 原chatted没过,但是rechatted通过的,需要把数据更新过来
643
+ :param rechat_dir: 注意是传另一份数据所在的目录
644
+
645
+ TODO 这个函数还没写完
646
+ """
647
+ rechat_dir = XlPath(rechat_dir)
648
+ td = TwinDirs(rechat_dir, self.root)
649
+
650
+ gcj1 = GptChatJsonl(self.chatted_file)
651
+ gcj2 = type(self)(rechat_dir / 'out.jsonl')
652
+
653
+ id2index = {x['id']: i for i, x in enumerate(gcj1.records)}
654
+
655
+ # 需要处理下下载链接名称
656
+ gcj2.parse_answer_downloads()
657
+
658
+ for y in gcj2.records:
659
+ index = id2index[y['id']]
660
+ x = gcj1.records[index]
661
+ x2 = copy.deepcopy(x)
662
+ gcj1.parse_single_record_answer(x2)
663
+ if not check_func(x2) and check_func(y):
664
+ # 先把x相关的数据删掉
665
+ if 'all_answers' in x2:
666
+ for answer in x2['all_answers']:
667
+ for fname in answer.get('downloads', []):
668
+ (self.root / (str(x['id']) + '-' + fname)).delete()
669
+ # 再把y拷贝过来
670
+ for answer in y['all_answers']:
671
+ for fname in answer.get('downloads', []):
672
+ td.copy_file(td.src_dir / fname)
673
+ gcj1.records[index] = y
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
30
30
 
31
31
  setup(
32
32
  name='pyxllib', # pip 安装时用的名字
33
- version='0.3.56', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
33
+ version='0.3.57', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
34
34
  author='code4101',
35
35
  author_email='877362867@qq.com',
36
36
  url='https://github.com/XLPRUtils/pyxllib',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -21,14 +21,14 @@ Jinja2
21
21
  pandas>=0.23.4
22
22
 
23
23
  [xlai]
24
- pillow
25
- pynvml
26
- opencv-python
27
- xlcocotools
28
24
  visdom
25
+ xlcocotools
26
+ pillow
29
27
  opsdroid-get-image-size
28
+ opencv-python
29
+ pynvml
30
30
 
31
31
  [xlcv]
32
- opencv-python
33
- pillow
34
32
  opsdroid-get-image-size
33
+ pillow
34
+ opencv-python
File without changes
File without changes
File without changes
File without changes