pyxllib 0.3.96__py3-none-any.whl → 0.3.197__py3-none-any.whl

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 (306) hide show
  1. pyxllib/algo/geo.py +12 -0
  2. pyxllib/algo/intervals.py +1 -1
  3. pyxllib/algo/matcher.py +78 -0
  4. pyxllib/algo/pupil.py +187 -19
  5. pyxllib/algo/specialist.py +2 -1
  6. pyxllib/algo/stat.py +38 -2
  7. {pyxlpr → pyxllib/autogui}/__init__.py +1 -1
  8. pyxllib/autogui/activewin.py +246 -0
  9. pyxllib/autogui/all.py +9 -0
  10. pyxllib/{ext/autogui → autogui}/autogui.py +40 -11
  11. pyxllib/autogui/uiautolib.py +362 -0
  12. pyxllib/autogui/wechat.py +827 -0
  13. pyxllib/autogui/wechat_msg.py +421 -0
  14. pyxllib/autogui/wxautolib.py +84 -0
  15. pyxllib/cv/slidercaptcha.py +137 -0
  16. pyxllib/data/echarts.py +123 -12
  17. pyxllib/data/jsonlib.py +89 -0
  18. pyxllib/data/pglib.py +514 -30
  19. pyxllib/data/sqlite.py +231 -4
  20. pyxllib/ext/JLineViewer.py +14 -1
  21. pyxllib/ext/drissionlib.py +277 -0
  22. pyxllib/ext/kq5034lib.py +0 -1594
  23. pyxllib/ext/robustprocfile.py +497 -0
  24. pyxllib/ext/unixlib.py +6 -5
  25. pyxllib/ext/utools.py +108 -95
  26. pyxllib/ext/webhook.py +32 -14
  27. pyxllib/ext/wjxlib.py +88 -0
  28. pyxllib/ext/wpsapi.py +124 -0
  29. pyxllib/ext/xlwork.py +9 -0
  30. pyxllib/ext/yuquelib.py +1003 -71
  31. pyxllib/file/docxlib.py +1 -1
  32. pyxllib/file/libreoffice.py +165 -0
  33. pyxllib/file/movielib.py +9 -0
  34. pyxllib/file/packlib/__init__.py +112 -75
  35. pyxllib/file/pdflib.py +1 -1
  36. pyxllib/file/pupil.py +1 -1
  37. pyxllib/file/specialist/dirlib.py +1 -1
  38. pyxllib/file/specialist/download.py +10 -3
  39. pyxllib/file/specialist/filelib.py +266 -55
  40. pyxllib/file/xlsxlib.py +205 -50
  41. pyxllib/file/xlsyncfile.py +341 -0
  42. pyxllib/prog/cachetools.py +64 -0
  43. pyxllib/prog/filelock.py +42 -0
  44. pyxllib/prog/multiprogs.py +940 -0
  45. pyxllib/prog/newbie.py +9 -2
  46. pyxllib/prog/pupil.py +129 -60
  47. pyxllib/prog/specialist/__init__.py +176 -2
  48. pyxllib/prog/specialist/bc.py +5 -2
  49. pyxllib/prog/specialist/browser.py +11 -2
  50. pyxllib/prog/specialist/datetime.py +68 -0
  51. pyxllib/prog/specialist/tictoc.py +12 -13
  52. pyxllib/prog/specialist/xllog.py +5 -5
  53. pyxllib/prog/xlosenv.py +7 -0
  54. pyxllib/text/airscript.js +744 -0
  55. pyxllib/text/charclasslib.py +17 -5
  56. pyxllib/text/jiebalib.py +6 -3
  57. pyxllib/text/jinjalib.py +32 -0
  58. pyxllib/text/jsa_ai_prompt.md +271 -0
  59. pyxllib/text/jscode.py +159 -4
  60. pyxllib/text/nestenv.py +1 -1
  61. pyxllib/text/newbie.py +12 -0
  62. pyxllib/text/pupil/common.py +26 -0
  63. pyxllib/text/specialist/ptag.py +2 -2
  64. pyxllib/text/templates/echart_base.html +11 -0
  65. pyxllib/text/templates/highlight_code.html +17 -0
  66. pyxllib/text/templates/latex_editor.html +103 -0
  67. pyxllib/text/xmllib.py +76 -14
  68. pyxllib/xl.py +2 -1
  69. pyxllib-0.3.197.dist-info/METADATA +48 -0
  70. pyxllib-0.3.197.dist-info/RECORD +126 -0
  71. {pyxllib-0.3.96.dist-info → pyxllib-0.3.197.dist-info}/WHEEL +1 -2
  72. pyxllib/ext/autogui/__init__.py +0 -8
  73. pyxllib-0.3.96.dist-info/METADATA +0 -51
  74. pyxllib-0.3.96.dist-info/RECORD +0 -333
  75. pyxllib-0.3.96.dist-info/top_level.txt +0 -2
  76. pyxlpr/ai/__init__.py +0 -5
  77. pyxlpr/ai/clientlib.py +0 -1281
  78. pyxlpr/ai/specialist.py +0 -286
  79. pyxlpr/ai/torch_app.py +0 -172
  80. pyxlpr/ai/xlpaddle.py +0 -655
  81. pyxlpr/ai/xltorch.py +0 -705
  82. pyxlpr/data/__init__.py +0 -11
  83. pyxlpr/data/coco.py +0 -1325
  84. pyxlpr/data/datacls.py +0 -365
  85. pyxlpr/data/datasets.py +0 -200
  86. pyxlpr/data/gptlib.py +0 -1291
  87. pyxlpr/data/icdar/__init__.py +0 -96
  88. pyxlpr/data/icdar/deteval.py +0 -377
  89. pyxlpr/data/icdar/icdar2013.py +0 -341
  90. pyxlpr/data/icdar/iou.py +0 -340
  91. pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -463
  92. pyxlpr/data/imtextline.py +0 -473
  93. pyxlpr/data/labelme.py +0 -866
  94. pyxlpr/data/removeline.py +0 -179
  95. pyxlpr/data/specialist.py +0 -57
  96. pyxlpr/eval/__init__.py +0 -85
  97. pyxlpr/paddleocr.py +0 -776
  98. pyxlpr/ppocr/__init__.py +0 -15
  99. pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -226
  100. pyxlpr/ppocr/data/__init__.py +0 -135
  101. pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -26
  102. pyxlpr/ppocr/data/imaug/__init__.py +0 -67
  103. pyxlpr/ppocr/data/imaug/copy_paste.py +0 -170
  104. pyxlpr/ppocr/data/imaug/east_process.py +0 -437
  105. pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -244
  106. pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -114
  107. pyxlpr/ppocr/data/imaug/label_ops.py +0 -789
  108. pyxlpr/ppocr/data/imaug/make_border_map.py +0 -184
  109. pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -106
  110. pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -126
  111. pyxlpr/ppocr/data/imaug/operators.py +0 -433
  112. pyxlpr/ppocr/data/imaug/pg_process.py +0 -906
  113. pyxlpr/ppocr/data/imaug/randaugment.py +0 -143
  114. pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -239
  115. pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -533
  116. pyxlpr/ppocr/data/imaug/sast_process.py +0 -777
  117. pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -17
  118. pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -120
  119. pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -168
  120. pyxlpr/ppocr/data/lmdb_dataset.py +0 -115
  121. pyxlpr/ppocr/data/pgnet_dataset.py +0 -104
  122. pyxlpr/ppocr/data/pubtab_dataset.py +0 -107
  123. pyxlpr/ppocr/data/simple_dataset.py +0 -372
  124. pyxlpr/ppocr/losses/__init__.py +0 -61
  125. pyxlpr/ppocr/losses/ace_loss.py +0 -52
  126. pyxlpr/ppocr/losses/basic_loss.py +0 -135
  127. pyxlpr/ppocr/losses/center_loss.py +0 -88
  128. pyxlpr/ppocr/losses/cls_loss.py +0 -30
  129. pyxlpr/ppocr/losses/combined_loss.py +0 -67
  130. pyxlpr/ppocr/losses/det_basic_loss.py +0 -208
  131. pyxlpr/ppocr/losses/det_db_loss.py +0 -80
  132. pyxlpr/ppocr/losses/det_east_loss.py +0 -63
  133. pyxlpr/ppocr/losses/det_pse_loss.py +0 -149
  134. pyxlpr/ppocr/losses/det_sast_loss.py +0 -121
  135. pyxlpr/ppocr/losses/distillation_loss.py +0 -272
  136. pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -140
  137. pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -113
  138. pyxlpr/ppocr/losses/rec_aster_loss.py +0 -99
  139. pyxlpr/ppocr/losses/rec_att_loss.py +0 -39
  140. pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -44
  141. pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -70
  142. pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -30
  143. pyxlpr/ppocr/losses/rec_sar_loss.py +0 -28
  144. pyxlpr/ppocr/losses/rec_srn_loss.py +0 -47
  145. pyxlpr/ppocr/losses/table_att_loss.py +0 -109
  146. pyxlpr/ppocr/metrics/__init__.py +0 -44
  147. pyxlpr/ppocr/metrics/cls_metric.py +0 -45
  148. pyxlpr/ppocr/metrics/det_metric.py +0 -82
  149. pyxlpr/ppocr/metrics/distillation_metric.py +0 -73
  150. pyxlpr/ppocr/metrics/e2e_metric.py +0 -86
  151. pyxlpr/ppocr/metrics/eval_det_iou.py +0 -274
  152. pyxlpr/ppocr/metrics/kie_metric.py +0 -70
  153. pyxlpr/ppocr/metrics/rec_metric.py +0 -75
  154. pyxlpr/ppocr/metrics/table_metric.py +0 -50
  155. pyxlpr/ppocr/modeling/architectures/__init__.py +0 -32
  156. pyxlpr/ppocr/modeling/architectures/base_model.py +0 -88
  157. pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -60
  158. pyxlpr/ppocr/modeling/backbones/__init__.py +0 -54
  159. pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -268
  160. pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -246
  161. pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -285
  162. pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -265
  163. pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -186
  164. pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -138
  165. pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -258
  166. pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -48
  167. pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -210
  168. pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -143
  169. pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -307
  170. pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -286
  171. pyxlpr/ppocr/modeling/heads/__init__.py +0 -54
  172. pyxlpr/ppocr/modeling/heads/cls_head.py +0 -52
  173. pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -118
  174. pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -121
  175. pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -37
  176. pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -128
  177. pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -253
  178. pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -206
  179. pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -163
  180. pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -393
  181. pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -202
  182. pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -88
  183. pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -826
  184. pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -402
  185. pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -280
  186. pyxlpr/ppocr/modeling/heads/self_attention.py +0 -406
  187. pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -246
  188. pyxlpr/ppocr/modeling/necks/__init__.py +0 -32
  189. pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -111
  190. pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -188
  191. pyxlpr/ppocr/modeling/necks/fpn.py +0 -138
  192. pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -314
  193. pyxlpr/ppocr/modeling/necks/rnn.py +0 -92
  194. pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -284
  195. pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -110
  196. pyxlpr/ppocr/modeling/transforms/__init__.py +0 -28
  197. pyxlpr/ppocr/modeling/transforms/stn.py +0 -135
  198. pyxlpr/ppocr/modeling/transforms/tps.py +0 -308
  199. pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -156
  200. pyxlpr/ppocr/optimizer/__init__.py +0 -61
  201. pyxlpr/ppocr/optimizer/learning_rate.py +0 -228
  202. pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -49
  203. pyxlpr/ppocr/optimizer/optimizer.py +0 -160
  204. pyxlpr/ppocr/optimizer/regularizer.py +0 -52
  205. pyxlpr/ppocr/postprocess/__init__.py +0 -55
  206. pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -33
  207. pyxlpr/ppocr/postprocess/db_postprocess.py +0 -234
  208. pyxlpr/ppocr/postprocess/east_postprocess.py +0 -143
  209. pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -200
  210. pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -52
  211. pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -15
  212. pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -29
  213. pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -14
  214. pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -118
  215. pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -654
  216. pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -355
  217. pyxlpr/ppocr/tools/__init__.py +0 -14
  218. pyxlpr/ppocr/tools/eval.py +0 -83
  219. pyxlpr/ppocr/tools/export_center.py +0 -77
  220. pyxlpr/ppocr/tools/export_model.py +0 -129
  221. pyxlpr/ppocr/tools/infer/predict_cls.py +0 -151
  222. pyxlpr/ppocr/tools/infer/predict_det.py +0 -300
  223. pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -169
  224. pyxlpr/ppocr/tools/infer/predict_rec.py +0 -414
  225. pyxlpr/ppocr/tools/infer/predict_system.py +0 -204
  226. pyxlpr/ppocr/tools/infer/utility.py +0 -629
  227. pyxlpr/ppocr/tools/infer_cls.py +0 -83
  228. pyxlpr/ppocr/tools/infer_det.py +0 -134
  229. pyxlpr/ppocr/tools/infer_e2e.py +0 -122
  230. pyxlpr/ppocr/tools/infer_kie.py +0 -153
  231. pyxlpr/ppocr/tools/infer_rec.py +0 -146
  232. pyxlpr/ppocr/tools/infer_table.py +0 -107
  233. pyxlpr/ppocr/tools/program.py +0 -596
  234. pyxlpr/ppocr/tools/test_hubserving.py +0 -117
  235. pyxlpr/ppocr/tools/train.py +0 -163
  236. pyxlpr/ppocr/tools/xlprog.py +0 -748
  237. pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -94
  238. pyxlpr/ppocr/utils/__init__.py +0 -24
  239. pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -117
  240. pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -162
  241. pyxlpr/ppocr/utils/dict/be_dict.txt +0 -145
  242. pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -140
  243. pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -8421
  244. pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -163
  245. pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -167
  246. pyxlpr/ppocr/utils/dict/en_dict.txt +0 -63
  247. pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -136
  248. pyxlpr/ppocr/utils/dict/french_dict.txt +0 -136
  249. pyxlpr/ppocr/utils/dict/german_dict.txt +0 -143
  250. pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -162
  251. pyxlpr/ppocr/utils/dict/it_dict.txt +0 -118
  252. pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -4399
  253. pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -153
  254. pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -3688
  255. pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -185
  256. pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -153
  257. pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -153
  258. pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -96
  259. pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -130
  260. pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -91
  261. pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -134
  262. pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -125
  263. pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -128
  264. pyxlpr/ppocr/utils/dict/table_dict.txt +0 -277
  265. pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -2759
  266. pyxlpr/ppocr/utils/dict/te_dict.txt +0 -151
  267. pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -114
  268. pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -142
  269. pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -137
  270. pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -110
  271. pyxlpr/ppocr/utils/dict90.txt +0 -90
  272. pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -574
  273. pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -83
  274. pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -87
  275. pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -457
  276. pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -592
  277. pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -162
  278. pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -162
  279. pyxlpr/ppocr/utils/en_dict.txt +0 -95
  280. pyxlpr/ppocr/utils/gen_label.py +0 -81
  281. pyxlpr/ppocr/utils/ic15_dict.txt +0 -36
  282. pyxlpr/ppocr/utils/iou.py +0 -54
  283. pyxlpr/ppocr/utils/logging.py +0 -69
  284. pyxlpr/ppocr/utils/network.py +0 -84
  285. pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -6623
  286. pyxlpr/ppocr/utils/profiler.py +0 -110
  287. pyxlpr/ppocr/utils/save_load.py +0 -150
  288. pyxlpr/ppocr/utils/stats.py +0 -72
  289. pyxlpr/ppocr/utils/utility.py +0 -80
  290. pyxlpr/ppstructure/__init__.py +0 -13
  291. pyxlpr/ppstructure/predict_system.py +0 -187
  292. pyxlpr/ppstructure/table/__init__.py +0 -13
  293. pyxlpr/ppstructure/table/eval_table.py +0 -72
  294. pyxlpr/ppstructure/table/matcher.py +0 -192
  295. pyxlpr/ppstructure/table/predict_structure.py +0 -136
  296. pyxlpr/ppstructure/table/predict_table.py +0 -221
  297. pyxlpr/ppstructure/table/table_metric/__init__.py +0 -16
  298. pyxlpr/ppstructure/table/table_metric/parallel.py +0 -51
  299. pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -247
  300. pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -13
  301. pyxlpr/ppstructure/table/tablepyxl/style.py +0 -283
  302. pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -118
  303. pyxlpr/ppstructure/utility.py +0 -71
  304. pyxlpr/xlai.py +0 -10
  305. /pyxllib/{ext/autogui → autogui}/virtualkey.py +0 -0
  306. {pyxllib-0.3.96.dist-info → pyxllib-0.3.197.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>{{ title }}</title>
6
+ <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
7
+ </head>
8
+ <body>
9
+ {{ body }}
10
+ </body>
11
+ </html>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>{{ title }}</title>
5
+ <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>
6
+ {% if use_mathjax %}
7
+ <script src="https://a.cdn.histudy.com/lib/config/mathjax_config-klxx.js?v=1.1"></script>
8
+ <script type="text/javascript" async="" src="https://a.cdn.histudy.com/lib/mathjax/2.7.1/MathJax/MathJax.js?config=TeX-AMS-MML_SVG">
9
+ MathJax.Hub.Config(MATHJAX_KLXX_CONFIG);
10
+ </script>
11
+ {% else %}
12
+ {% endif%}
13
+ </head>
14
+ <body>
15
+ {{ body }}
16
+ </body>
17
+ </html>
@@ -0,0 +1,103 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <style>
6
+ body {
7
+ background-color: #A4C0A7;
8
+ }
9
+
10
+ topic {
11
+ display: block;
12
+ border-style: solid;
13
+ border-color: gray;
14
+ padding: 9px;
15
+ margin: 3px;
16
+ zoom: 1.5
17
+ }
18
+
19
+ textarea {
20
+ display: block;
21
+ border-style: solid;
22
+ background-color: #A4C0A7;
23
+ margin: 3px;
24
+ width: 99%;
25
+ border-color: gray;
26
+ zoom: 2
27
+ }
28
+ </style>
29
+ <title>LaTeX公式草稿 </title>
30
+ <script type="text/javascript" src="https://tr.histudy.com/static/js/load-mathjax.js"></script>
31
+ </head>
32
+ <body id="oliga">
33
+
34
+ <textarea id="mID1" rows="9" autofocus="autofocus" >
35
+ {{ text }}
36
+ </textarea>
37
+
38
+ <button accesskey="`" onclick="rTeX('mID1')" >
39
+ 按【Alt + `】刷新渲染
40
+ </button>
41
+ <button accesskey="A" onclick="混合渲染()" >
42
+ 按【Alt + A】 或 【F1】 刷新渲染混杂模式
43
+ </button>
44
+ 按 【F4】 开启/关闭时时渲染,按 【F5】 刷新重置
45
+
46
+ <topic id="mID1renderer">
47
+ </topic>
48
+
49
+ </body>
50
+
51
+ <script>
52
+
53
+ function 公式渲染(s){ return ' ' + MathJax.tex2svg(s.replace(/\$/g, '')).firstChild.outerHTML + ' '}
54
+
55
+ function tabular转html(s){
56
+ s = s.replace(/\\begin\{tabular\}.+?}/g, '<table border=1 >\n<tr><td>').replace(/(\\hline|\\cline\{.+?\})/g, ' ')
57
+ s = s.replace(/\\\\\s*\\end\{tabular\}/g, '\\end\{tabular\}')
58
+ s = s.replace(/\\end\{tabular\}/g, '</td></tr>\n</table>')
59
+ s = s.replace(/\\\\/g, '</td></tr>\n <tr><td>').replace(/&/g, '</td><td>')
60
+ return s
61
+ }
62
+
63
+ function 混合渲染(){
64
+ t = document.getElementById('mID1').value
65
+ // t = t.replace(/\$.+?\$/g, 公式渲染).replace(/\n\n+/g, '\n<p/>')
66
+ t = t.replace(/\$\n?([^\n\$]+\n?)+\$/g, 公式渲染).replace(/\n\n+/g, '\n<p/>')
67
+ t = t.replace(/\\begin\{tabular\}[\S\s]+?\\end\{tabular\}/gm, tabular转html)
68
+ t = t.replace(/\\ce\{.+?\}/g, 公式渲染) // 不严谨
69
+ document.getElementById("mID1renderer").innerHTML = t
70
+ document.getElementById('mID1').focus()
71
+ }
72
+
73
+ 时时渲染 = false
74
+ function relax(){console.log('休息')}
75
+ document.onkeyup = 混合渲染
76
+
77
+ document.onkeydown = function hotkey(keyboardPressed) {
78
+ var theKeyPressed = window.event.keyCode;
79
+ if (theKeyPressed == 112){console.log('按了F1,一次渲染'); 混合渲染() ; keyboardPressed.preventDefault(); return false;}
80
+ else if (theKeyPressed == 115){console.log('按了F4,开启动态渲染');
81
+ if (时时渲染) {时时渲染 = false; document.onkeyup = relax } else {时时渲染 = true; document.onkeyup = 混合渲染; 混合渲染()} ;
82
+ keyboardPressed.preventDefault(); return false;}
83
+ }
84
+
85
+
86
+ function rTeX(MathID) {
87
+ if (document.getElementById(MathID).value.includes('$')) {混合渲染(); alert('不用手工加美元符,会自动加,\n\n你加了美元符我就认为是《混合》型【公式+文本】'); return false}
88
+ document.getElementById(MathID + "renderer").innerHTML = MathJax.tex2svg(document.getElementById(MathID).value).firstChild.outerHTML
89
+ <!--let mathTopic = document.getElementById("da");-->
90
+ <!--MathJax.Hub.queue(["Typeset", MathJax.Hub]);-->
91
+ <!--MathJax.Hub.Typeset(["da"]);-->
92
+ document.getElementById(MathID).focus()
93
+ console.log('可以考虑用前后兄弟节点:previousSibling、nextSibling,相对节点')
94
+ }
95
+
96
+ function enableMathType() {
97
+ document.getElementById("MathLoader").src="https://tr.histudy.com/static/js/load-mathjax.js";
98
+ }
99
+ </script>
100
+
101
+ <script type="text/javascript" ID="MathLoader"></script>
102
+
103
+ </html>
pyxllib/text/xmllib.py CHANGED
@@ -8,10 +8,10 @@
8
8
  xml等网页结构方面的处理
9
9
  """
10
10
 
11
- from pyxllib.prog.pupil import check_install_package
11
+ # from pyxllib.prog.pupil import check_install_package
12
12
 
13
13
  # 一个xpath解析库
14
- check_install_package('xpath_parser', 'xpath-parser')
14
+ # check_install_package('xpath_parser', 'xpath-parser')
15
15
 
16
16
  import collections
17
17
  from collections import Counter, defaultdict
@@ -23,7 +23,7 @@ import pandas as pd
23
23
  import bs4
24
24
  from bs4 import BeautifulSoup
25
25
  from humanfriendly import format_size
26
- from xpath_parser import XpathExpression
26
+ # from xpath_parser import XpathExpression
27
27
 
28
28
  from pyxllib.prog.newbie import round_int
29
29
  from pyxllib.prog.pupil import dprint, run_once, inject_members
@@ -32,6 +32,7 @@ from pyxllib.algo.pupil import SearchBase
32
32
  from pyxllib.text.newbie import xldictstr
33
33
  from pyxllib.text.pupil import shorten, ensure_gbk, BookContents, strwidth, grp_chinese_char
34
34
  from pyxllib.file.specialist import File, Dir, get_etag
35
+ from pyxllib.text.jinjalib import get_jinja_template
35
36
 
36
37
 
37
38
  class XlBs4Tag(bs4.element.Tag):
@@ -144,7 +145,9 @@ class XlBs4Tag(bs4.element.Tag):
144
145
  # 下个结点
145
146
  t = t.next_element
146
147
  i += 1
147
- df1 = pd.DataFrame.from_records(ls1, columns=['element序号', '层级', '结构', '父结点', '当前结点', '属性值/字符串值', '直接子结点结构'])
148
+ df1 = pd.DataFrame.from_records(ls1,
149
+ columns=['element序号', '层级', '结构', '父结点', '当前结点', '属性值/字符串值',
150
+ '直接子结点结构'])
148
151
  df2 = pd.DataFrame.from_records(ls2, columns=['序号', 'element序号', '当前结点', '属性名', '属性值'])
149
152
  return df1, df2
150
153
 
@@ -255,9 +258,9 @@ class XlBs4Tag(bs4.element.Tag):
255
258
  for h in self.find_all(re.compile(r'h\d')):
256
259
  if size:
257
260
  part_size = h.section_text_size(size, fmt=True)
258
- bc.add(int(h.name[1]), h.get_text().replace('\n', ' '), part_size)
261
+ bc.add(int(h.name[1]), h.get_text().replace('\n', ' ').strip(), part_size)
259
262
  else:
260
- bc.add(int(h.name[1]), h.get_text().replace('\n', ' '))
263
+ bc.add(int(h.name[1]), h.get_text().replace('\n', ' ').strip())
261
264
 
262
265
  if 'page' not in kwargs:
263
266
  kwargs['page'] = size
@@ -398,6 +401,8 @@ class XlBs4Tag(bs4.element.Tag):
398
401
  bs4官方没有自带,网上找到的很多也不中意。就自己根据需求简单定制一下。非完整版实现,但希望能支持常用的几个操作。
399
402
  好在还是有现成的xpath解析库的,自己扩展实现也不会太难。
400
403
  """
404
+ from xpath_parser import XpathExpression
405
+
401
406
  xp = XpathExpression(xpath)
402
407
 
403
408
  cur_tag = self
@@ -431,8 +436,73 @@ class XlBs4Tag(bs4.element.Tag):
431
436
 
432
437
  return cur_tag
433
438
 
439
+ def __修改功能(self):
440
+ pass
441
+
442
+ @classmethod
443
+ def _to_node(cls, html):
444
+ """ 输入可以是字符串、文档、结点 """
445
+ if isinstance(html, str):
446
+ new_node = next(BeautifulSoup(html, 'lxml').body.children)
447
+ elif html.find('body'):
448
+ new_node = next(html.body.children)
449
+ else:
450
+ new_node = html
451
+ return new_node
452
+
453
+ @classmethod
454
+ def _to_nodes(cls, html):
455
+ """ 输入可以是字符串、文档、结点 """
456
+ if isinstance(html, str):
457
+ new_nodes = list(BeautifulSoup(html, 'lxml').body.children)
458
+ elif html.find('body'):
459
+ new_nodes = list(html.body.children)
460
+ else:
461
+ new_nodes = [html]
462
+ return new_nodes
463
+
464
+ def replace_html_with(self, html):
465
+ nodes = self._to_nodes(html) # 支持替换成多个节点
466
+ if not nodes:
467
+ return
468
+ self.replace_with(nodes[0])
469
+
470
+ cur = nodes[0]
471
+ for node in nodes[1:]:
472
+ cur.insert_after(node)
473
+ cur = node
474
+
475
+ def insert_html_before(self, html):
476
+ nodes = self._to_nodes(html)
477
+ if not nodes:
478
+ return
479
+ self.insert_before(nodes[0])
480
+
481
+ cur = nodes[0]
482
+ for node in nodes[1:]:
483
+ cur.insert_after(node)
484
+ cur = node
485
+
486
+ def insert_html_after(self, html):
487
+ nodes = self._to_nodes(html)
488
+ if not nodes:
489
+ return
490
+
491
+ cur = self
492
+ for node in nodes:
493
+ cur.insert_after(node)
494
+ cur = node
495
+
496
+ def append_html(self, html):
497
+ """ 原append的扩展 """
498
+ nodes = self._to_nodes(html)
499
+ for node in nodes:
500
+ self.append(node)
501
+
434
502
 
435
503
  inject_members(XlBs4Tag, bs4.element.Tag)
504
+ # 这样虽然不优雅,但主要是让特殊的String类型也支持兼容tag_name属性
505
+ inject_members(XlBs4Tag, bs4.element.NavigableString)
436
506
 
437
507
 
438
508
  def mathjax_html_head(s):
@@ -668,14 +738,6 @@ class HtmlParser:
668
738
  getattr(self, method)(x)
669
739
 
670
740
 
671
- def get_jinja_template(name, **kwargs):
672
- from jinja2 import Environment
673
- from pyxllib.file.specialist import XlPath
674
-
675
- template = Environment(**kwargs).from_string((XlPath(__file__).parent / f'templates/{name}').read_text())
676
- return template
677
-
678
-
679
741
  def concat_htmlbody(ls):
680
742
  """ 对多份网页内容中的body进行拼接
681
743
  """
pyxllib/xl.py CHANGED
@@ -19,7 +19,8 @@ from pyxllib.file.packlib import *
19
19
  from pyxllib.prog.newbie import *
20
20
  from pyxllib.prog.pupil import *
21
21
  from pyxllib.prog.specialist import *
22
- from pyxllib.prog.deprecatedlib import deprecated
22
+ # from pyxllib.prog.deprecatedlib import deprecated
23
+ from deprecated import deprecated
23
24
 
24
25
  from pyxllib.algo.newbie import *
25
26
  from pyxllib.algo.pupil import *
@@ -0,0 +1,48 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyxllib
3
+ Version: 0.3.197
4
+ Summary: 厦门理工模式识别团队通用python代码工具库
5
+ Project-URL: Homepage, https://github.com/XLPRUtils/pyxllib
6
+ Author-email: code4101 <877362867@qq.com>
7
+ License-File: LICENSE
8
+ Classifier: License :: OSI Approved :: Apache Software License
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python :: 3
11
+ Requires-Python: <3.13,>=3.6
12
+ Requires-Dist: arrow
13
+ Requires-Dist: beautifulsoup4
14
+ Requires-Dist: charset-normalizer
15
+ Requires-Dist: decorator
16
+ Requires-Dist: deprecated
17
+ Requires-Dist: envariable
18
+ Requires-Dist: fire
19
+ Requires-Dist: humanfriendly
20
+ Requires-Dist: jinja2
21
+ Requires-Dist: loguru
22
+ Requires-Dist: lxml
23
+ Requires-Dist: more-itertools
24
+ Requires-Dist: numpy
25
+ Requires-Dist: pandas>=0.23.4
26
+ Requires-Dist: pillow
27
+ Requires-Dist: pympler
28
+ Requires-Dist: pyperclip
29
+ Requires-Dist: pyyaml
30
+ Requires-Dist: qiniu
31
+ Requires-Dist: requests
32
+ Requires-Dist: tqdm
33
+ Requires-Dist: ujson
34
+ Requires-Dist: xlrd
35
+ Description-Content-Type: text/markdown
36
+
37
+
38
+ # 1 安装
39
+
40
+ ```
41
+ pip install pyxllib
42
+ ```
43
+
44
+ 更多介绍: https://www.yuque.com/xlpr/pyxllib/install
45
+
46
+ # 2 文档
47
+
48
+ 文档都在语雀: https://www.yuque.com/xlpr/pyxllib
@@ -0,0 +1,126 @@
1
+ pyxllib/__init__.py,sha256=N68vJMdUelt5LI-ln7Q3wN1Ai_ZukxAnsqFHKR_tvlc,529
2
+ pyxllib/xl.py,sha256=ogwYe_HruiM2VVAswG0fgqIZuupKU8xK3huzCgvze5Q,1049
3
+ pyxllib/xlcv.py,sha256=4NoQIpERuSE2i5AiQJn10xxzb0W5cLOytDfYxZMcIOA,652
4
+ pyxllib/algo/__init__.py,sha256=_ouNg1IvWRUKTKiGXne4n-V9MZMaGDHoy886bupZQwo,161
5
+ pyxllib/algo/disjoint.py,sha256=YvlDioKBN8is5IfMRPJDglbBH3FfiGu4fFi68faC6hs,1450
6
+ pyxllib/algo/geo.py,sha256=LFWxXa2vD1FM5OJ8LCQBtsCmkIoxFQ6AVrrl5bStFUo,18482
7
+ pyxllib/algo/intervals.py,sha256=qqFDkdWHk7WTDPb-BJds9-e_runpmG56U1SRJ0JTEwc,36720
8
+ pyxllib/algo/matcher.py,sha256=gFKpiutFnsDZWjlISCqVL6zYfjjO1xQE9Ih2QSXbKVw,15990
9
+ pyxllib/algo/newbie.py,sha256=nzpd8LOCcpvY_K4o8vfvtCinnaSL8cGhZrUO3G46joU,4168
10
+ pyxllib/algo/pupil.py,sha256=cIBj7BjUBgVV7eln0YVxkmzCxx0hZphkJQKy69pHdkc,23915
11
+ pyxllib/algo/shapelylib.py,sha256=pDy8Qy0kHHFRZE7dGio93jz8PADOAhiq7lm7oAbJU2E,2393
12
+ pyxllib/algo/specialist.py,sha256=3DVzD8SgSfIc1oadq2IGVhQ-AWbTcz0wg4ZpRp2N-Ec,8621
13
+ pyxllib/algo/stat.py,sha256=tZ_yCmPUPJXcC0tJ-aUb6Af-krIBuYIojWVaLAbv3jw,19625
14
+ pyxllib/algo/treelib.py,sha256=p0xTEPY3n6J5Z5Rk9FbG2no5FfCOgt9BFwQ2L6RxxvM,5094
15
+ pyxllib/algo/unitlib.py,sha256=euhGvrWFaE0HSAx0QOZ0kzp0kHw7QO2XFQudeTW7ri4,1953
16
+ pyxllib/autogui/__init__.py,sha256=krxAUjsOvqgELKpPko2ffxy5D0pWW-W93SOZS7yEGBw,132
17
+ pyxllib/autogui/activewin.py,sha256=TaX4YjqMGseIhyc5D_LeesAR3vDSHqvr7pHNVTn1Ffg,10268
18
+ pyxllib/autogui/all.py,sha256=65eA-RPGLCbKNr1-Jfves4OCW2KWNTsbG9wFf1ic1Tk,250
19
+ pyxllib/autogui/autogui.py,sha256=SIlAYE1dDrU7Q3UaaHzrorJ2qh_O9pB1RsfNle19NLg,30720
20
+ pyxllib/autogui/uiautolib.py,sha256=H8fhGoe1IJI_xYj5WRa4bUlKBYVgGJg46GvMVGwj0zY,12755
21
+ pyxllib/autogui/virtualkey.py,sha256=gjZ3CTNvvZsTaHYMc4jPrbJ58hxWLg6VHolhsw4yhXE,3654
22
+ pyxllib/autogui/wechat.py,sha256=kKQGKSQiF4eOeebj7El0pz6YL3TnNd1ttXAPe-AI-O0,30474
23
+ pyxllib/autogui/wechat_msg.py,sha256=KwjVy-pIQ8s7cacjLTt70KkmOIFFgNJJXhr7DiOYmuc,13152
24
+ pyxllib/autogui/wxautolib.py,sha256=VvIstDuvXMj6ZTB-Tuq9_NHD4KoYLh17HejynRZOycs,2904
25
+ pyxllib/cv/__init__.py,sha256=fzwt11bfAu80-A5OfRpyFPWsPoImbFYW4LBZTBvf0d4,132
26
+ pyxllib/cv/expert.py,sha256=jwUNW7Zkoxo6mFasjE0FssrDu91Gpu-meu6S5yTCZ5o,11378
27
+ pyxllib/cv/imfile.py,sha256=1_MoG4Ny2tbO-pjIXWLjSdZkAIaoo_mhhBOClxAizf4,6757
28
+ pyxllib/cv/imhash.py,sha256=E8dcuyuVaIf7HgvvcXzNYCaNsOSCqPuBMRUsn-ZMfQ4,977
29
+ pyxllib/cv/pupil.py,sha256=FPn7hr2kXWQcWhAJXVeS4IIaZfvQeoFDyW0joEsufKo,339
30
+ pyxllib/cv/rgbfmt.py,sha256=b0AhhE7ULmaW2qisTI6XzbmXkgw_rQZZEo3Zf-1GDS8,38270
31
+ pyxllib/cv/slidercaptcha.py,sha256=dXpr7NOOwTV1IENK7mgF61ZTZ3NjxsRbgEB3UP-Xe-s,5422
32
+ pyxllib/cv/trackbartools.py,sha256=UIycMQrJBVXltzHXC9epH-L45zr3FTjE2Op8Pj_YKm4,9259
33
+ pyxllib/cv/xlcvlib.py,sha256=xp2tu1LJMFE_PtNsnA1_-BJeJcipmHgPNAU8shvWMTo,40787
34
+ pyxllib/cv/xlpillib.py,sha256=Iz8rtgm7iGe6k6E568HMvXB5Pqr1Tgw4ARjtmqxPdO4,15454
35
+ pyxllib/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ pyxllib/data/echarts.py,sha256=kFz8ARqQFbLWlbTVarnrDKpKVOEzRN9hyDbatsfMh-Y,8237
37
+ pyxllib/data/jsonlib.py,sha256=NklHWA5Jg56Ux6oa3HlSytukx1BJyxa4kcHXb17W6Wc,3435
38
+ pyxllib/data/oss.py,sha256=nWhE4r7ZB3R8gF0WlD5TgLuzx2QDEk7oFV97ll4V4iI,2477
39
+ pyxllib/data/pglib.py,sha256=svmssYVTu_bYcy1fTR1i6d584Rs5EyNNG7B6q7GvBfs,51225
40
+ pyxllib/data/sqlite.py,sha256=eH6F4yxeT9KUASW-DKYFzJ0YxxvPOgAEL3lJP2xMjOg,20705
41
+ pyxllib/data/sqllib.py,sha256=khFRM83cUEw_9v2nwCBGY7HSCRgCII0GraiAEIs7m7k,11955
42
+ pyxllib/ext/JLineViewer.py,sha256=JPcZbv2FaAZIkw2ssWxe6hOL3Fa_XHZFUOIUNutfxdc,19947
43
+ pyxllib/ext/__init__.py,sha256=B_JAO_4yM7YFr4e1pNhNZNcvQ6Uhavx1_QkrixT5d4A,134
44
+ pyxllib/ext/demolib.py,sha256=TA-ekn1orT6U-cMXeO_1eKdF3RbpVpYwhejQfbquGmA,8552
45
+ pyxllib/ext/drissionlib.py,sha256=_zXjRy4tbLJfz_madX9sL9DocvGLF19CfIn0zXojAtU,10284
46
+ pyxllib/ext/kq5034lib.py,sha256=E6P6uIjKmMirdu40QUTCPA09Px5aq8u5BGuc2yK0qik,344
47
+ pyxllib/ext/old.py,sha256=ZN8F7_OBeBzmJnjph6JI6aWnlJ6UjLqGwxBB37p0ClM,27407
48
+ pyxllib/ext/qt.py,sha256=_Oq1lfLiayAwh1G3QZqg19bgq3B8jD1tmQzj9CysBJ8,16090
49
+ pyxllib/ext/robustprocfile.py,sha256=E-fuI2ZZ9JEBK_TAlT-taP9B6T2oyxh6rLH1RhPfyLg,18204
50
+ pyxllib/ext/seleniumlib.py,sha256=vNem48-rXVdjugwOfW-xcXFtfVH2UXZ0ShzzkXWt-QA,2771
51
+ pyxllib/ext/tk.py,sha256=Jhyh8Dk2UiKUp6zRbRtJFGKB8dN1nV_q8ezlL5ySplM,5004
52
+ pyxllib/ext/unixlib.py,sha256=jk_HY5OsVeI3K_u7qYQZAE_3sAQ4XJM0R0a8iIXzAGU,34792
53
+ pyxllib/ext/utools.py,sha256=gUNBNvcfahMdOs8eHCSjxtQ2V4WM4x54zTmRxlAzDdg,14106
54
+ pyxllib/ext/webhook.py,sha256=BM2MlmE0N2YqOLMC6QaOKyx_QHREQZ3N27Ndwz68Pkk,3970
55
+ pyxllib/ext/win32lib.py,sha256=Ki2cN_eX47JHvahODXyaY1abIFGBBi2zeO6FyYh1Gqg,1237
56
+ pyxllib/ext/wjxlib.py,sha256=yvdAUQazmAeGu-LLNpNg2m703uuDn48lxrWOfVPWPj8,3165
57
+ pyxllib/ext/wpsapi.py,sha256=XEgmVRhxo_rQ8iLxvcUxflV7oentB-3DfsenTIB6-es,4968
58
+ pyxllib/ext/xlwork.py,sha256=wSmG2h_ypwKGeKxtapzbPnydmk5mMw1DWzhIE_JSqFI,213
59
+ pyxllib/ext/yuquelib.py,sha256=6rolM4bYZS2T22DjOT37ADL8gSgIHgkIRP-a0o8Qpxg,38804
60
+ pyxllib/file/__init__.py,sha256=2-MDp6ckScqqvYSWBrtNP84kEo4LyaKp8iwNgsGPGlE,452
61
+ pyxllib/file/docxlib.py,sha256=GW-L25oZ3j82YwQLqqrOXGSV4upytUyjinY9qZgsBi4,29776
62
+ pyxllib/file/gitlib.py,sha256=dtvWGptbI-b36b4v-XdD_yz-uEu3hVZGlS4FPEoISt4,11620
63
+ pyxllib/file/libreoffice.py,sha256=KeAen8XG3KpbNLtrLOuoJmvfwmOKDT22gdHro6txJ8M,5607
64
+ pyxllib/file/movielib.py,sha256=WRHyt9qldZcM-9fwl2s3ywNQLvqQh0rPrm2X41_8YlE,6185
65
+ pyxllib/file/newbie.py,sha256=XVloUYosJiHcIavJHwMeoOWeeunsWtlJYmLGBu9e1qI,218
66
+ pyxllib/file/onenotelib.py,sha256=jvbr4PA5QOLjll8nptk3GEnC7skod3gXHsFWhtZi-Dg,55027
67
+ pyxllib/file/pdflib.py,sha256=nu11zvOrZUhyHwU5n8hqOP-c5A2nNiWMqOuo-vneeao,17010
68
+ pyxllib/file/pupil.py,sha256=jDjRiFUbWmkqoIDCR0uyqpqfLye0dx_e_U0KmqxVxx4,5999
69
+ pyxllib/file/xlsxlib.py,sha256=80zQbRZ6deIVjYljINs7NufEqRDmNE3HJ5uMNiDkpqY,131489
70
+ pyxllib/file/xlsyncfile.py,sha256=ZxWKqTUH01ZA-bfRDaS59PURUsupvbMHCY3D8pj2Auk,14351
71
+ pyxllib/file/packlib/__init__.py,sha256=MblWxjeX8UzUkDF03GDrm34KsHTPHoBNhm9NQH7dy2Y,13655
72
+ pyxllib/file/packlib/zipfile.py,sha256=tM2hQEMvrzZNUmVI0zrcitbV3M_dkkd0EirmBt64eEE,90165
73
+ pyxllib/file/specialist/__init__.py,sha256=8tOLuhumBl6RLHt4XI35ki_9fXAWX3mSmp37MNC2Tg0,28260
74
+ pyxllib/file/specialist/dirlib.py,sha256=u7wZrO1mE2d-NJxwQjIqYuV1QBUfEXDh7Q8SR2U17JU,32406
75
+ pyxllib/file/specialist/download.py,sha256=ogsNuCD7XKvEA5clPt5qUlruPybWn3SserHQMK02quA,7398
76
+ pyxllib/file/specialist/filelib.py,sha256=2X8L0ZjWH3iiHnMdOv3Xe_Q0EBVQmV6B7429uZ4f8o0,109834
77
+ pyxllib/prog/__init__.py,sha256=EPmf2_8NgUmQJU-1TrQZis2VshFkQKOdGg13a6JbzxA,132
78
+ pyxllib/prog/cachetools.py,sha256=EypMVbsdAmmL6g_Yj1-ETav4PsMt6wNUej0o3SinkMY,2642
79
+ pyxllib/prog/deprecatedlib.py,sha256=xdCa7dCUyRkY-5sfbRSDTNcb1etQP65n-n820A8GHbQ,8499
80
+ pyxllib/prog/filelock.py,sha256=kKmWRzKLvR5EC-1yJ7l1iobFpMoHuMHVzX_LX6d-yWE,1436
81
+ pyxllib/prog/ipyexec.py,sha256=HUPOL1tKkWB9Z7GLOtptuoHCYrqBuubSpGBIjM-aKdo,9229
82
+ pyxllib/prog/multiprogs.py,sha256=esBqAvfRJ98snmK1HNXOOtIuvp5-CvWLAMrzqZg6MWM,37926
83
+ pyxllib/prog/newbie.py,sha256=WK4SwvV0s66n7G6E-iIaV5S2BKCyAm5NaKRZAaZ1la8,15270
84
+ pyxllib/prog/pupil.py,sha256=53JpRPIWV2xyHG97iV0In24UihsAVZYKJnKdCdswqS4,45780
85
+ pyxllib/prog/sitepackages.py,sha256=3FseKEf6vSdUFHMcjfZtJOmTrz8DU2VlIdtpIBFrfDQ,996
86
+ pyxllib/prog/xlosenv.py,sha256=nuB04LR8datn5mIJKOmlyrRAgf8IjnE3BDLYvQIkF9s,3799
87
+ pyxllib/prog/specialist/__init__.py,sha256=a2PTUyGHYnKk4TaWOifPdkFt8bMi5nq9-YSo1y04b2U,15042
88
+ pyxllib/prog/specialist/bc.py,sha256=Fhnp1W8Py_KrkZpOr-x-kx5_SvxHPqu4cFEyOp82-xc,9850
89
+ pyxllib/prog/specialist/browser.py,sha256=d0y4Td4ze9Y6tC8AWjufKLA0UGVlYO1bPIoVvKHwJYg,20196
90
+ pyxllib/prog/specialist/common.py,sha256=isDDBwQ-4PjwWVUjUxMMzN_VsbxelpSbVwn4h5DqrPs,13309
91
+ pyxllib/prog/specialist/datetime.py,sha256=5Df67ye-TBYXK_kE0FKpDsid0hWXURddw-MiCx2hLs4,6603
92
+ pyxllib/prog/specialist/tictoc.py,sha256=LUWDbM5kfKuOBApX0C4Oye5P2IbpWzbGZre8NdPChfE,8432
93
+ pyxllib/prog/specialist/xllog.py,sha256=XmT6hmW37JGDB6y_zGOU6d1eVQXYGFnTo8UIr-PkyO4,8251
94
+ pyxllib/stdlib/__init__.py,sha256=ntOr_ay40znlUFzhxMjE0nyD93YPRdvP9Bo0p8IAdkw,581
95
+ pyxllib/stdlib/tablepyxl/__init__.py,sha256=bYzWZ61tKPEl6K4FuTVc2EXUMjjGlTKE1BsRgnz8PSA,193
96
+ pyxllib/stdlib/tablepyxl/style.py,sha256=bljA5tR1e_shM17HbqhWn8ZgKoqOgZvSO3KrBWS0mK0,10924
97
+ pyxllib/stdlib/tablepyxl/tablepyxl.py,sha256=X-MrNz1UDhVXONTtgK05YSsRUxlbsA1vMtrMXtW6A9s,4531
98
+ pyxllib/text/__init__.py,sha256=FkNmBcpVr7nj_VWS9V2Fl0S3u4DjN47UVem1rCclFIQ,170
99
+ pyxllib/text/ahocorasick.py,sha256=YrWCYtpW41BlKPGA6syXuHu8QgXDgQO3YuM7c4NQXQU,1259
100
+ pyxllib/text/airscript.js,sha256=bB6GnMIyvICWMFLIcuhvLbdutNGSuSmagEWwFzyljdA,30359
101
+ pyxllib/text/charclasslib.py,sha256=j3p4gzCUOjUsgoBRTkDnsr8PsGcK9s6uSE5lwQHxgH0,37651
102
+ pyxllib/text/jiebalib.py,sha256=iV3NWF708574jFRH1pQxLVpiIBDcXMsP6PMYxXnyo4s,8953
103
+ pyxllib/text/jinjalib.py,sha256=ZGj2BeR8SydyrNLhjqdwJ4gllseeb5WbT4XMSYbfDDc,981
104
+ pyxllib/text/jsa_ai_prompt.md,sha256=ONxF_0PgshaNSL-Z_ttgE_1h4IYyAxnnTBUtm7SzxiY,12788
105
+ pyxllib/text/jscode.py,sha256=-fq8U8UZZeS5s07pCQQQOUQBwlGNa_Bc5THvQ9ZR6v8,39607
106
+ pyxllib/text/levenshtein.py,sha256=FSG0KPUWI6n-ZQCVHAGAl3pct_JmAOzmAGYuqmx1bQk,12259
107
+ pyxllib/text/nestenv.py,sha256=kcBU9WPpavBq1BOVac2McvIj1hOWu2rSKq1tOO74uRg,51691
108
+ pyxllib/text/newbie.py,sha256=ZxXAtijI9Ng2vA7Hggb2Md7IoDpqChm-tNKQdnpxt0I,7668
109
+ pyxllib/text/pycode.py,sha256=6ecVQ7_HJeQVFof830eQgILfQuyt6Rz9xjBJUyON14g,1585
110
+ pyxllib/text/spellchecker.py,sha256=FeAlQGfUFYojj1d_g2wb95ERlmJ0zvTmRQf4Bm7A0kU,7706
111
+ pyxllib/text/vbacode.py,sha256=PeXa_Vg3BJgJbxEmEouNWojTnWaWBcgGziLDBqwyPWU,514
112
+ pyxllib/text/xmllib.py,sha256=8QtYVdtWHoW0mDyXGiyCNlwFX5CDHYe60Llb25mpZDs,28612
113
+ pyxllib/text/latex/__init__.py,sha256=oqZERKeGIMUJHs6Dd_eGWRCyqaDAP_wJUsS6Stg6gpg,6416
114
+ pyxllib/text/pupil/__init__.py,sha256=_CS5oqKfc7YqfLdwsn1T1UXAk7WaUQVNx1et3IB4DzA,217
115
+ pyxllib/text/pupil/common.py,sha256=n-ZoPG0O6tYbLjpdllwcL6JxBxg5-wV3HbmCaLSDHns,37909
116
+ pyxllib/text/pupil/xlalign.py,sha256=CP3YsGTwTvqkwxBSSBDEGN-hFj1q8bfL94HvOetHkaY,11126
117
+ pyxllib/text/specialist/__init__.py,sha256=HsiPCCb4loZt2NmKCOXEtQv_fu0_FzF5Hm-Xyl2-Q4c,224
118
+ pyxllib/text/specialist/common.py,sha256=LG9KkczqY2Y-rtjcZrJh38jyVo2aC1Q_WjyNLY341U4,3935
119
+ pyxllib/text/specialist/ptag.py,sha256=wAj2yEzG-GJ01EsGlP9ftvzCFc6gcPY89THjF1IN9Nc,6690
120
+ pyxllib/text/templates/echart_base.html,sha256=fHHMxXnSU-ZsXaQIHkehh3-lyTV5S8VLkqfoqmqoTCo,251
121
+ pyxllib/text/templates/highlight_code.html,sha256=ZabbXKEZUzgyrAn0s9HCIWE32HFoIoRpGuNsMTQzJFQ,534
122
+ pyxllib/text/templates/latex_editor.html,sha256=C7ZeqN2zCFOh09Omgb5fge2K1SpLE6dnMTF_kfXvIRA,3663
123
+ pyxllib-0.3.197.dist-info/METADATA,sha256=YP_zj9GS2PosLvPYBveseP9ou9Hg4xPKt9I55Dxenz4,1193
124
+ pyxllib-0.3.197.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
125
+ pyxllib-0.3.197.dist-info/licenses/LICENSE,sha256=bhrkxr6S-h3nUfV0dNppinth_oG8yWMCL52F3Bku4RA,10443
126
+ pyxllib-0.3.197.dist-info/RECORD,,
@@ -1,5 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.38.4)
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
-
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # @Author : 陈坤泽
4
- # @Email : 877362867@qq.com
5
- # @Date : 2021/08/01 15:26
6
-
7
- from pyxllib.ext.autogui.autogui import *
8
- from pyxllib.ext.autogui.virtualkey import *
@@ -1,51 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: pyxllib
3
- Version: 0.3.96
4
- Summary: 厦门理工模式识别团队通用python代码工具库
5
- Home-page: https://github.com/XLPRUtils/pyxllib
6
- Author: code4101
7
- Author-email: 877362867@qq.com
8
- License: Apache License 2.0
9
- Keywords: pyxllib,pyxlpr
10
- Classifier: Development Status :: 3 - Alpha
11
- Classifier: Intended Audience :: Developers
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Operating System :: OS Independent
14
- Requires-Python: >=3.6
15
- Description-Content-Type: text/markdown
16
- License-File: LICENSE
17
- Requires-Dist: arrow
18
- Requires-Dist: charset-normalizer
19
- Requires-Dist: requests
20
- Requires-Dist: qiniu
21
- Requires-Dist: pyyaml
22
- Requires-Dist: coloredlogs
23
- Requires-Dist: humanfriendly
24
- Requires-Dist: tqdm
25
- Requires-Dist: ujson
26
- Requires-Dist: Deprecated
27
- Requires-Dist: pyperclip
28
- Requires-Dist: envariable
29
- Requires-Dist: decorator
30
- Requires-Dist: more-itertools
31
- Requires-Dist: fire
32
- Requires-Dist: pympler
33
- Requires-Dist: lxml
34
- Requires-Dist: beautifulsoup4
35
- Requires-Dist: numpy
36
- Requires-Dist: Jinja2
37
- Requires-Dist: pandas (>=0.23.4)
38
- Provides-Extra: xlai
39
- Requires-Dist: opsdroid-get-image-size ; extra == 'xlai'
40
- Requires-Dist: opencv-python ; extra == 'xlai'
41
- Requires-Dist: pillow ; extra == 'xlai'
42
- Requires-Dist: pynvml ; extra == 'xlai'
43
- Requires-Dist: xlcocotools ; extra == 'xlai'
44
- Requires-Dist: visdom ; extra == 'xlai'
45
- Provides-Extra: xlcv
46
- Requires-Dist: opencv-python ; extra == 'xlcv'
47
- Requires-Dist: pillow ; extra == 'xlcv'
48
- Requires-Dist: opsdroid-get-image-size ; extra == 'xlcv'
49
-
50
- # pyxllib
51
-