pyxllib 0.3.148__tar.gz → 0.3.150__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 (364) hide show
  1. {pyxllib-0.3.148/pyxllib.egg-info → pyxllib-0.3.150}/PKG-INFO +13 -13
  2. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/autogui/wechat.py +1 -1
  3. pyxllib-0.3.150/pyxllib/ext/wpsapi.py +395 -0
  4. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/yuquelib.py +1 -1
  5. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/specialist/dirlib.py +1 -1
  6. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/specialist/filelib.py +1 -1
  7. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/xlsyncfile.py +1 -1
  8. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/multiprogs.py +1 -1
  9. {pyxllib-0.3.148 → pyxllib-0.3.150/pyxllib.egg-info}/PKG-INFO +13 -13
  10. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib.egg-info/SOURCES.txt +1 -0
  11. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ai/clientlib.py +9 -9
  12. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ai/xltorch.py +1 -1
  13. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/openai2/_core/chat.py +2 -2
  14. {pyxllib-0.3.148 → pyxllib-0.3.150}/setup.py +1 -1
  15. {pyxllib-0.3.148 → pyxllib-0.3.150}/LICENSE +0 -0
  16. {pyxllib-0.3.148 → pyxllib-0.3.150}/MANIFEST.in +0 -0
  17. {pyxllib-0.3.148 → pyxllib-0.3.150}/README.md +0 -0
  18. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/__init__.py +0 -0
  19. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/__init__.py +0 -0
  20. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/disjoint.py +0 -0
  21. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/geo.py +0 -0
  22. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/intervals.py +0 -0
  23. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/matcher.py +0 -0
  24. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/newbie.py +0 -0
  25. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/pupil.py +0 -0
  26. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/shapelylib.py +0 -0
  27. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/specialist.py +0 -0
  28. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/stat.py +0 -0
  29. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/treelib.py +0 -0
  30. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/algo/unitlib.py +0 -0
  31. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/autogui/__init__.py +0 -0
  32. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/autogui/activewin.py +0 -0
  33. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/autogui/all.py +0 -0
  34. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/autogui/autogui.py +0 -0
  35. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/autogui/uiautolib.py +0 -0
  36. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/autogui/virtualkey.py +0 -0
  37. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/autogui/wechat_msg.py +0 -0
  38. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/__init__.py +0 -0
  39. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/expert.py +0 -0
  40. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/imfile.py +0 -0
  41. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/imhash.py +0 -0
  42. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/pupil.py +0 -0
  43. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/rgbfmt.py +0 -0
  44. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/trackbartools.py +0 -0
  45. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/xlcvlib.py +0 -0
  46. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/cv/xlpillib.py +0 -0
  47. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/data/__init__.py +0 -0
  48. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/data/echarts.py +0 -0
  49. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/data/jsonlib.py +0 -0
  50. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/data/oss.py +0 -0
  51. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/data/pglib.py +0 -0
  52. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/data/sqlite.py +0 -0
  53. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/data/sqllib.py +0 -0
  54. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/JLineViewer.py +0 -0
  55. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/__init__.py +0 -0
  56. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/demolib.py +0 -0
  57. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/drissionlib.py +0 -0
  58. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/kq5034lib.py +0 -0
  59. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/old.py +0 -0
  60. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/qt.py +0 -0
  61. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/robustprocfile.py +0 -0
  62. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/seleniumlib.py +0 -0
  63. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/tk.py +0 -0
  64. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/unixlib.py +0 -0
  65. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/utools.py +0 -0
  66. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/webhook.py +0 -0
  67. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/ext/win32lib.py +0 -0
  68. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/__init__.py +0 -0
  69. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/docxlib.py +0 -0
  70. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/gitlib.py +0 -0
  71. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/libreoffice.py +0 -0
  72. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/movielib.py +0 -0
  73. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/newbie.py +0 -0
  74. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/onenotelib.py +0 -0
  75. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/packlib/__init__.py +0 -0
  76. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/packlib/zipfile.py +0 -0
  77. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/pdflib.py +0 -0
  78. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/pupil.py +0 -0
  79. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/specialist/__init__.py +0 -0
  80. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/specialist/download.py +0 -0
  81. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/file/xlsxlib.py +0 -0
  82. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/__init__.py +0 -0
  83. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/cachetools.py +0 -0
  84. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/deprecatedlib.py +0 -0
  85. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/filelock.py +0 -0
  86. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/ipyexec.py +0 -0
  87. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/newbie.py +0 -0
  88. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/pupil.py +0 -0
  89. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/sitepackages.py +0 -0
  90. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/specialist/__init__.py +0 -0
  91. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/specialist/bc.py +0 -0
  92. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/specialist/browser.py +0 -0
  93. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/specialist/common.py +0 -0
  94. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/specialist/datetime.py +0 -0
  95. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/specialist/tictoc.py +0 -0
  96. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/specialist/xllog.py +0 -0
  97. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/prog/xlosenv.py +0 -0
  98. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/stdlib/__init__.py +0 -0
  99. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  100. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  101. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  102. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/__init__.py +0 -0
  103. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/ahocorasick.py +0 -0
  104. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/charclasslib.py +0 -0
  105. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/jiebalib.py +0 -0
  106. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/jinjalib.py +0 -0
  107. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/jscode.py +0 -0
  108. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/latex/__init__.py +0 -0
  109. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/levenshtein.py +0 -0
  110. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/nestenv.py +0 -0
  111. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/newbie.py +0 -0
  112. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/pupil/__init__.py +0 -0
  113. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/pupil/common.py +0 -0
  114. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/pupil/xlalign.py +0 -0
  115. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/pycode.py +0 -0
  116. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/specialist/__init__.py +0 -0
  117. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/specialist/common.py +0 -0
  118. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/specialist/ptag.py +0 -0
  119. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/spellchecker.py +0 -0
  120. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/templates/echart_base.html +0 -0
  121. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/templates/highlight_code.html +0 -0
  122. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/templates/latex_editor.html +0 -0
  123. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/vbacode.py +0 -0
  124. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/text/xmllib.py +0 -0
  125. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/xl.py +0 -0
  126. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib/xlcv.py +0 -0
  127. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib.egg-info/dependency_links.txt +0 -0
  128. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib.egg-info/requires.txt +12 -12
  129. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxllib.egg-info/top_level.txt +0 -0
  130. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/__init__.py +0 -0
  131. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ai/__init__.py +0 -0
  132. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ai/specialist.py +0 -0
  133. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ai/torch_app.py +0 -0
  134. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ai/xlpaddle.py +0 -0
  135. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/__init__.py +0 -0
  136. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/coco.py +0 -0
  137. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/datacls.py +0 -0
  138. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/datasets.py +0 -0
  139. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/gptlib.py +0 -0
  140. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/icdar/__init__.py +0 -0
  141. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/icdar/deteval.py +0 -0
  142. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/icdar/icdar2013.py +0 -0
  143. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/icdar/iou.py +0 -0
  144. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  145. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/imtextline.py +0 -0
  146. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/labelme.py +0 -0
  147. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/removeline.py +0 -0
  148. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/specialist.py +0 -0
  149. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/data/tiktokenlib.py +0 -0
  150. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/eval/__init__.py +0 -0
  151. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/openai2/__init__.py +0 -0
  152. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
  153. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/openai2/_core/group_chat.py +0 -0
  154. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/openai2/openai2.py +0 -0
  155. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/paddleocr.py +0 -0
  156. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/__init__.py +0 -0
  157. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  158. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/__init__.py +0 -0
  159. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  160. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  161. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  162. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  163. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  164. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  165. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  166. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  167. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  168. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  169. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  170. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  171. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  172. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  173. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  174. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  175. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  176. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  177. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  178. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  179. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  180. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  181. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  182. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/__init__.py +0 -0
  183. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  184. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  185. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  186. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  187. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  188. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  189. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  190. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  191. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  192. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  193. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  194. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  195. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  196. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  197. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  198. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  199. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  200. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  201. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  202. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  203. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  204. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  205. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  206. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  207. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  208. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  209. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  210. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  211. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  212. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  213. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  214. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  215. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  216. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  217. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  218. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  219. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  220. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  221. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  222. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  223. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  224. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  225. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  226. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  227. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  228. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  229. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  230. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  231. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  232. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  233. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  234. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  235. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  236. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  237. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  238. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  239. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  240. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  241. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  242. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  243. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  244. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  245. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  246. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  247. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  248. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  249. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  250. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  251. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  252. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  253. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  254. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  255. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  256. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  257. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  258. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  259. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  260. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  261. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  262. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  263. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  264. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  265. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  266. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  267. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  268. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  269. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  270. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  271. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  272. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  273. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  274. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  275. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/__init__.py +0 -0
  276. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/eval.py +0 -0
  277. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/export_center.py +0 -0
  278. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/export_model.py +0 -0
  279. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  280. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  281. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  282. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  283. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  284. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  285. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  286. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  287. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  288. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  289. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  290. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  291. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/program.py +0 -0
  292. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  293. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/train.py +0 -0
  294. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  295. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  296. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/__init__.py +0 -0
  297. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  298. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  299. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  300. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  301. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  302. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  303. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  304. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  305. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  306. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  307. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  308. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  309. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  310. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  311. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  312. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  313. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  314. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  315. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  316. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  317. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  318. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  319. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  320. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  321. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  322. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  323. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  324. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  325. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  326. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  327. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  328. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  329. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  330. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  331. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  332. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  333. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  334. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  335. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  336. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  337. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  338. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  339. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  340. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/iou.py +0 -0
  341. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/logging.py +0 -0
  342. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/network.py +0 -0
  343. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  344. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/profiler.py +0 -0
  345. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/save_load.py +0 -0
  346. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/stats.py +0 -0
  347. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppocr/utils/utility.py +0 -0
  348. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/__init__.py +0 -0
  349. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/predict_system.py +0 -0
  350. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/__init__.py +0 -0
  351. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  352. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/matcher.py +0 -0
  353. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  354. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  355. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  356. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  357. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  358. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  359. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  360. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  361. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/ppstructure/utility.py +0 -0
  362. {pyxllib-0.3.148 → pyxllib-0.3.150}/pyxlpr/xlai.py +0 -0
  363. {pyxllib-0.3.148 → pyxllib-0.3.150}/requirements.txt +0 -0
  364. {pyxllib-0.3.148 → pyxllib-0.3.150}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.148
3
+ Version: 0.3.150
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -38,33 +38,33 @@ Requires-Dist: Jinja2
38
38
  Requires-Dist: pandas>=0.23.4
39
39
  Requires-Dist: pillow
40
40
  Provides-Extra: xlcv
41
- Requires-Dist: pillow; extra == "xlcv"
42
41
  Requires-Dist: opencv-python; extra == "xlcv"
42
+ Requires-Dist: pillow; extra == "xlcv"
43
43
  Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
44
44
  Provides-Extra: xlai
45
- Requires-Dist: visdom; extra == "xlai"
46
- Requires-Dist: opsdroid-get-image-size; extra == "xlai"
47
45
  Requires-Dist: pynvml; extra == "xlai"
48
46
  Requires-Dist: pillow; extra == "xlai"
47
+ Requires-Dist: visdom; extra == "xlai"
49
48
  Requires-Dist: opencv-python; extra == "xlai"
49
+ Requires-Dist: opsdroid-get-image-size; extra == "xlai"
50
50
  Provides-Extra: xlall
51
51
  Requires-Dist: flask-jwt-extended; extra == "xlall"
52
+ Requires-Dist: pillow; extra == "xlall"
53
+ Requires-Dist: flask-cors; extra == "xlall"
54
+ Requires-Dist: zhconv; extra == "xlall"
55
+ Requires-Dist: xlrd; extra == "xlall"
52
56
  Requires-Dist: flask-restful; extra == "xlall"
53
- Requires-Dist: opsdroid-get-image-size; extra == "xlall"
54
- Requires-Dist: uvicorn; extra == "xlall"
55
- Requires-Dist: sentencepiece; extra == "xlall"
56
57
  Requires-Dist: flask-wtf; extra == "xlall"
57
58
  Requires-Dist: openai2; extra == "xlall"
58
- Requires-Dist: arts; extra == "xlall"
59
- Requires-Dist: xlrd; extra == "xlall"
60
59
  Requires-Dist: flask; extra == "xlall"
61
60
  Requires-Dist: ujson; extra == "xlall"
62
61
  Requires-Dist: fastapi; extra == "xlall"
63
- Requires-Dist: html2text; extra == "xlall"
64
- Requires-Dist: pillow; extra == "xlall"
62
+ Requires-Dist: sentencepiece; extra == "xlall"
63
+ Requires-Dist: arts; extra == "xlall"
65
64
  Requires-Dist: opencv-python; extra == "xlall"
66
- Requires-Dist: zhconv; extra == "xlall"
67
- Requires-Dist: flask-cors; extra == "xlall"
65
+ Requires-Dist: uvicorn; extra == "xlall"
66
+ Requires-Dist: html2text; extra == "xlall"
67
+ Requires-Dist: opsdroid-get-image-size; extra == "xlall"
68
68
 
69
69
  # 1 install
70
70
 
@@ -474,7 +474,7 @@ def wechat_lock_send(user, text=None, files=None, *, timeout=-1):
474
474
  with WeChatSingletonLock(timeout) as we:
475
475
  we.set_chat_with(user)
476
476
  if text:
477
- we.send_text(user, text)
477
+ we.send_text(text)
478
478
  if files:
479
479
  we.send_files(files)
480
480
 
@@ -0,0 +1,395 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # @Author : 陈坤泽
4
+ # @Date : 2024/07/31
5
+ import os
6
+ import time
7
+ import json
8
+ from pathlib import Path
9
+ from unittest.mock import MagicMock
10
+ import traceback
11
+ import datetime
12
+ import tempfile
13
+
14
+ import requests
15
+
16
+ from pyxllib.prog.pupil import format_exception
17
+ from pyxllib.ext.drissionlib import get_dp_tab
18
+
19
+
20
+ class WpsApi:
21
+ """ 基于wps给的一些基础api,进行了一定的增强封装
22
+
23
+ 官方很多功能都没有提供,所以有些功能都是做了一些"骚操作"的
24
+ 以及对高并发稳定性的考虑等
25
+ """
26
+
27
+ def __init__(self, token, *, name=None, base_url=None, logger=None,
28
+ folder_id=None):
29
+ """
30
+ :param str token: 登录的token
31
+ :param str name: 记一个账号昵称,方便区分,默认会有token后6位
32
+ :param str base_url: 基础url,一般不用改
33
+ :param logger: 日志记录器,可以不输入,默认置空不记录
34
+ :param folder_id: 默认的文件夹id,有些文件操作相关的功能,需要放到指定目录下
35
+ """
36
+ # 这里登录获得的是自己账号的token
37
+ # Get the token from https://solution.wps.cn/weboffice-go-sdk/api/script/token
38
+ self.token = token
39
+ self.name = name or self.token[-6:]
40
+ self.base_url = base_url or 'https://solution.wps.cn/weboffice-go-sdk/api'
41
+ self.default_template = 'https://kdocs.cn/l/cjVHm9Zy9jU1' # 空白表格,默认的一个表格模板文件,用于创建新文件、测试等
42
+
43
+ self.logger = logger or MagicMock()
44
+ self._folder_id = folder_id or None
45
+
46
+ def __1_基本请求(self):
47
+ pass
48
+
49
+ def request(self, method, endpoint, data=None, **kwargs):
50
+ headers = {
51
+ 'Authorization': self.token,
52
+ 'Content-Type': 'application/json',
53
+ }
54
+ # 重试机制
55
+ for i in range(5):
56
+ try:
57
+ # 根据 method 动态选择请求方式
58
+ resp = requests.request(method, f"{self.base_url}/{endpoint}", headers=headers,
59
+ data=json.dumps(data), timeout=5, **kwargs)
60
+ return resp.json()
61
+ except Exception as e:
62
+ self.logger.warning(f'wps api {self.name} 请求失败,重试第{i + 1}次,{endpoint},{format_exception(e)}')
63
+ time.sleep(5) # 等待5秒后再重试
64
+ return {'error': 'requests.exceptions.Timeout', 'stack': ''}
65
+
66
+ def post(self, endpoint, data=None, **kwargs):
67
+ headers = {
68
+ 'Authorization': self.token,
69
+ 'Content-Type': 'application/json',
70
+ }
71
+ # 重试机制
72
+ for i in range(5):
73
+ try:
74
+ resp = requests.post(f"{self.base_url}/{endpoint}", headers=headers,
75
+ data=json.dumps(data), timeout=5, **kwargs)
76
+ return resp.json()
77
+ except Exception as e:
78
+ self.logger.warning(f'wps api {self.name} 请求失败,重试第{i + 1}次,{endpoint},{format_exception(e)}')
79
+ time.sleep(5) # 等待5秒后再重试
80
+ return {'error': 'requests.exceptions.Timeout', 'stack': ''}
81
+
82
+ def put(self, endpoint, data=None, **kwargs):
83
+ """ 主要是上传文件用的 """
84
+ headers = { # 注意这个相比post删掉了'Content-Type'
85
+ 'Authorization': self.token,
86
+ }
87
+ # 重试机制
88
+ for i in range(5):
89
+ try:
90
+ # 注意put版本相比post,不仅改了requests.put,还改了data的传输形式
91
+ resp = requests.put(f"{self.base_url}/{endpoint}", headers=headers,
92
+ data=data, timeout=5, **kwargs)
93
+ return resp.json()
94
+ except Exception as e:
95
+ self.logger.warning(f'wps api {self.name} 请求失败,重试第{i + 1}次,{endpoint},{format_exception(e)}')
96
+ time.sleep(5) # 等待5秒后再重试
97
+ return {'error': 'requests.exceptions.Timeout', 'stack': ''}
98
+
99
+ def __2_目录操作(self):
100
+ pass
101
+
102
+ def create_folder(self, name):
103
+ """ 创建目录
104
+
105
+ wps未提供
106
+ 检索已创建成功目录id
107
+ 删除指定目录
108
+ """
109
+ resp_json = self.post('files/folder', {'name': name})
110
+ # 创建成功返回:{'folder_id': 316928828842}
111
+ # 如果文件已存在,返回的是:{'msg': '文件名冲突', 'result': 'fileNameConflict'}
112
+ return resp_json['folder_id']
113
+
114
+ def get_folder_id(self, check_folder=True):
115
+ """
116
+ :param bool check_folder: 是否严格校验缓存的目录是否有效,如果无效会自动重置
117
+ 一般情况下为了效率的话,可以不开
118
+ 为了保险稳定性的话,最好打开
119
+ """
120
+ if self._folder_id is None:
121
+ # 1 看本地是否有缓存folder_id
122
+ config_dir = Path(tempfile.gettempdir()) / 'WpsApiPresetFolders'
123
+ config_dir.mkdir(exist_ok=True)
124
+ config_file = config_dir / f'{self.token}.txt'
125
+ if config_file.is_file():
126
+ self._folder_id = config_file.read_text()
127
+
128
+ if check_folder:
129
+ try:
130
+ file_id = self.save_as_file()
131
+ self.delete_file(file_id)
132
+ return self._folder_id
133
+ except ValueError as e: # 目录可能被删掉了,还是要重新创建的
134
+ self._folder_id = None
135
+ else:
136
+ return self._folder_id
137
+
138
+ # 2 获得folder_id,并保存到本地
139
+ for i in range(5):
140
+ try:
141
+ now_tag = datetime.datetime.now().strftime('%Y%m%d_%H%M%S_%f') # 以当前时间点新建一个目录
142
+ self._folder_id = str(self.create_folder(now_tag)) # 虽然是一串数字,但大部分场合都是要当做str形式使用
143
+ config_file.write_text(self._folder_id)
144
+ break
145
+ except KeyError as e:
146
+ self.logger.warning(f'wps api {self.name} 请求失败,重试第{i + 1}次,{format_exception(e)}')
147
+ time.sleep(2)
148
+ else:
149
+ raise ValueError('无法获取folder_id,命名全部冲突的概率极低,请检查是否联网')
150
+
151
+ return self._folder_id
152
+
153
+ @property
154
+ def folder_id(self):
155
+ self.get_folder_id()
156
+ return self._folder_id
157
+
158
+ def __3_基础功能(self):
159
+ pass
160
+
161
+ def save_as_file(self, src_file_id=None, dst_folder_id=None):
162
+ """ 另存文件 """
163
+ # 1
164
+ if src_file_id is None:
165
+ src_file_id = self.default_template.split('/')[-1]
166
+ if dst_folder_id is None:
167
+ dst_folder_id = self.folder_id
168
+
169
+ # 2
170
+ resp_json = self.post('files/save_as', {
171
+ 'source_fileid': str(src_file_id),
172
+ 'target_parentid': int(dst_folder_id),
173
+ })
174
+
175
+ # 3
176
+ if 'new_fileid' in resp_json:
177
+ return resp_json['new_fileid']
178
+ else:
179
+ traceback.print_exc()
180
+ raise ValueError
181
+
182
+ def delete_file(self, file_id):
183
+ """ 这里要输入的是表格的url
184
+
185
+ 删除成功:{'result': 'ok'}
186
+ 如果不存在,返回:{'result': 'fileNotExists', 'msg': '文件(夹)不存在'}
187
+ 注意这个接口其实不支持删除目录,输入目录类id会得到:{'result': 'InvalidArgument', 'msg': '请求参数错误'}
188
+ """
189
+ return self.post('files/delete', {'file_id': str(file_id)})
190
+
191
+ def download(self, source_file_id, target_file_path):
192
+ """ 下载文件到本地
193
+
194
+ 注意使用团队版api上传的文件,如果不是.ksheet而是.xlsx等类型,这里下载会报错:{'result': 'InvalidArgument'}
195
+ """
196
+ resp_json = self.post('files/export_xlsx', {'file_id': str(source_file_id)})
197
+ # 使用requests下载文件
198
+ with requests.get(resp_json['url'], stream=True) as r:
199
+ r.raise_for_status()
200
+ with open(target_file_path, 'wb') as f:
201
+ for chunk in r.iter_content(chunk_size=8192):
202
+ if chunk:
203
+ f.write(chunk)
204
+
205
+ def run_airscript(self, file_id, code, return_mode=None):
206
+ """ 执行as/jsa脚本
207
+
208
+ :param return_mode: 返回格式
209
+ None,提取到的结果
210
+ json: 返回json格式
211
+ """
212
+ reply = self.post('script/evaluate', {
213
+ 'file_id': str(file_id),
214
+ 'code': code,
215
+ })
216
+
217
+ if return_mode == 'json':
218
+ return reply
219
+
220
+ if 'error' in reply:
221
+ raise Exception('evaluate script failed: {}\nstack: {}'.format(reply['error'], reply['stack']))
222
+
223
+ return reply['return']
224
+
225
+
226
+ class WpsGroupApi(WpsApi):
227
+ """ 团队版的api
228
+ """
229
+
230
+ def __init__(self, token, *, group_id=None, group_folder_id=None, **kwargs):
231
+ super().__init__(token, **kwargs)
232
+ self.group_id = group_id
233
+ self.group_folder_id = group_folder_id # 团队版的默认存储目录
234
+
235
+ def upload_file(self, local_file, remote_file_name=None, group_folder_id=None, group_id=None):
236
+ """ 只有团队版才有上传文件的功能,但上传后的文件,和其他文件功能,爬虫的处理,都是兼容的
237
+
238
+ :param local_file: 要上传的本地文件
239
+ :param remote_file_name: 存储在远程的参考文件名
240
+ 注意这个是要写后缀的,否则会成为无法识别类型的文件
241
+ 写xlsx是可以的,但是一般建议是写成 .ksheet,这是官方标准的智能表格格式,目前测试也只有这种格式才支持api再重复下载
242
+ :param group_folder_id: 团队目录id
243
+ :param group_id: 团队id
244
+ """
245
+ # 1 配置参数
246
+ local_file = Path(local_file)
247
+ remote_file_name = remote_file_name or local_file.name
248
+ group_folder_id = group_folder_id or self.group_folder_id
249
+ group_id = group_id or self.group_id
250
+
251
+ # 2 上传文件
252
+ files = {
253
+ "file": (remote_file_name, open(local_file, "rb"))
254
+ }
255
+ data = {
256
+ "group_id": str(group_id),
257
+ "parent_id": str(group_folder_id)
258
+ }
259
+ resp = self.put('files/upload', data, files=files)
260
+ print(resp)
261
+ # {'result': 'InvalidArguments', 'msg': "request Content-Type isn't multipart/form-data"}
262
+ return resp.get('file_id', '')
263
+
264
+
265
+ class WpsWeb:
266
+ """ wps网页版的爬虫 """
267
+
268
+ def __init__(self, dp_page=None):
269
+ """ 初始化及登录 """
270
+ # 1 找是否已经存在页面,确定页面的复用规则,并激活窗口
271
+ if dp_page is None:
272
+ def dp_page(tab):
273
+ if tab.url.startswith('https://www.kdocs.cn'):
274
+ return tab
275
+
276
+ tab = get_dp_tab(dp_page)
277
+ tab.set.activate()
278
+
279
+ # # 2 看是否需要登录
280
+ while not tab.url == 'https://www.kdocs.cn/latest':
281
+ tab.get('https://www.kdocs.cn')
282
+
283
+ self.tab = tab
284
+ self.page = self.tab.page
285
+
286
+ def get_token(self):
287
+ """ 获取token的值
288
+ 需要确保账号提前有登录好
289
+ """
290
+ tab = self.page.new_tab('https://solution.wps.cn/weboffice-go-sdk/api/script/token')
291
+ tab.wait.load_start()
292
+ token = json.loads(tab('tag:pre').inner_html)['token']
293
+ return token
294
+
295
+ def share_file(self, file_id, link_permission=1):
296
+ """ 分享文件
297
+
298
+ :param link_permission:
299
+ 0,关闭分享
300
+ 1,查看权限
301
+ 2,评论权限
302
+ 3,编辑权限
303
+ """
304
+ # 1 访问文档
305
+ if not str(file_id).startswith('https://www.kdocs.cn/l/'):
306
+ file_id = f'https://www.kdocs.cn/l/{file_id}'
307
+ tab = self.tab
308
+ tab.get(file_id)
309
+
310
+ # 2 获得当前文档的权限设置情况
311
+ tab('tag:span@@text()=分享').click()
312
+ for i in range(5):
313
+ eles = tab.eles('tag:div@@class=kso-group-item__after')
314
+ if len(eles) > 2:
315
+ break
316
+ tab.wait(1)
317
+ if '开启后分享' in eles[0].text:
318
+ cur_permission = 0
319
+ else:
320
+ eles[1].click() # 点开按钮触发后,才能获得当前文件权限
321
+ premission_text = eles[1]('tag:span@@class=permission-text').text
322
+ if '可查看' in premission_text:
323
+ cur_permission = 1
324
+ elif '可评论' in premission_text:
325
+ cur_permission = 2
326
+ elif '可编辑' in premission_text:
327
+ cur_permission = 3
328
+ else:
329
+ raise ValueError
330
+
331
+ # 3 是否需要修改权限
332
+ if cur_permission != link_permission:
333
+ if link_permission == 0: # 目标是关闭分享
334
+ eles[0].click()
335
+ else:
336
+ # 其他都是要开启分享,如果当前没启用分享,要先启用
337
+ if cur_permission == 0:
338
+ eles[0].click()
339
+ tab.wait(2)
340
+ eles[1].click() # trick, 这句是写在if里面的,只有这种情况需要重新点链接权限,否则前面已经点开确认过
341
+ dst_text = ['查看', '查看和评论', '编辑'][link_permission - 1]
342
+ eles2 = tab.eles('tag:div@@class=kso-shareV3-menu-item') # 这一组标签比较特别,需要自己遍历处理
343
+ for ele in eles2:
344
+ if ele.text == dst_text:
345
+ # DrissionPage.errors.NoRectError: 该元素没有位置及大小。
346
+ ele.wait.clickable(timeout=10)
347
+ ele.click()
348
+ break
349
+
350
+
351
+ class WpsOnlineScriptApi:
352
+ """ wps的"脚本令牌"调用模式 """
353
+
354
+ def __init__(self, token=None):
355
+ self.headers = {
356
+ 'Content-Type': "application/json",
357
+ 'AirScript-Token': token or os.getenv('WPS_SCRIPT_TOKEN', ''),
358
+ }
359
+ self.default_file_id = None
360
+
361
+ def post_request(self, url, payload):
362
+ """
363
+ 发送 POST 请求到指定的 URL 并返回响应结果
364
+ """
365
+ try:
366
+ response = requests.post(url, json=payload, headers=self.headers)
367
+ response.raise_for_status() # 如果请求失败会抛出异常
368
+ return response.json()
369
+ except requests.exceptions.RequestException as e:
370
+ print(f"请求失败: {e}")
371
+ return None
372
+
373
+ def run_script(self, script_id, file_id=None, args=None):
374
+ """
375
+ 执行 WPS 脚本并返回执行结果
376
+
377
+ :param file_id: 文件 ID
378
+ :param script_id: 脚本 ID
379
+ :param args: 脚本参数 (可选)
380
+
381
+ todo 官方除了同步接口,还有异步接口。https://airsheet.wps.cn/docs/apitoken/api.html
382
+ """
383
+ file_id = file_id or self.default_file_id
384
+ url = f"https://www.kdocs.cn/api/v3/ide/file/{file_id}/script/{script_id}/sync_task"
385
+ payload = {
386
+ "Context": {
387
+ "argv": args if args else {}
388
+ }
389
+ }
390
+ res = self.post_request(url, payload)
391
+ return res['data']['result']
392
+
393
+
394
+ if __name__ == '__main__':
395
+ pass
@@ -23,7 +23,7 @@ class Yuque:
23
23
  def __init__(self, token=None, user_id=None):
24
24
  self.base_url = "https://www.yuque.com/api/v2"
25
25
  self.headers = {
26
- "X-Auth-Token": token or os.environ.get('YUQUE_TOKEN'),
26
+ "X-Auth-Token": token or os.getenv('YUQUE_TOKEN'),
27
27
  "Content-Type": "application/json"
28
28
  }
29
29
  self._user_id = user_id
@@ -38,7 +38,7 @@ class Dir(PathBase):
38
38
 
39
39
  # 零、常用的目录类
40
40
  TEMP = pathlib.Path(tempfile.gettempdir())
41
- if os.environ.get('Desktop', None): # 如果修改了win10默认的桌面路径,需要在环境变量添加一个正确的Desktop路径值
41
+ if os.getenv('Desktop', None): # 如果修改了win10默认的桌面路径,需要在环境变量添加一个正确的Desktop路径值
42
42
  DESKTOP = os.environ['Desktop']
43
43
  else:
44
44
  DESKTOP = os.path.join(str(pathlib.Path.home()), 'Desktop') # 这个不一定准,桌面是有可能被移到D盘等的
@@ -806,7 +806,7 @@ class XlPath(type(pathlib.Path())):
806
806
 
807
807
  @classmethod
808
808
  def desktop(cls):
809
- if os.environ.get('Desktop', None): # 如果修改了win10默认的桌面路径,需要在环境变量添加一个正确的Desktop路径值
809
+ if os.getenv('Desktop', None): # 如果修改了win10默认的桌面路径,需要在环境变量添加一个正确的Desktop路径值
810
810
  desktop = os.environ['Desktop']
811
811
  else:
812
812
  desktop = os.path.join(pathlib.Path.home(), 'Desktop') # 这个不一定准,桌面是有可能被移到D盘等的
@@ -31,7 +31,7 @@ class SyncFileClient:
31
31
  """
32
32
  :param host: 可以只写主机名
33
33
  """
34
- token = token or os.environ.get("XL_COMMON_SERVER_TOKEN")
34
+ token = token or os.getenv("XL_COMMON_SERVER_TOKEN")
35
35
  self.headers = {
36
36
  'Authorization': f'Bearer {token}',
37
37
  }
@@ -799,7 +799,7 @@ class LauncherDashboard:
799
799
 
800
800
  # 处理 port 和 locations
801
801
  port = row['port'] if not pd.isna(row['port']) else "N/A"
802
- locations = ", ".join(row['locations']) if isinstance(row['locations'], list) else "N/A"
802
+ locations = str(row['locations'])
803
803
 
804
804
  # 格式化输出
805
805
  output.append(f"{idx:<5} {name:<15} {pid:<10} {status:<10} {port:<10} {locations:<20} {args_str}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.148
3
+ Version: 0.3.150
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -38,33 +38,33 @@ Requires-Dist: Jinja2
38
38
  Requires-Dist: pandas>=0.23.4
39
39
  Requires-Dist: pillow
40
40
  Provides-Extra: xlcv
41
- Requires-Dist: pillow; extra == "xlcv"
42
41
  Requires-Dist: opencv-python; extra == "xlcv"
42
+ Requires-Dist: pillow; extra == "xlcv"
43
43
  Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
44
44
  Provides-Extra: xlai
45
- Requires-Dist: visdom; extra == "xlai"
46
- Requires-Dist: opsdroid-get-image-size; extra == "xlai"
47
45
  Requires-Dist: pynvml; extra == "xlai"
48
46
  Requires-Dist: pillow; extra == "xlai"
47
+ Requires-Dist: visdom; extra == "xlai"
49
48
  Requires-Dist: opencv-python; extra == "xlai"
49
+ Requires-Dist: opsdroid-get-image-size; extra == "xlai"
50
50
  Provides-Extra: xlall
51
51
  Requires-Dist: flask-jwt-extended; extra == "xlall"
52
+ Requires-Dist: pillow; extra == "xlall"
53
+ Requires-Dist: flask-cors; extra == "xlall"
54
+ Requires-Dist: zhconv; extra == "xlall"
55
+ Requires-Dist: xlrd; extra == "xlall"
52
56
  Requires-Dist: flask-restful; extra == "xlall"
53
- Requires-Dist: opsdroid-get-image-size; extra == "xlall"
54
- Requires-Dist: uvicorn; extra == "xlall"
55
- Requires-Dist: sentencepiece; extra == "xlall"
56
57
  Requires-Dist: flask-wtf; extra == "xlall"
57
58
  Requires-Dist: openai2; extra == "xlall"
58
- Requires-Dist: arts; extra == "xlall"
59
- Requires-Dist: xlrd; extra == "xlall"
60
59
  Requires-Dist: flask; extra == "xlall"
61
60
  Requires-Dist: ujson; extra == "xlall"
62
61
  Requires-Dist: fastapi; extra == "xlall"
63
- Requires-Dist: html2text; extra == "xlall"
64
- Requires-Dist: pillow; extra == "xlall"
62
+ Requires-Dist: sentencepiece; extra == "xlall"
63
+ Requires-Dist: arts; extra == "xlall"
65
64
  Requires-Dist: opencv-python; extra == "xlall"
66
- Requires-Dist: zhconv; extra == "xlall"
67
- Requires-Dist: flask-cors; extra == "xlall"
65
+ Requires-Dist: uvicorn; extra == "xlall"
66
+ Requires-Dist: html2text; extra == "xlall"
67
+ Requires-Dist: opsdroid-get-image-size; extra == "xlall"
68
68
 
69
69
  # 1 install
70
70
 
@@ -61,6 +61,7 @@ pyxllib/ext/unixlib.py
61
61
  pyxllib/ext/utools.py
62
62
  pyxllib/ext/webhook.py
63
63
  pyxllib/ext/win32lib.py
64
+ pyxllib/ext/wpsapi.py
64
65
  pyxllib/ext/yuquelib.py
65
66
  pyxllib/file/__init__.py
66
67
  pyxllib/file/docxlib.py
@@ -215,15 +215,15 @@ class XlAiClient:
215
215
  self.login_priu(**accounts['priu'], check=check)
216
216
 
217
217
  # 3 (新)增设了更规范的环境变量名
218
- if auto_login and os.environ.get("XL_API_AIP_ID"):
219
- self.login_aipocr(os.environ.get("XL_API_AIP_ID"),
220
- os.environ.get("XL_API_AIP_KEY"),
221
- os.environ.get("XL_API_AIP_SKEY"))
222
- if auto_login and os.environ.get("XL_API_MATHPIX_ID"):
223
- self.login_mathpix(os.environ.get("XL_API_MATHPIX_ID"),
224
- os.environ.get("XL_API_MATHPIX_KEY"))
225
- if auto_login and os.environ.get("XL_API_PRIU_TOKEN"):
226
- self.login_priu(os.environ.get("XL_API_PRIU_TOKEN"))
218
+ if auto_login and os.getenv("XL_API_AIP_ID"):
219
+ self.login_aipocr(os.getenv("XL_API_AIP_ID"),
220
+ os.getenv("XL_API_AIP_KEY"),
221
+ os.getenv("XL_API_AIP_SKEY"))
222
+ if auto_login and os.getenv("XL_API_MATHPIX_ID"):
223
+ self.login_mathpix(os.getenv("XL_API_MATHPIX_ID"),
224
+ os.getenv("XL_API_MATHPIX_KEY"))
225
+ if auto_login and os.getenv("XL_API_PRIU_TOKEN"):
226
+ self.login_priu(os.getenv("XL_API_PRIU_TOKEN"))
227
227
 
228
228
  def __A1_登录账号(self):
229
229
  pass
@@ -642,7 +642,7 @@ class ZcPredictor:
642
642
 
643
643
  # 1 配置参数
644
644
  if isinstance(config_file, str) and config_file[-5:].lower() == '.yaml':
645
- deploy_path = os.environ.get('OCRWORK_DEPLOY', '.') # 支持在环境变量自定义:部署所用的配置、模型所在目录
645
+ deploy_path = os.getenv('OCRWORK_DEPLOY', '.') # 支持在环境变量自定义:部署所用的配置、模型所在目录
646
646
  config_file = os.path.join(deploy_path, config_file)
647
647
  f = open(config_file, "r")
648
648
  elif isinstance(config_file, str):
@@ -157,10 +157,10 @@ class Chat:
157
157
  :param kwargs: 主要是供OpenAI初始化时使用的参数
158
158
 
159
159
  """
160
- api_key = api_key or self.default_api_key or os.environ.get("OPENAI_API_KEY")
160
+ api_key = api_key or self.default_api_key or os.getenv("OPENAI_API_KEY")
161
161
 
162
162
  api_base = kwargs.pop('api_base', None)
163
- base_url = base_url or api_base or self.default_base_url or os.environ.get("OPENAI_BASE_URL")
163
+ base_url = base_url or api_base or self.default_base_url or os.getenv("OPENAI_BASE_URL")
164
164
  MsgMaxCount = kwargs.pop('MsgMaxCount', None)
165
165
  msg_max_count = msg_max_count or MsgMaxCount
166
166
 
@@ -50,7 +50,7 @@ _dir = Path(__file__).parent
50
50
 
51
51
  setup(
52
52
  name='pyxllib', # pip 安装时用的名字
53
- version='0.3.148', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
53
+ version='0.3.150', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
54
54
  author='code4101',
55
55
  author_email='877362867@qq.com',
56
56
  url='https://github.com/XLPRUtils/pyxllib',
File without changes
File without changes
File without changes
File without changes
File without changes