pyxllib 0.3.55__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.55/pyxllib.egg-info → pyxllib-0.3.57}/PKG-INFO +1 -1
  2. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/JLineViewer.py +4 -3
  3. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/kq5034lib.py +2 -2
  4. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/specialist/__init__.py +2 -0
  5. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/specialist/filelib.py +1 -0
  6. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/pupil.py +10 -8
  7. {pyxllib-0.3.55 → pyxllib-0.3.57/pyxllib.egg-info}/PKG-INFO +1 -1
  8. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/gptlib.py +216 -22
  9. {pyxllib-0.3.55 → pyxllib-0.3.57}/setup.py +1 -1
  10. {pyxllib-0.3.55 → pyxllib-0.3.57}/LICENSE +0 -0
  11. {pyxllib-0.3.55 → pyxllib-0.3.57}/MANIFEST.in +0 -0
  12. {pyxllib-0.3.55 → pyxllib-0.3.57}/README.md +0 -0
  13. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/__init__.py +0 -0
  14. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/__init__.py +0 -0
  15. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/disjoint.py +0 -0
  16. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/geo.py +0 -0
  17. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/intervals.py +0 -0
  18. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/newbie.py +0 -0
  19. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/pupil.py +0 -0
  20. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/shapelylib.py +0 -0
  21. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/specialist.py +0 -0
  22. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/stat.py +0 -0
  23. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/treelib.py +0 -0
  24. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/algo/unitlib.py +0 -0
  25. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/__init__.py +0 -0
  26. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/expert.py +0 -0
  27. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/imfile.py +0 -0
  28. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/imhash.py +0 -0
  29. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/pupil.py +0 -0
  30. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/rgbfmt.py +0 -0
  31. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/trackbartools.py +0 -0
  32. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/xlcvlib.py +0 -0
  33. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/cv/xlpillib.py +0 -0
  34. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/data/__init__.py +0 -0
  35. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/data/echarts.py +0 -0
  36. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/data/oss.py +0 -0
  37. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/data/pglib.py +0 -0
  38. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/data/sqlite.py +0 -0
  39. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/data/sqllib.py +0 -0
  40. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/__init__.py +0 -0
  41. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/autogui/__init__.py +0 -0
  42. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/autogui/autogui.py +0 -0
  43. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/autogui/virtualkey.py +0 -0
  44. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/demolib.py +0 -0
  45. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/old.py +0 -0
  46. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/qt.py +0 -0
  47. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/seleniumlib.py +0 -0
  48. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/tk.py +0 -0
  49. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/unixlib.py +0 -0
  50. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/utools.py +0 -0
  51. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/webhook.py +0 -0
  52. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/ext/win32lib.py +0 -0
  53. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/__init__.py +0 -0
  54. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/docxlib.py +0 -0
  55. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/gitlib.py +0 -0
  56. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/movielib.py +0 -0
  57. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/newbie.py +0 -0
  58. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/onenotelib.py +0 -0
  59. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/packlib/__init__.py +0 -0
  60. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/packlib/zipfile.py +0 -0
  61. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/pdflib.py +0 -0
  62. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/pupil.py +0 -0
  63. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/specialist/dirlib.py +0 -0
  64. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/specialist/download.py +0 -0
  65. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/file/xlsxlib.py +0 -0
  66. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/__init__.py +0 -0
  67. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/deprecatedlib.py +0 -0
  68. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/newbie.py +0 -0
  69. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/sitepackages.py +0 -0
  70. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/specialist/__init__.py +0 -0
  71. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/specialist/bc.py +0 -0
  72. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/specialist/browser.py +0 -0
  73. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/specialist/common.py +0 -0
  74. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/specialist/datetime.py +0 -0
  75. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/specialist/tictoc.py +0 -0
  76. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/specialist/xllog.py +0 -0
  77. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/prog/xlosenv.py +0 -0
  78. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/stdlib/__init__.py +0 -0
  79. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  80. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  81. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  82. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/__init__.py +0 -0
  83. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/ahocorasick.py +0 -0
  84. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/latex/__init__.py +0 -0
  85. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/levenshtein.py +0 -0
  86. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/nestenv.py +0 -0
  87. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/newbie.py +0 -0
  88. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/pupil/__init__.py +0 -0
  89. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/pupil/common.py +0 -0
  90. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/pupil/xlalign.py +0 -0
  91. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/pycode.py +0 -0
  92. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/specialist/__init__.py +0 -0
  93. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/specialist/common.py +0 -0
  94. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/specialist/ptag.py +0 -0
  95. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/spellchecker.py +0 -0
  96. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/text/xmllib.py +0 -0
  97. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/xl.py +0 -0
  98. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib/xlcv.py +0 -0
  99. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib.egg-info/SOURCES.txt +0 -0
  100. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib.egg-info/dependency_links.txt +0 -0
  101. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib.egg-info/requires.txt +5 -5
  102. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxllib.egg-info/top_level.txt +0 -0
  103. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/__init__.py +0 -0
  104. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ai/__init__.py +0 -0
  105. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ai/clientlib.py +0 -0
  106. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ai/specialist.py +0 -0
  107. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ai/torch_app.py +0 -0
  108. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ai/xlpaddle.py +0 -0
  109. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ai/xltorch.py +0 -0
  110. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/__init__.py +0 -0
  111. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/coco.py +0 -0
  112. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/datacls.py +0 -0
  113. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/datasets.py +0 -0
  114. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/icdar/__init__.py +0 -0
  115. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/icdar/deteval.py +0 -0
  116. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/icdar/icdar2013.py +0 -0
  117. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/icdar/iou.py +0 -0
  118. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  119. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/imtextline.py +0 -0
  120. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/labelme.py +0 -0
  121. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/removeline.py +0 -0
  122. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/data/specialist.py +0 -0
  123. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/eval/__init__.py +0 -0
  124. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/paddleocr.py +0 -0
  125. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/__init__.py +0 -0
  126. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  127. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/__init__.py +0 -0
  128. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  129. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  130. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  131. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  132. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  133. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  134. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  135. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  136. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  137. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  138. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  139. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  140. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  141. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  142. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  143. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  144. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  145. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  146. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  147. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  148. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  149. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  150. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  151. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/__init__.py +0 -0
  152. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  153. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  154. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  155. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  156. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  157. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  158. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  159. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  160. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  161. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  162. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  163. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  164. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  165. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  166. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  167. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  168. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  169. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  170. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  171. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  172. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  173. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  174. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  175. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  176. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  177. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  178. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  179. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  180. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  181. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  182. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  183. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  184. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  185. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  186. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  187. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  188. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  189. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  190. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  191. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  192. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  193. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  194. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  195. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  196. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  197. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  198. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  199. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  200. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  201. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  202. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  203. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  204. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  205. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  206. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  207. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  208. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  209. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  210. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  211. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  212. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  213. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  214. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  215. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  216. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  217. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  218. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  219. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  220. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  221. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  222. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  223. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  224. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  225. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  226. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  227. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  228. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  229. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  230. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  231. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  232. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  233. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  234. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  235. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  236. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  237. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  238. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  239. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  240. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  241. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  242. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  243. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  244. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/__init__.py +0 -0
  245. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/eval.py +0 -0
  246. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/export_center.py +0 -0
  247. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/export_model.py +0 -0
  248. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  249. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  250. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  251. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  252. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  253. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  254. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  255. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  256. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  257. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  258. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  259. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  260. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/program.py +0 -0
  261. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  262. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/train.py +0 -0
  263. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  264. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  265. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/__init__.py +0 -0
  266. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  267. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  268. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  269. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  270. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  271. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  272. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  273. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  274. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  275. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  276. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  277. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  278. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  279. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  280. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  281. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  282. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  283. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  284. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  285. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  286. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  287. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  288. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  289. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  290. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  291. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  292. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  293. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  294. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  295. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  296. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  297. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  298. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  299. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  300. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  301. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  302. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  303. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  304. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  305. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  306. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  307. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  308. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  309. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/iou.py +0 -0
  310. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/logging.py +0 -0
  311. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/network.py +0 -0
  312. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  313. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/profiler.py +0 -0
  314. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/save_load.py +0 -0
  315. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/stats.py +0 -0
  316. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/utility.py +0 -0
  317. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/__init__.py +0 -0
  318. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/predict_system.py +0 -0
  319. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/__init__.py +0 -0
  320. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  321. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/matcher.py +0 -0
  322. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  323. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  324. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  325. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  326. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  327. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  328. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  329. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  330. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/ppstructure/utility.py +0 -0
  331. {pyxllib-0.3.55 → pyxllib-0.3.57}/pyxlpr/xlai.py +0 -0
  332. {pyxllib-0.3.55 → pyxllib-0.3.57}/requirements.txt +0 -0
  333. {pyxllib-0.3.55 → 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.55
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():
@@ -38,6 +38,8 @@ class JsonlDataFile:
38
38
  if filepaths:
39
39
  filepath = filepaths[0] # 找到第1个匹配的文件
40
40
  self.infile = XlPath(filepath)
41
+ else:
42
+ self.infile = filepath
41
43
 
42
44
  if self.infile is not None:
43
45
  if num_records is None:
@@ -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
@@ -84,14 +84,6 @@ def is_file(arg, exists=True):
84
84
  return os.path.isfile(arg)
85
85
 
86
86
 
87
- def get_hostname():
88
- return socket.getfqdn()
89
-
90
-
91
- def get_username():
92
- return os.path.split(os.path.expanduser('~'))[-1]
93
-
94
-
95
87
  def len_in_dim2_min(arr):
96
88
  """ 计算类List结构在第2维上的最小长度
97
89
 
@@ -981,3 +973,13 @@ def xlmd5(content):
981
973
  return content
982
974
  else:
983
975
  return hashlib.md5(content).hexdigest()
976
+
977
+
978
+ @run_once()
979
+ def get_hostname():
980
+ return socket.getfqdn()
981
+
982
+
983
+ @run_once()
984
+ def get_username():
985
+ return os.path.split(os.path.expanduser('~'))[-1]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.55
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_生成提问数据():
@@ -105,18 +106,16 @@ def print_statistics(data, indent_level=1, price_base=0.0015):
105
106
  class GptChatJsonl(JsonlDataFile):
106
107
  """ GPT问答批量执行脚本的jsonl生成、读取器 """
107
108
 
108
- def __init__(self, file=None, *, start_id=None):
109
+ def __init__(self, file=None, num_records=None, *, start_id=None):
109
110
  from datetime import date
111
+
112
+ super().__init__(file, num_records)
110
113
  if start_id is None:
111
114
  today = date.today().strftime("%Y%m%d")
112
115
  self.start_id = int(today + "00000000")
113
116
  else:
114
117
  self.start_id = start_id
115
118
 
116
- super().__init__()
117
- if file is not None:
118
- self.read_jsonl(file)
119
-
120
119
  def read_jsonl(self, file):
121
120
  """ 从一个文件加载数据
122
121
  """
@@ -238,7 +237,7 @@ class GptChatJsonl(JsonlDataFile):
238
237
 
239
238
  def find_indices_by_qlength(self):
240
239
  """ 返回提问(q,question)内容从短到长的数据下标 """
241
- lens = [(i, len(''.join(x['text']))) for i, x in enumerate(self.records)]
240
+ lens = [(i, len(''.join([t['content'] for t in x['text']]))) for i, x in enumerate(self.records)]
242
241
  # 根据长度进行排序,得到的元组的第一个元素为原列表的下标,第二个元素为对应的长度
243
242
  sorted_lens = sorted(lens, key=lambda x: x[1])
244
243
  # 取出排序后的下标
@@ -297,7 +296,7 @@ class GptChatJsonl(JsonlDataFile):
297
296
  ls.append(t)
298
297
  else:
299
298
  if "file_path" in t:
300
- ls.append(("filep_path=" + t["file_path"] + "\n\n") + t["content"])
299
+ ls.append(("filep_path=" + str(t["file_path"]) + "\n\n") + t["content"])
301
300
  else:
302
301
  ls.append(t["content"])
303
302
  return ls
@@ -338,27 +337,124 @@ class GptChatJsonl(JsonlDataFile):
338
337
  # 输出过滤后的sessions数量
339
338
  print(f"过滤后的sessions数量:{len(self.records)}")
340
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
+
341
375
  def parse_answer_contents(self):
342
376
  """ 简化解释器返回结果中,contents的结构信息 """
343
377
  for record in self.records:
344
- for answer in record['all_answers']:
345
- if isinstance(answer, dict) and 'contents' in answer:
346
- content = answer['contents'][-1]['message']['content']
347
- if 'parts' in content:
348
- content = '\n'.join(content['parts'])
349
- else:
350
- content = content['text']
351
- answer['contents'] = content
378
+ self._parse_single_record_answer_contents(record)
352
379
 
353
380
  def parse_answer_downloads(self):
354
381
  """ 解析,简化下载链接的表达形式 """
355
382
  for record in self.records:
356
- for answer in record['all_answers']:
357
- if 'downloads' in answer:
358
- for i, link in enumerate(answer['downloads']):
359
- m = re.search(r'filename%3D(.+?)&sig=', link)
360
- if m:
361
- answer['downloads'][i] = 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
362
458
 
363
459
 
364
460
  GptQuestionJsonl = GptChatJsonl # 名称向下兼容
@@ -477,3 +573,101 @@ class GptTrainJsonl(JsonlDataFile):
477
573
 
478
574
  # 或者返回HTML字符串
479
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.55', # 当前版本,每次更新上传到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