pyxllib 0.3.92__tar.gz → 0.3.93__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.
- {pyxllib-0.3.92/pyxllib.egg-info → pyxllib-0.3.93}/PKG-INFO +1 -1
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/xlsxlib.py +59 -33
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/pupil.py +6 -4
- {pyxllib-0.3.92 → pyxllib-0.3.93/pyxllib.egg-info}/PKG-INFO +1 -1
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/gptlib.py +1 -1
- {pyxllib-0.3.92 → pyxllib-0.3.93}/setup.py +1 -1
- {pyxllib-0.3.92 → pyxllib-0.3.93}/LICENSE +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/MANIFEST.in +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/README.md +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/matcher.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/pupil.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/pglib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/JLineViewer.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/autogui/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/autogui/autogui.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/kq5034lib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/ext/yuquelib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/movielib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/file/specialist/filelib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/ipyexec.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/newbie.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/specialist/xllog.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/charclasslib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/jiebalib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/jscode.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/vbacode.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib.egg-info/SOURCES.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib.egg-info/requires.txt +4 -4
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/requirements.txt +0 -0
- {pyxllib-0.3.92 → pyxllib-0.3.93}/setup.cfg +0 -0
@@ -117,7 +117,7 @@ def is_valid_excel_address(address):
|
|
117
117
|
return is_valid_excel_cell(address)
|
118
118
|
|
119
119
|
|
120
|
-
@run_once('str')
|
120
|
+
@run_once('str', debug=True)
|
121
121
|
def xlfmt2pyfmt_date(xl_fmt):
|
122
122
|
""" 日期的渲染操作
|
123
123
|
|
@@ -213,7 +213,7 @@ def xlfmt2pyfmt_time(xl_fmt):
|
|
213
213
|
return ':'.join(components)
|
214
214
|
|
215
215
|
|
216
|
-
@run_once('str')
|
216
|
+
# @run_once('str')
|
217
217
|
def xlfmt2pyfmt_datetime(xl_fmt):
|
218
218
|
""" 主要是针对日期、时间的渲染操作
|
219
219
|
|
@@ -226,12 +226,6 @@ def xlfmt2pyfmt_datetime(xl_fmt):
|
|
226
226
|
return py_fmt
|
227
227
|
|
228
228
|
|
229
|
-
@run_once('str')
|
230
|
-
def xlfmt2pyfmt(xl_fmt):
|
231
|
-
""" 主要是针对日期、时间的渲染操作 """
|
232
|
-
return xl_fmt
|
233
|
-
|
234
|
-
|
235
229
|
def xl_render_value(x, xl_fmt):
|
236
230
|
""" 得到单元格简单渲染后的效果
|
237
231
|
py里不可能对excel的所有格式进行全覆盖,只是对场景格式进行处理
|
@@ -1005,9 +999,14 @@ class XlWorksheet(openpyxl.worksheet.worksheet.Worksheet):
|
|
1005
999
|
"""
|
1006
1000
|
if not hasattr(self, 'search_cache'):
|
1007
1001
|
self.search_cache = {}
|
1002
|
+
|
1003
|
+
if isinstance(pattern, list):
|
1004
|
+
pattern = tuple(pattern)
|
1005
|
+
|
1008
1006
|
key = (pattern, min_row, max_row, min_col, max_col, order, direction)
|
1009
1007
|
|
1010
1008
|
def get_search_core():
|
1009
|
+
nonlocal pattern
|
1011
1010
|
# 1 定界
|
1012
1011
|
x1, x2 = max(min_row or 1, 1), min(max_row or self.max_row, self.max_row)
|
1013
1012
|
y1, y2 = max(min_col or 1, 1), min(max_col or self.max_column, self.max_column)
|
@@ -1016,7 +1015,7 @@ class XlWorksheet(openpyxl.worksheet.worksheet.Worksheet):
|
|
1016
1015
|
if isinstance(pattern, datetime.date):
|
1017
1016
|
pattern = f'^{(pattern - datetime.date(1899, 12, 30)).days}$'
|
1018
1017
|
|
1019
|
-
if isinstance(pattern,
|
1018
|
+
if isinstance(pattern, tuple):
|
1020
1019
|
cel = None
|
1021
1020
|
for p in pattern:
|
1022
1021
|
cel = self.search(p, x1, x2, y1, y2, order)
|
@@ -2385,7 +2384,6 @@ def extract_workbook_summary2(file_path, *,
|
|
2385
2384
|
|
2386
2385
|
# 1 读取文件wb
|
2387
2386
|
def read_file_by_type():
|
2388
|
-
nonlocal load_time
|
2389
2387
|
nonlocal load_time
|
2390
2388
|
suffix = file_path.suffix.lower()
|
2391
2389
|
start_time = time.time()
|
@@ -2408,7 +2406,10 @@ def extract_workbook_summary2(file_path, *,
|
|
2408
2406
|
res['fileName'] = file_path.name
|
2409
2407
|
wb = read_file_by_type()
|
2410
2408
|
if wb is None: # 不支持的文件类型,不报错,只是返回最基本的文件名信息
|
2411
|
-
|
2409
|
+
if return_mode == 1:
|
2410
|
+
return res, load_time
|
2411
|
+
else:
|
2412
|
+
return res
|
2412
2413
|
|
2413
2414
|
# 2 提取摘要
|
2414
2415
|
summary2 = wb.extract_summary2()
|
@@ -2474,6 +2475,12 @@ def extract_workbook_summary2plus(file_path, **kwargs):
|
|
2474
2475
|
class WorkbookSummary3:
|
2475
2476
|
""" 计算summary3及衍生版本需要的一些功能组件 """
|
2476
2477
|
|
2478
|
+
@classmethod
|
2479
|
+
def count_length(cls, text):
|
2480
|
+
if not isinstance(text, str):
|
2481
|
+
text = json.dumps(text, ensure_ascii=False, default=str)
|
2482
|
+
return len(text)
|
2483
|
+
|
2477
2484
|
@classmethod
|
2478
2485
|
def reduce1_delete_empty_cell(cls, summary3):
|
2479
2486
|
""" 删除空单元格 """
|
@@ -2503,7 +2510,7 @@ class WorkbookSummary3:
|
|
2503
2510
|
|
2504
2511
|
# 如果未提供当前摘要长度,则计算之
|
2505
2512
|
if cur_summary_len is None:
|
2506
|
-
cur_summary_len =
|
2513
|
+
cur_summary_len = cls.count_length(summary3)
|
2507
2514
|
|
2508
2515
|
# 1. 计算基准单元格长度
|
2509
2516
|
total_cells_num = sum(len(st['cells']) + 5 for st in summary3['sheets'])
|
@@ -2534,7 +2541,7 @@ class WorkbookSummary3:
|
|
2534
2541
|
@classmethod
|
2535
2542
|
def reduce3_fold_rows(cls, summary3, summary_limit_len, *, cur_summary_len=None):
|
2536
2543
|
if cur_summary_len is None:
|
2537
|
-
cur_summary_len =
|
2544
|
+
cur_summary_len = cls.count_length(summary3)
|
2538
2545
|
|
2539
2546
|
# 每个sheet本身其他摘要,按照5个单元格估算
|
2540
2547
|
total_cells_num = sum([(len(st['cells']) + 5) for st in summary3['sheets']])
|
@@ -2610,7 +2617,7 @@ class WorkbookSummary3:
|
|
2610
2617
|
@classmethod
|
2611
2618
|
def reduce4_truncate_cells(cls, y, summary_limit_len, *, cur_summary_len=None):
|
2612
2619
|
if cur_summary_len is None:
|
2613
|
-
cur_summary_len =
|
2620
|
+
cur_summary_len = cls.count_length(y)
|
2614
2621
|
|
2615
2622
|
# 1 预计要删除单元格数
|
2616
2623
|
sheet_cells_num = [len(st['cells']) for st in y['sheets']]
|
@@ -2624,14 +2631,14 @@ class WorkbookSummary3:
|
|
2624
2631
|
if total_cells_num < target_reduce_cells_num:
|
2625
2632
|
for st in y['sheets']:
|
2626
2633
|
st['cells'] = {}
|
2627
|
-
return
|
2634
|
+
return cls.count_length(y)
|
2628
2635
|
|
2629
2636
|
# 3 否则每张表按照比例删单元格,只保留前面部分的单元格
|
2630
2637
|
left_rate = 1 - target_reduce_cells_num / total_cells_num
|
2631
2638
|
while True:
|
2632
2639
|
for i, st in enumerate(y['sheets']):
|
2633
2640
|
st['cells'] = dict(islice(st['cells'].items(), int(left_rate * sheet_cells_num[i])))
|
2634
|
-
cur_summary_len =
|
2641
|
+
cur_summary_len = cls.count_length(y)
|
2635
2642
|
if cur_summary_len <= summary_limit_len:
|
2636
2643
|
return cur_summary_len
|
2637
2644
|
if left_rate * total_cells_num < 1:
|
@@ -2645,7 +2652,7 @@ class WorkbookSummary3:
|
|
2645
2652
|
def reduce5_truncate_sheets(cls, y, summary_limit_len, *, cur_summary_len=None):
|
2646
2653
|
""" 计算平均每张表的长度,保留前面部分的表格 """
|
2647
2654
|
if cur_summary_len is None:
|
2648
|
-
cur_summary_len =
|
2655
|
+
cur_summary_len = cls.count_length(y)
|
2649
2656
|
|
2650
2657
|
n = len(y['sheets'])
|
2651
2658
|
avg_sheet_len = cur_summary_len / n
|
@@ -2653,7 +2660,7 @@ class WorkbookSummary3:
|
|
2653
2660
|
y['sheets'] = y['sheets'][:n - target_reduce_sheet_num]
|
2654
2661
|
|
2655
2662
|
while y['sheets']:
|
2656
|
-
cur_summary_len =
|
2663
|
+
cur_summary_len = cls.count_length(y)
|
2657
2664
|
if cur_summary_len <= summary_limit_len:
|
2658
2665
|
return cur_summary_len
|
2659
2666
|
y['sheets'] = y['sheets'][:-1] # 依次尝试删除最后一张表格的详细信息
|
@@ -2672,13 +2679,13 @@ class WorkbookSummary3:
|
|
2672
2679
|
]
|
2673
2680
|
|
2674
2681
|
# 0 摘要本来就不大
|
2675
|
-
cur_summary_len =
|
2682
|
+
cur_summary_len = cls.count_length(y)
|
2676
2683
|
if cur_summary_len <= summary_limit_len:
|
2677
2684
|
return y
|
2678
2685
|
|
2679
2686
|
# 1 删除空单元格
|
2680
2687
|
cls.reduce1_delete_empty_cell(y)
|
2681
|
-
cur_summary_len =
|
2688
|
+
cur_summary_len = cls.count_length(y)
|
2682
2689
|
if cur_summary_len <= summary_limit_len:
|
2683
2690
|
y['mode'] = ', '.join(mode_tags[:1])
|
2684
2691
|
return y
|
@@ -2691,7 +2698,7 @@ class WorkbookSummary3:
|
|
2691
2698
|
|
2692
2699
|
# 3 同构数据,省略显示(有大量相同行数据,折叠省略表达)
|
2693
2700
|
cls.reduce3_fold_rows(y, summary_limit_len, cur_summary_len=cur_summary_len)
|
2694
|
-
cur_summary_len =
|
2701
|
+
cur_summary_len = cls.count_length(y)
|
2695
2702
|
if cur_summary_len <= summary_limit_len:
|
2696
2703
|
y['mode'] = ', '.join(mode_tags[:3])
|
2697
2704
|
return y
|
@@ -2735,7 +2742,7 @@ class WorkbookSummary3:
|
|
2735
2742
|
:param active_sheet_weight: 当前活动表格被删除的权重,0.5表示按比例被删除的量只有其他表格的一半
|
2736
2743
|
"""
|
2737
2744
|
if cur_summary_len is None:
|
2738
|
-
cur_summary_len =
|
2745
|
+
cur_summary_len = cls.count_length(y)
|
2739
2746
|
|
2740
2747
|
active_sheet = y['ActiveSheet']
|
2741
2748
|
|
@@ -2765,7 +2772,7 @@ class WorkbookSummary3:
|
|
2765
2772
|
if total_cells_num < target_reduce_cells_num:
|
2766
2773
|
for st in y['sheets']:
|
2767
2774
|
st['cells'] = {}
|
2768
|
-
return
|
2775
|
+
return cls.count_length(y)
|
2769
2776
|
|
2770
2777
|
# 4 否则每张表按照比例删单元格,只保留前面部分的单元格
|
2771
2778
|
left_rate = 1 - r # 原始保留比例
|
@@ -2777,7 +2784,7 @@ class WorkbookSummary3:
|
|
2777
2784
|
else:
|
2778
2785
|
# 其他sheet按照w2权重删除单元格
|
2779
2786
|
st['cells'] = dict(islice(st['cells'].items(), int(left_rate * w2 * sheet_cells_num[i])))
|
2780
|
-
cur_summary_len =
|
2787
|
+
cur_summary_len = cls.count_length(y)
|
2781
2788
|
if cur_summary_len <= summary_limit_len:
|
2782
2789
|
return cur_summary_len
|
2783
2790
|
if left_rate * total_cells_num < 1:
|
@@ -2791,7 +2798,7 @@ class WorkbookSummary3:
|
|
2791
2798
|
def reduce5b(cls, y, summary_limit_len, *, cur_summary_len=None):
|
2792
2799
|
""" 计算平均每张表的长度,保留前面部分的表格 """
|
2793
2800
|
if cur_summary_len is None:
|
2794
|
-
cur_summary_len =
|
2801
|
+
cur_summary_len = cls.count_length(y)
|
2795
2802
|
|
2796
2803
|
n = len(y['sheets'])
|
2797
2804
|
active_sheet_name = y['ActiveSheet']
|
@@ -2801,7 +2808,7 @@ class WorkbookSummary3:
|
|
2801
2808
|
# y['sheets'] = y['sheets'][:n - target_reduce_sheet_num]
|
2802
2809
|
|
2803
2810
|
while y['sheets']:
|
2804
|
-
cur_summary_len =
|
2811
|
+
cur_summary_len = cls.count_length(y)
|
2805
2812
|
if cur_summary_len <= summary_limit_len:
|
2806
2813
|
return cur_summary_len
|
2807
2814
|
|
@@ -2830,13 +2837,13 @@ class WorkbookSummary3:
|
|
2830
2837
|
]
|
2831
2838
|
|
2832
2839
|
# 0 摘要本来就不大
|
2833
|
-
cur_summary_len =
|
2840
|
+
cur_summary_len = cls.count_length(y)
|
2834
2841
|
if cur_summary_len <= summary_limit_len:
|
2835
2842
|
return y
|
2836
2843
|
|
2837
2844
|
# 1 删除空单元格
|
2838
2845
|
cls.reduce1_delete_empty_cell(y)
|
2839
|
-
cur_summary_len =
|
2846
|
+
cur_summary_len = cls.count_length(y)
|
2840
2847
|
if cur_summary_len <= summary_limit_len:
|
2841
2848
|
y['mode'] = ', '.join(mode_tags[:1])
|
2842
2849
|
return y
|
@@ -2849,7 +2856,7 @@ class WorkbookSummary3:
|
|
2849
2856
|
|
2850
2857
|
# 3 同构数据,省略显示(有大量相同行数据,折叠省略表达)
|
2851
2858
|
cls.reduce3_fold_rows(y, summary_limit_len, cur_summary_len=cur_summary_len)
|
2852
|
-
cur_summary_len =
|
2859
|
+
cur_summary_len = cls.count_length(y)
|
2853
2860
|
if cur_summary_len <= summary_limit_len:
|
2854
2861
|
y['mode'] = ', '.join(mode_tags[:3])
|
2855
2862
|
return y
|
@@ -2872,9 +2879,10 @@ class WorkbookSummary3:
|
|
2872
2879
|
'sheets': x['sheets'],
|
2873
2880
|
'mode': 'Complete information',
|
2874
2881
|
'ActiveSheet': x['ActiveSheet'], # 当期激活的工作表
|
2875
|
-
# 最多截取250个字符。(一般情况下这个很小的,只是在很极端情况,比如离散选中了非常多区域,这个可能就会太长
|
2876
|
-
'Selection': x['Selection'][:250],
|
2877
2882
|
}
|
2883
|
+
if 'Selection' in x:
|
2884
|
+
# 最多截取250个字符。(一般情况下这个很小的,只是在很极端情况,比如离散选中了非常多区域,这个可能就会太长
|
2885
|
+
y['Selection'] = x['Selection'][:250]
|
2878
2886
|
|
2879
2887
|
# 处理前确保下cells字段存在,避免后续很多处理过程要特判
|
2880
2888
|
for st in y['sheets']:
|
@@ -2891,6 +2899,17 @@ class WorkbookSummary3:
|
|
2891
2899
|
return y
|
2892
2900
|
|
2893
2901
|
|
2902
|
+
class WorkbookSummary3plus(WorkbookSummary3):
|
2903
|
+
""" 标准的token计算方式,不过暂不打算实装使用 """
|
2904
|
+
|
2905
|
+
@classmethod
|
2906
|
+
def count_length(cls, text):
|
2907
|
+
from pyxlpr.data.gptlib import Tokenizer
|
2908
|
+
if not isinstance(text, str):
|
2909
|
+
text = json.dumps(text, ensure_ascii=False, default=str)
|
2910
|
+
return Tokenizer.count_tokens(text)
|
2911
|
+
|
2912
|
+
|
2894
2913
|
def extract_workbook_summary3(file_path, summary_limit_len=4000, **kwargs):
|
2895
2914
|
""" 增加了全局ratio的计算 """
|
2896
2915
|
data = extract_workbook_summary2(file_path, **kwargs)
|
@@ -2902,15 +2921,19 @@ def extract_workbook_summary3(file_path, summary_limit_len=4000, **kwargs):
|
|
2902
2921
|
|
2903
2922
|
def extract_workbook_summary3b(file_path,
|
2904
2923
|
summary_limit_len=4000,
|
2905
|
-
timeout_seconds=
|
2924
|
+
timeout_seconds=10,
|
2906
2925
|
return_mode=0,
|
2907
2926
|
debug=False,
|
2927
|
+
len_mode=0,
|
2908
2928
|
**kwargs):
|
2909
2929
|
"""
|
2910
2930
|
|
2911
2931
|
:param summary_limit_len: 摘要长度限制
|
2912
2932
|
:param timeout_seconds: 超时限制
|
2913
2933
|
:param return_mode: 返回模式,0表示只返回摘要,1表示返回摘要和耗时
|
2934
|
+
:param len_mode:
|
2935
|
+
0, 使用len作为token长度评估
|
2936
|
+
1, 使用模型评估实际token长度
|
2914
2937
|
:param kwargs: 其他是summary2读取文件的时候的参数,其实都不太关键,一般不用特地设置
|
2915
2938
|
"""
|
2916
2939
|
res = {}
|
@@ -2924,7 +2947,10 @@ def extract_workbook_summary3b(file_path,
|
|
2924
2947
|
# res = convert_to_json_compatible(res)
|
2925
2948
|
summary2_time = time.time() - start_time - load_time
|
2926
2949
|
start_time = time.time()
|
2927
|
-
|
2950
|
+
if len_mode == 1:
|
2951
|
+
res = WorkbookSummary3plus.summary2_to_summary3b(res, summary_limit_len)
|
2952
|
+
else:
|
2953
|
+
res = WorkbookSummary3.summary2_to_summary3b(res, summary_limit_len)
|
2928
2954
|
summary3_time = time.time() - start_time
|
2929
2955
|
except TimeoutError as e:
|
2930
2956
|
if debug:
|
@@ -405,7 +405,7 @@ def check_install_package(package, speccal_install_name=None, *, user=False):
|
|
405
405
|
subprocess.check_call(cmds)
|
406
406
|
|
407
407
|
|
408
|
-
def run_once(distinct_mode=0, *, limit=1):
|
408
|
+
def run_once(distinct_mode=0, *, limit=1, debug=False):
|
409
409
|
""" 装饰器,装饰的函数在一次程序里其实只会运行一次
|
410
410
|
|
411
411
|
:param int|str distinct_mode:
|
@@ -449,6 +449,7 @@ def run_once(distinct_mode=0, *, limit=1):
|
|
449
449
|
if x[0] < limit:
|
450
450
|
res = func(*args, **kwargs)
|
451
451
|
x = counter[tag] = [x[0] + 1, res]
|
452
|
+
|
452
453
|
return x[1]
|
453
454
|
|
454
455
|
return wrapper
|
@@ -924,9 +925,10 @@ class OutputLogger(logging.Logger):
|
|
924
925
|
'%Y-%m-%d %H:%M:%S')
|
925
926
|
|
926
927
|
# 提前重置为空文件
|
927
|
-
if log_file is not None
|
928
|
-
|
929
|
-
|
928
|
+
if log_file is not None:
|
929
|
+
if not os.path.isfile(log_file) or log_mode == 'w':
|
930
|
+
with open(log_file, 'w', encoding='utf8') as f:
|
931
|
+
f.write('')
|
930
932
|
|
931
933
|
# 创建文件日志处理器
|
932
934
|
if log_file:
|
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
|
|
30
30
|
|
31
31
|
setup(
|
32
32
|
name='pyxllib', # pip 安装时用的名字
|
33
|
-
version='0.3.
|
33
|
+
version='0.3.93', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
|
34
34
|
author='code4101',
|
35
35
|
author_email='877362867@qq.com',
|
36
36
|
url='https://github.com/XLPRUtils/pyxllib',
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|