pyxllib 0.3.56__tar.gz → 0.3.57__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyxllib-0.3.56/pyxllib.egg-info → pyxllib-0.3.57}/PKG-INFO +1 -1
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/JLineViewer.py +4 -3
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/kq5034lib.py +2 -2
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/specialist/filelib.py +1 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57/pyxllib.egg-info}/PKG-INFO +1 -1
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/gptlib.py +212 -25
- {pyxllib-0.3.56 → pyxllib-0.3.57}/setup.py +1 -1
- {pyxllib-0.3.56 → pyxllib-0.3.57}/LICENSE +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/MANIFEST.in +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/README.md +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/pupil.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/pglib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/autogui/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/autogui/autogui.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/movielib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/file/xlsxlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/newbie.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/pupil.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/specialist/xllog.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib.egg-info/SOURCES.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib.egg-info/requires.txt +6 -6
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/requirements.txt +0 -0
- {pyxllib-0.3.56 → pyxllib-0.3.57}/setup.cfg +0 -0
@@ -75,7 +75,7 @@ class TextEditDelegate(QItemDelegate):
|
|
75
75
|
|
76
76
|
def sizeHint(self, option, index):
|
77
77
|
size = super().sizeHint(option, index)
|
78
|
-
size.setHeight(20) # 限制最大高度为20
|
78
|
+
size.setHeight(20) # 限制最大高度为20像素,限定每个条目只展示一行
|
79
79
|
return size
|
80
80
|
|
81
81
|
def setModelData(self, editor, model, index):
|
@@ -173,13 +173,14 @@ class JLineViewer(QMainWindow):
|
|
173
173
|
self.setWindowTitle('JLineEditor')
|
174
174
|
self.treeView.setAlternatingRowColors(True)
|
175
175
|
self.treeView.setIndentation(20)
|
176
|
-
self.treeView.setSortingEnabled(True)
|
177
|
-
self.treeView.setStyleSheet(LargeStrings.treeViewStyles)
|
176
|
+
# self.treeView.setSortingEnabled(True)
|
177
|
+
# self.treeView.setStyleSheet(LargeStrings.treeViewStyles)
|
178
178
|
self.plainTextEdit.setWordWrapMode(QTextOption.WordWrap)
|
179
179
|
self.plainTextEdit.setReadOnly(True)
|
180
180
|
self.showMaximized()
|
181
181
|
|
182
182
|
self.treeView.setSortingEnabled(False) # 禁止排序
|
183
|
+
self.treeView.setAnimated(False)
|
183
184
|
self.plainTextEdit.textChanged.connect(self.updateJson) # 连接 textChanged 信号到新的槽函数
|
184
185
|
|
185
186
|
def addPane(self, widget, title):
|
@@ -1334,10 +1334,10 @@ class 课次数据:
|
|
1334
1334
|
else:
|
1335
1335
|
return '未开始学习'
|
1336
1336
|
|
1337
|
-
def 小鹅通考勤结果2(self, user_id, 返款梯度,
|
1337
|
+
def 小鹅通考勤结果2(self, user_id, 返款梯度, 要求在线分钟=30):
|
1338
1338
|
""" 输入视频返款的梯度,这个函数相比`小鹅通考勤结果`,还会返回单元格颜色格式,对应的返款额 """
|
1339
1339
|
# 1 判断课程回放是不是结束了
|
1340
|
-
text = self.小鹅通考勤结果(user_id,
|
1340
|
+
text = self.小鹅通考勤结果(user_id, 要求在线分钟)
|
1341
1341
|
if text == '未开始学习' or '不足' in text: # 判断该课次是否已经结束了
|
1342
1342
|
delta_day = datetime.timedelta(days=len(返款梯度))
|
1343
1343
|
if (delta_day + self.start_day) <= datetime.date.today():
|
@@ -3,6 +3,7 @@
|
|
3
3
|
# @Author : 陈坤泽
|
4
4
|
# @Email : 877362867@qq.com
|
5
5
|
# @Date : 2023/07/13 14:26
|
6
|
+
import copy
|
6
7
|
|
7
8
|
from pyxllib.prog.pupil import check_install_package
|
8
9
|
|
@@ -20,7 +21,7 @@ from transformers import GPT2TokenizerFast
|
|
20
21
|
|
21
22
|
from pyxllib.prog.specialist import browser
|
22
23
|
from pyxllib.algo.pupil import ValuesStat
|
23
|
-
from pyxllib.file.specialist import XlPath, JsonlDataFile
|
24
|
+
from pyxllib.file.specialist import XlPath, JsonlDataFile, TwinDirs
|
24
25
|
|
25
26
|
|
26
27
|
def __1_生成提问数据():
|
@@ -295,7 +296,7 @@ class GptChatJsonl(JsonlDataFile):
|
|
295
296
|
ls.append(t)
|
296
297
|
else:
|
297
298
|
if "file_path" in t:
|
298
|
-
ls.append(("filep_path=" + t["file_path"] + "\n\n") + t["content"])
|
299
|
+
ls.append(("filep_path=" + str(t["file_path"]) + "\n\n") + t["content"])
|
299
300
|
else:
|
300
301
|
ls.append(t["content"])
|
301
302
|
return ls
|
@@ -336,36 +337,124 @@ class GptChatJsonl(JsonlDataFile):
|
|
336
337
|
# 输出过滤后的sessions数量
|
337
338
|
print(f"过滤后的sessions数量:{len(self.records)}")
|
338
339
|
|
340
|
+
@classmethod
|
341
|
+
def _parse_single_record_answer_contents(cls, record):
|
342
|
+
""" 注意本函数不做record备份 """
|
343
|
+
for answer in record.get('all_answers', []):
|
344
|
+
if isinstance(answer, dict) and 'contents' in answer:
|
345
|
+
n = len(answer['contents'])
|
346
|
+
for i in range(n - 1, -1, -1):
|
347
|
+
message = answer['contents'][i]['message']
|
348
|
+
if message and 'content' in message and 'error' not in message:
|
349
|
+
break
|
350
|
+
else:
|
351
|
+
answer['contents'] = ''
|
352
|
+
continue
|
353
|
+
|
354
|
+
content = message['content']
|
355
|
+
if 'parts' in content:
|
356
|
+
content = '\n'.join(content['parts'])
|
357
|
+
else:
|
358
|
+
content = content['text']
|
359
|
+
answer['contents'] = content
|
360
|
+
|
361
|
+
@classmethod
|
362
|
+
def _parse_single_record_answer_downloads(cls, record):
|
363
|
+
for answer in record.get('all_answers', []):
|
364
|
+
if 'downloads' in answer:
|
365
|
+
for i, link in enumerate(answer['downloads']):
|
366
|
+
m = re.search(r'filename%3D(.+?)&sig=', link)
|
367
|
+
if m:
|
368
|
+
answer['downloads'][i] = unquote(unquote(m.group(1)))
|
369
|
+
|
370
|
+
@classmethod
|
371
|
+
def parse_single_record_answer(cls, record):
|
372
|
+
cls._parse_single_record_answer_contents(record)
|
373
|
+
cls._parse_single_record_answer_downloads(record)
|
374
|
+
|
339
375
|
def parse_answer_contents(self):
|
340
376
|
""" 简化解释器返回结果中,contents的结构信息 """
|
341
377
|
for record in self.records:
|
342
|
-
|
343
|
-
if isinstance(answer, dict) and 'contents' in answer:
|
344
|
-
n = len(answer['contents'])
|
345
|
-
for i in range(n - 1, -1, -1):
|
346
|
-
message = answer['contents'][i]['message']
|
347
|
-
if message and 'content' in message and 'error' not in message:
|
348
|
-
break
|
349
|
-
else:
|
350
|
-
answer['contents'] = ''
|
351
|
-
continue
|
352
|
-
|
353
|
-
content = message['content']
|
354
|
-
if 'parts' in content:
|
355
|
-
content = '\n'.join(content['parts'])
|
356
|
-
else:
|
357
|
-
content = content['text']
|
358
|
-
answer['contents'] = content
|
378
|
+
self._parse_single_record_answer_contents(record)
|
359
379
|
|
360
380
|
def parse_answer_downloads(self):
|
361
381
|
""" 解析,简化下载链接的表达形式 """
|
362
382
|
for record in self.records:
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
383
|
+
self._parse_single_record_answer_downloads(record)
|
384
|
+
|
385
|
+
# 目录里的文件名也同理做精简
|
386
|
+
for f in self.infile.parent.glob_files():
|
387
|
+
if f.name.startswith('OpenAI-download-'):
|
388
|
+
f.rename2(f.parent / re.sub(r'OpenAI-download-\d+-', '', f.name),
|
389
|
+
if_exists='replace')
|
390
|
+
|
391
|
+
def filter_to_rechat(self, check_func, rechat_path=None):
|
392
|
+
""" 筛选失败的数据到一个新的目录,常用于对chatted数据筛选出未成功的样例,上池子重跑
|
393
|
+
这个不是简单的找出得不到all_answers的,而是可以很精细,包含复杂post、verify的情况
|
394
|
+
|
395
|
+
:param check_func: 一个函数,接收一个record,返回True或False
|
396
|
+
True,表示这个record是对的
|
397
|
+
False,表示这个record是错的,要挑选出来
|
398
|
+
:param rechat_path: 把挑选出来的数据放到新路径
|
399
|
+
"""
|
400
|
+
if rechat_path is None:
|
401
|
+
rechat_path = XlPath(self.infile.parent.as_posix() + '_rechat/in.jsonl')
|
402
|
+
|
403
|
+
rechat_path = XlPath(rechat_path)
|
404
|
+
td = TwinDirs(self.infile.parent, rechat_path.parent)
|
405
|
+
|
406
|
+
gcj = type(self)()
|
407
|
+
for record in self.records:
|
408
|
+
if not check_func(record):
|
409
|
+
record2 = {}
|
410
|
+
for k in ['id', 'text', 'first_text_length', 'extra']:
|
411
|
+
record2[k] = record[k]
|
412
|
+
gcj.records.append(record2)
|
413
|
+
for x in record['text']:
|
414
|
+
if 'file_path' in x:
|
415
|
+
td.copy_file(td.src_dir / x['file_path'])
|
416
|
+
|
417
|
+
gcj.save(rechat_path)
|
418
|
+
return gcj
|
419
|
+
|
420
|
+
def update_from_rechat(self, check_func, rechat_path=None):
|
421
|
+
""" 从另一份rechat的数据,更新回主master数据
|
422
|
+
|
423
|
+
:param check_func: 原chatted没过,但是rechatted通过的,需要把数据更新过来
|
424
|
+
:param rechat_path: 注意只能传路径,因为可能涉及到文件操作,需要知道目录所在
|
425
|
+
依据这个文件里的record记录更新回self
|
426
|
+
"""
|
427
|
+
if rechat_path is None:
|
428
|
+
rechat_path = XlPath(self.infile.parent.as_posix() + '_rechat') / 'out.jsonl'
|
429
|
+
|
430
|
+
rechat_path = XlPath(rechat_path)
|
431
|
+
td = TwinDirs(rechat_path.parent, self.infile.parent)
|
432
|
+
|
433
|
+
id2index = {x['id']: i for i, x in enumerate(self.records)}
|
434
|
+
|
435
|
+
gcj = type(self)(rechat_path)
|
436
|
+
gcj.parse_answer_contents()
|
437
|
+
gcj.parse_answer_downloads()
|
438
|
+
|
439
|
+
# 需要处理下下载链接名称
|
440
|
+
self.parse_answer_downloads()
|
441
|
+
gcj.parse_answer_downloads()
|
442
|
+
|
443
|
+
for y in gcj.records:
|
444
|
+
index = id2index[y['id']]
|
445
|
+
x = self.records[index]
|
446
|
+
if not check_func(x) and check_func(y):
|
447
|
+
# 先把x相关的数据删掉
|
448
|
+
if 'all_answers' in x:
|
449
|
+
for answer in x['all_answers']:
|
450
|
+
for fname in answer.get('downloads', []):
|
451
|
+
(XlPath(self.infile.parent) / fname).delete()
|
452
|
+
# 再把y拷贝过来
|
453
|
+
for answer in y['all_answers']:
|
454
|
+
for fname in answer.get('downloads', []):
|
455
|
+
td.copy_file(td.src_dir / fname)
|
456
|
+
self.records[index] = y
|
457
|
+
return gcj
|
369
458
|
|
370
459
|
|
371
460
|
GptQuestionJsonl = GptChatJsonl # 名称向下兼容
|
@@ -484,3 +573,101 @@ class GptTrainJsonl(JsonlDataFile):
|
|
484
573
|
|
485
574
|
# 或者返回HTML字符串
|
486
575
|
return html_content
|
576
|
+
|
577
|
+
|
578
|
+
def __4_综合集成类():
|
579
|
+
pass
|
580
|
+
|
581
|
+
|
582
|
+
class GptChatDir:
|
583
|
+
""" 一个目录,包含了一个任务的所有数据,包括in、out、post等文件 """
|
584
|
+
|
585
|
+
def __init__(self, root):
|
586
|
+
self.root = root = XlPath(root)
|
587
|
+
|
588
|
+
self.chat_file = root / 'in.jsonl'
|
589
|
+
self.chatted_file = root / 'out.jsonl'
|
590
|
+
self.post_file = root / 'post.jsonl'
|
591
|
+
|
592
|
+
self.upload_files_dir = root / 'upload_files'
|
593
|
+
self.download_files_dir = root / 'download_files'
|
594
|
+
|
595
|
+
for dir_path in [self.root, self.upload_files_dir, self.download_files_dir]:
|
596
|
+
if not dir_path.is_dir():
|
597
|
+
dir_path.mkdir(parents=True, exist_ok=True)
|
598
|
+
|
599
|
+
def init(self):
|
600
|
+
""" 一些基础处理 """
|
601
|
+
# 1 chat信息
|
602
|
+
if self.chatted_file.is_file():
|
603
|
+
gcj1 = GptChatJsonl(self.chatted_file)
|
604
|
+
elif self.chat_file.is_file():
|
605
|
+
gcj1 = GptChatJsonl(self.chat_file)
|
606
|
+
else:
|
607
|
+
print('请确认是否有生成初始的chat数据')
|
608
|
+
return
|
609
|
+
|
610
|
+
print(f'【{self.root.name}】')
|
611
|
+
n = len(gcj1.records)
|
612
|
+
m = sum([len(x['text']) for x in gcj1.records])
|
613
|
+
print(f'1、chat:{n}条会话*{m / n:.2g}条消息')
|
614
|
+
gcj1.check_records()
|
615
|
+
print()
|
616
|
+
|
617
|
+
# 2 chatted信息
|
618
|
+
filter_records = [x for x in gcj1.records if 'all_answers' in x]
|
619
|
+
if filter_records:
|
620
|
+
print(f'2、chatted:已获得{len(filter_records)}条会话')
|
621
|
+
else:
|
622
|
+
print('2、chatted:暂未获得生成数据')
|
623
|
+
|
624
|
+
# 3 post信息
|
625
|
+
if filter_records and not self.post_file.is_file(): # 待生成后处理文件
|
626
|
+
gcj2 = GptChatJsonl()
|
627
|
+
gcj2.infile = self.post_file
|
628
|
+
gcj2.records = filter_records
|
629
|
+
gcj2.parse_answer_contents()
|
630
|
+
gcj2.parse_answer_downloads()
|
631
|
+
gcj2.save()
|
632
|
+
elif self.post_file.is_file(): # 已经有后处理文件
|
633
|
+
gcj2 = GptChatJsonl(self.post_file)
|
634
|
+
else:
|
635
|
+
return
|
636
|
+
|
637
|
+
print(f'3、post:{len(gcj2.records)}条会话')
|
638
|
+
|
639
|
+
def merge_rechatted(self, check_func, rechat_dir):
|
640
|
+
""" 从另一份重跑的数据,更新数据回来
|
641
|
+
|
642
|
+
:param check_func: 原chatted没过,但是rechatted通过的,需要把数据更新过来
|
643
|
+
:param rechat_dir: 注意是传另一份数据所在的目录
|
644
|
+
|
645
|
+
TODO 这个函数还没写完
|
646
|
+
"""
|
647
|
+
rechat_dir = XlPath(rechat_dir)
|
648
|
+
td = TwinDirs(rechat_dir, self.root)
|
649
|
+
|
650
|
+
gcj1 = GptChatJsonl(self.chatted_file)
|
651
|
+
gcj2 = type(self)(rechat_dir / 'out.jsonl')
|
652
|
+
|
653
|
+
id2index = {x['id']: i for i, x in enumerate(gcj1.records)}
|
654
|
+
|
655
|
+
# 需要处理下下载链接名称
|
656
|
+
gcj2.parse_answer_downloads()
|
657
|
+
|
658
|
+
for y in gcj2.records:
|
659
|
+
index = id2index[y['id']]
|
660
|
+
x = gcj1.records[index]
|
661
|
+
x2 = copy.deepcopy(x)
|
662
|
+
gcj1.parse_single_record_answer(x2)
|
663
|
+
if not check_func(x2) and check_func(y):
|
664
|
+
# 先把x相关的数据删掉
|
665
|
+
if 'all_answers' in x2:
|
666
|
+
for answer in x2['all_answers']:
|
667
|
+
for fname in answer.get('downloads', []):
|
668
|
+
(self.root / (str(x['id']) + '-' + fname)).delete()
|
669
|
+
# 再把y拷贝过来
|
670
|
+
for answer in y['all_answers']:
|
671
|
+
for fname in answer.get('downloads', []):
|
672
|
+
td.copy_file(td.src_dir / fname)
|
673
|
+
gcj1.records[index] = y
|
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
|
|
30
30
|
|
31
31
|
setup(
|
32
32
|
name='pyxllib', # pip 安装时用的名字
|
33
|
-
version='0.3.
|
33
|
+
version='0.3.57', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
|
34
34
|
author='code4101',
|
35
35
|
author_email='877362867@qq.com',
|
36
36
|
url='https://github.com/XLPRUtils/pyxllib',
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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
|
@@ -21,14 +21,14 @@ Jinja2
|
|
21
21
|
pandas>=0.23.4
|
22
22
|
|
23
23
|
[xlai]
|
24
|
-
pillow
|
25
|
-
pynvml
|
26
|
-
opencv-python
|
27
|
-
xlcocotools
|
28
24
|
visdom
|
25
|
+
xlcocotools
|
26
|
+
pillow
|
29
27
|
opsdroid-get-image-size
|
28
|
+
opencv-python
|
29
|
+
pynvml
|
30
30
|
|
31
31
|
[xlcv]
|
32
|
-
opencv-python
|
33
|
-
pillow
|
34
32
|
opsdroid-get-image-size
|
33
|
+
pillow
|
34
|
+
opencv-python
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|