pyxllib 0.3.121__tar.gz → 0.3.123__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. {pyxllib-0.3.121/pyxllib.egg-info → pyxllib-0.3.123}/PKG-INFO +1 -1
  2. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/data/pglib.py +5 -1
  3. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/specialist/download.py +8 -1
  4. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/specialist/filelib.py +4 -4
  5. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/xlsxlib.py +9 -2
  6. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/pupil.py +2 -1
  7. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/jiebalib.py +1 -1
  8. {pyxllib-0.3.121 → pyxllib-0.3.123/pyxllib.egg-info}/PKG-INFO +1 -1
  9. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/openai2/_core/chat.py +192 -14
  10. {pyxllib-0.3.121 → pyxllib-0.3.123}/setup.py +1 -1
  11. {pyxllib-0.3.121 → pyxllib-0.3.123}/LICENSE +0 -0
  12. {pyxllib-0.3.121 → pyxllib-0.3.123}/MANIFEST.in +0 -0
  13. {pyxllib-0.3.121 → pyxllib-0.3.123}/README.md +0 -0
  14. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/__init__.py +0 -0
  15. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/__init__.py +0 -0
  16. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/disjoint.py +0 -0
  17. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/geo.py +0 -0
  18. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/intervals.py +0 -0
  19. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/matcher.py +0 -0
  20. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/newbie.py +0 -0
  21. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/pupil.py +0 -0
  22. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/shapelylib.py +0 -0
  23. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/specialist.py +0 -0
  24. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/stat.py +0 -0
  25. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/treelib.py +0 -0
  26. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/algo/unitlib.py +0 -0
  27. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/__init__.py +0 -0
  28. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/expert.py +0 -0
  29. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/imfile.py +0 -0
  30. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/imhash.py +0 -0
  31. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/pupil.py +0 -0
  32. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/rgbfmt.py +0 -0
  33. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/trackbartools.py +0 -0
  34. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/xlcvlib.py +0 -0
  35. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/cv/xlpillib.py +0 -0
  36. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/data/__init__.py +0 -0
  37. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/data/echarts.py +0 -0
  38. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/data/jsonlib.py +0 -0
  39. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/data/oss.py +0 -0
  40. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/data/sqlite.py +0 -0
  41. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/data/sqllib.py +0 -0
  42. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/JLineViewer.py +0 -0
  43. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/__init__.py +0 -0
  44. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/autogui/__init__.py +0 -0
  45. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/autogui/autogui.py +0 -0
  46. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/autogui/virtualkey.py +0 -0
  47. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/demolib.py +0 -0
  48. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/drissionlib.py +0 -0
  49. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/kq5034lib.py +0 -0
  50. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/old.py +0 -0
  51. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/qt.py +0 -0
  52. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/robustprocfile.py +0 -0
  53. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/seleniumlib.py +0 -0
  54. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/tk.py +0 -0
  55. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/unixlib.py +0 -0
  56. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/utools.py +0 -0
  57. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/webhook.py +0 -0
  58. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/win32lib.py +0 -0
  59. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/ext/yuquelib.py +0 -0
  60. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/__init__.py +0 -0
  61. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/docxlib.py +0 -0
  62. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/gitlib.py +0 -0
  63. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/libreoffice.py +0 -0
  64. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/movielib.py +0 -0
  65. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/newbie.py +0 -0
  66. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/onenotelib.py +0 -0
  67. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/packlib/__init__.py +0 -0
  68. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/packlib/zipfile.py +0 -0
  69. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/pdflib.py +0 -0
  70. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/pupil.py +0 -0
  71. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/specialist/__init__.py +0 -0
  72. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/file/specialist/dirlib.py +0 -0
  73. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/__init__.py +0 -0
  74. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/cachetools.py +0 -0
  75. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/deprecatedlib.py +0 -0
  76. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/ipyexec.py +0 -0
  77. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/multiprocs.py +0 -0
  78. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/newbie.py +0 -0
  79. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/scheduler.py +0 -0
  80. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/sitepackages.py +0 -0
  81. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/specialist/__init__.py +0 -0
  82. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/specialist/bc.py +0 -0
  83. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/specialist/browser.py +0 -0
  84. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/specialist/common.py +0 -0
  85. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/specialist/datetime.py +0 -0
  86. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/specialist/tictoc.py +0 -0
  87. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/specialist/xllog.py +0 -0
  88. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/prog/xlosenv.py +0 -0
  89. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/stdlib/__init__.py +0 -0
  90. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  91. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  92. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  93. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/__init__.py +0 -0
  94. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/ahocorasick.py +0 -0
  95. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/charclasslib.py +0 -0
  96. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/jinjalib.py +0 -0
  97. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/jscode.py +0 -0
  98. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/latex/__init__.py +0 -0
  99. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/levenshtein.py +0 -0
  100. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/nestenv.py +0 -0
  101. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/newbie.py +0 -0
  102. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/pupil/__init__.py +0 -0
  103. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/pupil/common.py +0 -0
  104. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/pupil/xlalign.py +0 -0
  105. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/pycode.py +0 -0
  106. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/specialist/__init__.py +0 -0
  107. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/specialist/common.py +0 -0
  108. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/specialist/ptag.py +0 -0
  109. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/spellchecker.py +0 -0
  110. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/vbacode.py +0 -0
  111. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/text/xmllib.py +0 -0
  112. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/xl.py +0 -0
  113. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib/xlcv.py +0 -0
  114. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib.egg-info/SOURCES.txt +0 -0
  115. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib.egg-info/dependency_links.txt +0 -0
  116. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib.egg-info/requires.txt +11 -11
  117. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxllib.egg-info/top_level.txt +0 -0
  118. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/__init__.py +0 -0
  119. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ai/__init__.py +0 -0
  120. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ai/clientlib.py +0 -0
  121. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ai/specialist.py +0 -0
  122. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ai/torch_app.py +0 -0
  123. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ai/xlpaddle.py +0 -0
  124. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ai/xltorch.py +0 -0
  125. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/__init__.py +0 -0
  126. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/coco.py +0 -0
  127. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/datacls.py +0 -0
  128. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/datasets.py +0 -0
  129. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/gptlib.py +0 -0
  130. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/icdar/__init__.py +0 -0
  131. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/icdar/deteval.py +0 -0
  132. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/icdar/icdar2013.py +0 -0
  133. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/icdar/iou.py +0 -0
  134. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  135. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/imtextline.py +0 -0
  136. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/labelme.py +0 -0
  137. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/removeline.py +0 -0
  138. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/specialist.py +0 -0
  139. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/data/tiktokenlib.py +0 -0
  140. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/eval/__init__.py +0 -0
  141. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/openai2/__init__.py +0 -0
  142. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
  143. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/openai2/_core/group_chat.py +0 -0
  144. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/openai2/openai2.py +0 -0
  145. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/paddleocr.py +0 -0
  146. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/__init__.py +0 -0
  147. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  148. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/__init__.py +0 -0
  149. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  150. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  151. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  152. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  153. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  154. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  155. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  156. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  157. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  158. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  159. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  160. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  161. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  162. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  163. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  164. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  165. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  166. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  167. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  168. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  169. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  170. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  171. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  172. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/__init__.py +0 -0
  173. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  174. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  175. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  176. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  177. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  178. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  179. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  180. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  181. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  182. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  183. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  184. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  185. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  186. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  187. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  188. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  189. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  190. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  191. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  192. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  193. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  194. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  195. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  196. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  197. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  198. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  199. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  200. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  201. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  202. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  203. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  204. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  205. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  206. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  207. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  208. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  209. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  210. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  211. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  212. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  213. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  214. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  215. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  216. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  217. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  218. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  219. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  220. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  221. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  222. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  223. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  224. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  225. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  226. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  227. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  228. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  229. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  230. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  231. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  232. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  233. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  234. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  235. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  236. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  237. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  238. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  239. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  240. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  241. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  242. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  243. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  244. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  245. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  246. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  247. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  248. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  249. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  250. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  251. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  252. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  253. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  254. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  255. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  256. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  257. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  258. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  259. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  260. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  261. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  262. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  263. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  264. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  265. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/__init__.py +0 -0
  266. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/eval.py +0 -0
  267. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/export_center.py +0 -0
  268. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/export_model.py +0 -0
  269. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  270. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  271. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  272. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  273. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  274. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  275. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  276. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  277. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  278. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  279. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  280. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  281. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/program.py +0 -0
  282. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  283. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/train.py +0 -0
  284. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  285. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  286. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/__init__.py +0 -0
  287. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  288. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  289. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  290. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  291. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  292. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  293. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  294. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  295. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  296. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  297. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  298. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  299. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  300. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  301. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  302. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  303. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  304. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  305. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  306. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  307. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  308. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  309. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  310. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  311. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  312. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  313. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  314. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  315. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  316. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  317. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  318. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  319. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  320. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  321. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  322. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  323. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  324. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  325. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  326. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  327. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  328. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  329. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  330. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/iou.py +0 -0
  331. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/logging.py +0 -0
  332. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/network.py +0 -0
  333. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  334. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/profiler.py +0 -0
  335. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/save_load.py +0 -0
  336. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/stats.py +0 -0
  337. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppocr/utils/utility.py +0 -0
  338. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/__init__.py +0 -0
  339. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/predict_system.py +0 -0
  340. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/__init__.py +0 -0
  341. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  342. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/matcher.py +0 -0
  343. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  344. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  345. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  346. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  347. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  348. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  349. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  350. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  351. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/ppstructure/utility.py +0 -0
  352. {pyxllib-0.3.121 → pyxllib-0.3.123}/pyxlpr/xlai.py +0 -0
  353. {pyxllib-0.3.121 → pyxllib-0.3.123}/requirements.txt +0 -0
  354. {pyxllib-0.3.121 → pyxllib-0.3.123}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.121
3
+ Version: 0.3.123
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -58,13 +58,17 @@ class Connection(psycopg.Connection, SqlBase):
58
58
  def __1_库(self):
59
59
  pass
60
60
 
61
- def get_db_activities(self):
61
+ def get_db_activities(self, datname=None):
62
62
  """
63
63
  检索当前数据库的活动信息。
64
+
65
+ :param datname: 这个字段理论上应该要能自动检测出来才对,但这会急着没空钻研,先手动输入吧
64
66
  """
65
67
  sql = SqlBuilder('pg_stat_activity')
66
68
  sql.select('pid', 'datname', 'usename', 'state', 'query', 'age(now(), query_start) AS "query_age"')
67
69
  sql.where("state = 'active'")
70
+ if datname:
71
+ sql.where(f"datname = '{datname}'")
68
72
  return self.exec2dict(sql.build_select()).fetchall()
69
73
 
70
74
  def __2_表格(self):
@@ -17,13 +17,20 @@ from pyxllib.file.specialist import File, Dir
17
17
 
18
18
 
19
19
  def download_file(url, fn=None, *, encoding=None, if_exists=None, ext=None, temp=False):
20
- """ 类似writefile,只是源数据是从url里下载
20
+ r""" 类似writefile,只是源数据是从url里下载
21
21
 
22
22
  :param url: 数据下载链接
23
23
  :param fn: 保存位置,会从url智能提取文件名
24
24
  :param if_exists: 详见 File.write 参数解释
25
25
  :para temp: 将文件写到临时文件夹
26
26
  :return:
27
+
28
+ >> download_file(image_url) # 保存在当前工作目录下
29
+ D:/home/chenkunze/slns/xlproject/xlsln/ckz2024/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg
30
+ >> download_file(image_url, fn=r"D:/home/chenkunze/slns/xlproject/xlsln/ckz2024/a.png") # 指定路径
31
+ D:/home/chenkunze/slns/xlproject/xlsln/ckz2024/a.png
32
+ >> download_file(image_url, fn=r"D:/home/chenkunze/slns/xlproject/xlsln/ckz2024") # 暂不支持目录
33
+ ValueError: 不能用目录初始化一个File对象 D:\home\chenkunze\slns\xlproject\xlsln\ckz2023
27
34
  """
28
35
  if not fn: fn = url.split('/')[-1]
29
36
  root = Dir.TEMP if temp else None
@@ -1112,7 +1112,7 @@ class XlPath(type(pathlib.Path())):
1112
1112
  s = str(best_match)
1113
1113
  encoding = best_match.encoding
1114
1114
  else:
1115
- with open(self, 'r', encoding=encoding) as f:
1115
+ with open(self, 'r', encoding=encoding, errors=errors) as f:
1116
1116
  s = f.read()
1117
1117
 
1118
1118
  # 如果用\r\n作为换行符会有一些意外不好处理
@@ -1212,7 +1212,7 @@ class XlPath(type(pathlib.Path())):
1212
1212
  :param int max_items: 限制读取的条目数,默认为None,表示读取所有条目
1213
1213
  :param int batch_size:
1214
1214
  默认为None,表示一次性读取所有数据
1215
- 如果设置了数值,则会流式读取,常用语太大,超过内存大小等的jsonl文件读取
1215
+ 如果设置了数值,则会流式读取,常用于太大,超过内存大小等的jsonl文件读取
1216
1216
  注意如果设置了大小,只是底层每次一批读取的大小,但返回的data仍然是一维的数据格式迭代器
1217
1217
  :return: 返回读取到的数据列表,如果return_mode为True,则同时返回文件编码格式
1218
1218
 
@@ -1248,10 +1248,10 @@ class XlPath(type(pathlib.Path())):
1248
1248
  else:
1249
1249
  return data
1250
1250
 
1251
- def write_jsonl(self, list_data, ensure_ascii=False, default=None, mode='w'):
1251
+ def write_jsonl(self, list_data, ensure_ascii=False, default=None, mode='w', errors=None):
1252
1252
  """ 由于这种格式主要是跟商汤这边对接,就尽量跟它们的格式进行兼容 """
1253
1253
  content = '\n'.join([json.dumps(x, ensure_ascii=ensure_ascii, default=default) for x in list_data])
1254
- self.write_text_unix(content + '\n', mode=mode)
1254
+ self.write_text_unix(content + '\n', mode=mode, errors=errors)
1255
1255
 
1256
1256
  def add_json_line(self, data, ensure_ascii=False, default=None, mode='a'):
1257
1257
  """ 在文件末尾添加一行JSON数据 """
@@ -121,7 +121,7 @@ def is_valid_excel_address(address):
121
121
  return is_valid_excel_cell(address)
122
122
 
123
123
 
124
- @run_once('str', debug=True)
124
+ @run_once('str')
125
125
  def xlfmt2pyfmt_date(xl_fmt):
126
126
  """ 日期的渲染操作
127
127
 
@@ -2478,7 +2478,11 @@ def extract_workbook_summary2(file_path, *,
2478
2478
  res['fileName'] = file_path.name
2479
2479
  start_time = time.time()
2480
2480
  wb, suffix = load_as_xlsx_file(file_path, keep_links=keep_links, keep_vba=keep_vba)
2481
- res['fileType'] = suffix or 'error'
2481
+ if suffix:
2482
+ res['fileType'] = suffix
2483
+ else:
2484
+ res['error'] = 'fileType error'
2485
+
2482
2486
  load_time = time.time() - start_time
2483
2487
  if wb is None: # 不支持的文件类型,不报错,只是返回最基本的文件名信息
2484
2488
  if return_mode == 1:
@@ -2959,6 +2963,9 @@ class WorkbookSummary3:
2959
2963
  return y
2960
2964
 
2961
2965
  x = summary2
2966
+ if 'error' in x:
2967
+ return x
2968
+
2962
2969
  y = {
2963
2970
  'fileName': x['fileName'],
2964
2971
  'fileType': x['fileType'],
@@ -1129,6 +1129,7 @@ def support_multi_processes(default_processes=1):
1129
1129
  def wrapper(*args, **kwargs):
1130
1130
  process_count = int(kwargs.pop('process_count', default_processes))
1131
1131
  process_id = kwargs.pop('process_id', None)
1132
+ shell = kwargs.pop('shell', False)
1132
1133
 
1133
1134
  if process_count == 1 or process_id is not None:
1134
1135
  if process_id is None:
@@ -1150,7 +1151,7 @@ def support_multi_processes(default_processes=1):
1150
1151
  for k, v in kwargs.items():
1151
1152
  cmds.append(f'--{k}') # 添加关键字参数的键
1152
1153
  cmds.append(str(v)) # 添加关键字参数的值
1153
- mpl.add_process_python(sys.argv[0], cmds)
1154
+ mpl.add_process_python(sys.argv[0], cmds, shell=shell)
1154
1155
  mpl.run_endless()
1155
1156
 
1156
1157
  return wrapper
@@ -250,7 +250,7 @@ class TextClassifier:
250
250
  return sims[:maxn]
251
251
 
252
252
  def refine_vecs(self):
253
- """ 优化向量数据 """
253
+ """ 优化向量数据,去掉权重小余0.0001的维度 """
254
254
  # 1 计算每个向量的长度
255
255
  vecs = []
256
256
  for vec in tqdm(self.vecs, '优化向量'):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.121
3
+ Version: 0.3.123
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -1,9 +1,14 @@
1
+ import os
1
2
  from json import dumps as jsonDumps
2
3
  from json import loads as jsonLoads
3
4
  from pathlib import Path
4
5
  from typing import List, Literal
6
+ import base64
7
+
5
8
  from openai import OpenAI, AsyncOpenAI
6
9
 
10
+ from pyxllib.file.specialist import download_file
11
+
7
12
 
8
13
  class AKPool:
9
14
  """ 轮询获取api_key """
@@ -106,24 +111,35 @@ class Chat:
106
111
  """
107
112
 
108
113
  recently_request_data: dict # 最近一次请求所用的参数
114
+ default_api_key = None
115
+ default_base_url = "https://console.chatdata.online/v1"
109
116
 
110
117
  def __init__(self,
111
118
  # kwargs
112
- api_key: str|AKPool,
119
+ api_key: str | AKPool = None,
113
120
  base_url: str = None, # base_url 参数用于修改基础URL
114
121
  timeout=None,
115
122
  max_retries=None,
116
123
  http_client=None,
117
124
  # request_kwargs
118
- model: Literal["gpt-4-1106-preview", "gpt-4-vision-preview", "gpt-4", "gpt-4-0314", "gpt-4-0613",
119
- "gpt-4-32k", "gpt-4-32k-0314", "gpt-4-32k-0613", "gpt-3.5-turbo"] = "gpt-3.5-turbo",
125
+ model: Literal["gpt-4-1106-preview", "gpt-4-vision-preview",
126
+ "gpt-4", "gpt-4-0314", "gpt-4-0613",
127
+ "gpt-4-32k", "gpt-4-32k-0314", "gpt-4-32k-0613", "gpt-3.5-turbo",
128
+ "gpt-4o", "gpt-4-turbo"] = "gpt-3.5-turbo",
120
129
  # Chat
121
- msg_max_count: int=None,
130
+ msg_max_count: int = None,
122
131
  # kwargs
123
132
  **kwargs,
124
133
  ):
134
+ """
135
+
136
+ :param kwargs: 主要是供OpenAI初始化时使用的参数
137
+
138
+ """
139
+ api_key = api_key or self.default_api_key or os.environ.get("OPENAI_API_KEY")
140
+
125
141
  api_base = kwargs.pop('api_base', None)
126
- base_url = base_url or api_base
142
+ base_url = base_url or api_base or self.default_base_url or os.environ.get("OPENAI_BASE_URL")
127
143
  MsgMaxCount = kwargs.pop('MsgMaxCount', None)
128
144
  msg_max_count = msg_max_count or MsgMaxCount
129
145
 
@@ -134,16 +150,22 @@ class Chat:
134
150
 
135
151
  self.reset_api_key(api_key)
136
152
  self._kwargs = kwargs
137
- self._request_kwargs = {'model':model}
153
+ self._request_kwargs = {'model': model}
138
154
  self._messages = Temque(maxlen=msg_max_count)
139
155
 
140
- def reset_api_key(self, api_key: str|AKPool):
156
+ def __1_原作者提供功能(self):
157
+ pass
158
+
159
+ def reset_api_key(self, api_key: str | AKPool):
141
160
  if isinstance(api_key, AKPool):
142
161
  self._akpool = api_key
143
162
  else:
144
163
  self._akpool = AKPool([api_key])
145
164
 
146
- def request(self, text: str=None, **kwargs):
165
+ def request(self, text: str = None, **kwargs):
166
+ """
167
+ :param kwargs: 支持本次请求的参数覆盖全局 self._request_kwargs 的参数
168
+ """
147
169
  messages = [{"role": "user", "content": text}]
148
170
  messages += (kwargs.pop('messages', None) or []) # 兼容官方包[openai]用户, 使其代码可以无缝切换到[openai2]
149
171
  assert messages
@@ -160,7 +182,7 @@ class Chat:
160
182
  self._messages.add_many(*messages, {"role": "assistant", "content": answer})
161
183
  return answer
162
184
 
163
- def stream_request(self, text: str=None, **kwargs):
185
+ def stream_request(self, text: str = None, **kwargs):
164
186
  messages = [{"role": "user", "content": text}]
165
187
  messages += (kwargs.pop('messages', None) or []) # 兼容官方包[openai]用户, 使其代码可以无缝切换到[openai2]
166
188
  assert messages
@@ -180,7 +202,7 @@ class Chat:
180
202
  yield content
181
203
  self._messages.add_many(*messages, {"role": "assistant", "content": answer})
182
204
 
183
- async def async_request(self, text: str=None, **kwargs):
205
+ async def async_request(self, text: str = None, **kwargs):
184
206
  messages = [{"role": "user", "content": text}]
185
207
  messages += (kwargs.pop('messages', None) or []) # 兼容官方包[openai]用户, 使其代码可以无缝切换到[openai2]
186
208
  assert messages
@@ -197,7 +219,7 @@ class Chat:
197
219
  self._messages.add_many(*messages, {"role": "assistant", "content": answer})
198
220
  return answer
199
221
 
200
- async def async_stream_request(self, text: str=None, **kwargs):
222
+ async def async_stream_request(self, text: str = None, **kwargs):
201
223
  messages = [{"role": "user", "content": text}]
202
224
  messages += (kwargs.pop('messages', None) or []) # 兼容官方包[openai]用户, 使其代码可以无缝切换到[openai2]
203
225
  assert messages
@@ -221,7 +243,7 @@ class Chat:
221
243
  '''
222
244
  回滚对话
223
245
  '''
224
- self._messages.core[-2 * n :] = []
246
+ self._messages.core[-2 * n:] = []
225
247
  for x in self._messages.core[-2:]:
226
248
  x = x["obj"]
227
249
  print(f"[{x['role']}]:{x['content']}")
@@ -241,7 +263,7 @@ class Chat:
241
263
  def fetch_messages(self):
242
264
  return list(self._messages)
243
265
 
244
- def add_dialogs(self, *ms: dict|system_msg|user_msg|assistant_msg):
266
+ def add_dialogs(self, *ms: dict | system_msg | user_msg | assistant_msg):
245
267
  '''
246
268
  添加历史对话
247
269
  '''
@@ -274,4 +296,160 @@ class Chat:
274
296
  """ 载入存档 """
275
297
  jt = Path(fpath).read_text(encoding="utf8")
276
298
  self._messages.add_many(*jsonLoads(jt))
277
- return True
299
+ return True
300
+
301
+ def __2_扩展功能(self):
302
+ pass
303
+
304
+ def add_message(self, message):
305
+ """ 添加单条历史消息记录 """
306
+ self._messages.add_many(message)
307
+
308
+ def add_messages(self, messages: list[dict]):
309
+ """ 添加多条历史消息记录 """
310
+ self._messages.add_many(*messages)
311
+
312
+ def parse_cont_to_conts(self, in_cont) -> list[dict]:
313
+ """ 自定义的一套内容设置格式,用来简化openai源生的配置逻辑
314
+
315
+ :return: 注意虽然看似输入是一个cont,实际可能解析出多个conts,所以返回的是list类型
316
+ """
317
+
318
+ def encode_image(image_path):
319
+ """ 读取本地图片文件 """
320
+ with open(image_path, "rb") as image_file:
321
+ return base64.b64encode(image_file.read()).decode('utf-8')
322
+
323
+ def parse_image_file(image_file):
324
+ suffix = Path(image_file).suffix[1:].lower()
325
+ if suffix == 'jpg':
326
+ suffix = 'jpeg'
327
+ base64_image = encode_image(image_file)
328
+ image_url = {'url': f"data:image/{suffix};base64,{base64_image}"}
329
+ return image_url
330
+
331
+ if isinstance(in_cont, str):
332
+ return [{"type": "text", "text": in_cont}]
333
+
334
+ if isinstance(in_cont, dict):
335
+ if 'image_url' in in_cont and isinstance(in_cont['image_url'], str):
336
+ url = in_cont['image_url']
337
+ return [{"type": "image_url", "image_url": {'url': url}}]
338
+ if 'image_file' in in_cont:
339
+ image_url = parse_image_file(in_cont['image_file'])
340
+ in_cont.pop('image_file')
341
+ if in_cont:
342
+ image_url.update(in_cont)
343
+ return [{"type": "image_url", "image_url": image_url}]
344
+
345
+ if 'image_urls' in in_cont:
346
+ return [{"type": "image_url", "image_url": {'url': x}} for x in in_cont['image_urls']]
347
+ if 'image_files' in in_cont:
348
+ return [{"type": "image_url", "image_url": parse_image_file(x)} for x in in_cont['image_files']]
349
+
350
+ return [in_cont]
351
+ else:
352
+ raise ValueError
353
+
354
+ def parse_conts_to_message(self, conts, role='user'):
355
+ """ 可以用一种简化的格式,来配置用户要提问的信息内容
356
+
357
+ :param conts:
358
+ str, 单条文本提问
359
+ list,
360
+ 类似这样的数据,可以完全兼容openai的格式
361
+ [
362
+ {"type": "text", "text": "What’s in this image?"},
363
+ {
364
+ "type": "image_url",
365
+ "image_url": {
366
+ "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
367
+ },
368
+ },
369
+ ]
370
+ 也可以简化:用我这里自定义的简化格式
371
+ 'text' 文本格式直接输入
372
+ {'image_url': 'https://...'}
373
+ {'image_file': 'path/to/file'}
374
+ """
375
+ message = {"role": role}
376
+
377
+ if isinstance(conts, str):
378
+ message["content"] = conts
379
+ else:
380
+ conts = conts if isinstance(conts, (list, tuple)) else [conts]
381
+ message["content"] = []
382
+ for x in conts:
383
+ message["content"] += self.parse_cont_to_conts(x)
384
+
385
+ return message
386
+
387
+ def add_message_from_conts(self, conts, role='user'):
388
+ """ 添加content版本的message """
389
+ message = self.parse_conts_to_message(conts, role=role)
390
+ self._messages.add_many(message)
391
+
392
+ def query(self, conts=None, response_json=None, **kwargs):
393
+ """ 提交一个请求,并获得回复结果
394
+
395
+ :param conts:
396
+ None, content可以不输入,这种一般是外部已经提前配置好各种add_message,这里只要直接请求即可
397
+ str, 常规的文本提问使用
398
+ list, 一般是搭配图片的提问使用
399
+ :param response_json: 是否返回json格式
400
+ 注意就算这个参数为True,提示里也要显示说明需要json格式。官方示例是在初始的role=system中配置
401
+ """
402
+ # 1 total_messages
403
+ if conts:
404
+ messages = [self.parse_conts_to_message(conts)]
405
+ messages += (kwargs.pop('messages', None) or [])
406
+ else:
407
+ messages = []
408
+ total_messages = list(self._messages + messages)
409
+ assert total_messages
410
+
411
+ if response_json:
412
+ kwargs['response_format'] = {"type": "json_object"}
413
+
414
+ # 2 请求结果
415
+ self.recently_request_data = {
416
+ 'api_key': (api_key := self._akpool.fetch_key()),
417
+ }
418
+ completion = OpenAI(api_key=api_key, **self._kwargs).chat.completions.create(**{
419
+ **self._request_kwargs, # 全局参数
420
+ **kwargs, # 单次请求的参数覆盖全局参数
421
+ "messages": total_messages,
422
+ "stream": False,
423
+ })
424
+ answer: str = completion.choices[0].message.content
425
+ self._messages.add_many(*messages, {"role": "assistant", "content": answer})
426
+ return answer
427
+
428
+ def query_image(self, prompt,
429
+ size='1024x1024', model='dall-e-3', quality='standard', n=1,
430
+ save_file=None,
431
+ **kwargs):
432
+ """ 生成图片,注意,此功能不支持引用旧历史记录,而是一个独立的记录来请求model获得一张图
433
+
434
+ :param save_file: 指定保存到本地某个位置
435
+ """
436
+ self.recently_request_data = {
437
+ 'api_key': (api_key := self._akpool.fetch_key()),
438
+ }
439
+ client = OpenAI(api_key=api_key, **self._kwargs)
440
+ response = client.images.generate(
441
+ model=model,
442
+ prompt=prompt,
443
+ size=size,
444
+ quality=quality,
445
+ n=n,
446
+ **kwargs
447
+ )
448
+ image_url = response.data[0].url
449
+ self.add_message_from_conts(prompt, 'user')
450
+ self.add_message_from_conts([{'image_url': image_url}], 'assistant')
451
+
452
+ if save_file:
453
+ download_file(image_url, save_file)
454
+
455
+ return image_url
@@ -45,7 +45,7 @@ _dir = Path(__file__).parent
45
45
 
46
46
  setup(
47
47
  name='pyxllib', # pip 安装时用的名字
48
- version='0.3.121', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
48
+ version='0.3.123', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
49
49
  author='code4101',
50
50
  author_email='877362867@qq.com',
51
51
  url='https://github.com/XLPRUtils/pyxllib',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes