pyxllib 0.3.126__tar.gz → 0.3.127__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.126/pyxllib.egg-info → pyxllib-0.3.127}/PKG-INFO +1 -1
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/drissionlib.py +5 -1
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/pupil.py +77 -4
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/specialist/xllog.py +1 -2
- {pyxllib-0.3.126 → pyxllib-0.3.127/pyxllib.egg-info}/PKG-INFO +1 -1
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib.egg-info/requires.txt +17 -15
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/openai2/_core/chat.py +146 -24
- {pyxllib-0.3.126 → pyxllib-0.3.127}/requirements.txt +4 -3
- {pyxllib-0.3.126 → pyxllib-0.3.127}/setup.py +1 -1
- {pyxllib-0.3.126 → pyxllib-0.3.127}/LICENSE +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/MANIFEST.in +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/README.md +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/matcher.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/pupil.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/data/jsonlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/data/pglib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/JLineViewer.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/autogui/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/autogui/autogui.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/kq5034lib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/robustprocfile.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/ext/yuquelib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/libreoffice.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/movielib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/specialist/filelib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/file/xlsxlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/cachetools.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/ipyexec.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/multiprocs.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/newbie.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/scheduler.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/charclasslib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/jiebalib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/jinjalib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/jscode.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/templates/echart_base.html +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/templates/highlight_code.html +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/templates/latex_editor.html +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/vbacode.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib.egg-info/SOURCES.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/gptlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/data/tiktokenlib.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/openai2/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/openai2/_core/group_chat.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/openai2/openai2.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.126 → pyxllib-0.3.127}/setup.cfg +0 -0
@@ -74,7 +74,11 @@ def get_dp_tab(dp_page=None) -> 'XlPage':
|
|
74
74
|
elif dp_page is True:
|
75
75
|
return ChromiumPage().new_tab()
|
76
76
|
elif isinstance(dp_page, str):
|
77
|
-
|
77
|
+
def dp_page2(tab): # 默认开启页面复用。 todo 以后可以改进成可选参数
|
78
|
+
if tab.url.startswith(dp_page):
|
79
|
+
return tab
|
80
|
+
|
81
|
+
return get_dp_page(dp_page2)
|
78
82
|
else:
|
79
83
|
return ChromiumPage().latest_tab
|
80
84
|
|
@@ -603,6 +603,7 @@ def inject_members(from_obj, to_obj, member_list=None, *,
|
|
603
603
|
# 把XlDocxTable的成员方法绑定到docx.table.Table里
|
604
604
|
>> inject_members(XlDocxTable, docx.table.Table)
|
605
605
|
|
606
|
+
240826周一,其他可参考学习的三方现成工具库:from fastcore.foundation import patch
|
606
607
|
"""
|
607
608
|
# 1 整理需要注入的方法清单
|
608
609
|
dst = set(dir(to_obj))
|
@@ -1029,10 +1030,13 @@ class MultiProcessLauncher:
|
|
1029
1030
|
if name is None:
|
1030
1031
|
cmd2 = cmd.split() if isinstance(cmd, str) else cmd
|
1031
1032
|
name = cmd2[0]
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1033
|
+
if sys.platform == 'darwin':
|
1034
|
+
proc = subprocess.Popen(cmd,
|
1035
|
+
shell=shell)
|
1036
|
+
else:
|
1037
|
+
proc = subprocess.Popen(cmd,
|
1038
|
+
shell=shell,
|
1039
|
+
preexec_fn=self._set_pdeathsig())
|
1036
1040
|
|
1037
1041
|
worker = ProcessWorker(name, proc, raw_cmd=cmd, **kwargs)
|
1038
1042
|
self.workers.append(worker)
|
@@ -1118,6 +1122,73 @@ class MultiProcessLauncher:
|
|
1118
1122
|
print_full_dataframe(df)
|
1119
1123
|
|
1120
1124
|
|
1125
|
+
def support_multi_processes_hyx(default_processes=1):
|
1126
|
+
""" 对函数进行扩展,支持并发多进程运行
|
1127
|
+
增加重跑
|
1128
|
+
注意被装饰的函数,需要支持 process_count、process_id 两个参数,来获得总进程数,当前进程id的信息
|
1129
|
+
"""
|
1130
|
+
|
1131
|
+
def decorator(func):
|
1132
|
+
|
1133
|
+
def wrapper(*args, **kwargs):
|
1134
|
+
process_count = int(kwargs.pop('process_count', default_processes))
|
1135
|
+
process_id = kwargs.pop('process_id', None)
|
1136
|
+
shell = kwargs.pop('shell', False)
|
1137
|
+
|
1138
|
+
if process_count == 1 or process_id is not None:
|
1139
|
+
if process_id is None:
|
1140
|
+
return func(*args, **kwargs)
|
1141
|
+
else:
|
1142
|
+
return func(*args, **kwargs, process_count=process_count, process_id=int(process_id))
|
1143
|
+
else:
|
1144
|
+
mpl = MultiProcessLauncher()
|
1145
|
+
for i in range(int(process_count)):
|
1146
|
+
if isinstance(process_id, int) and i != process_id:
|
1147
|
+
continue
|
1148
|
+
|
1149
|
+
'''
|
1150
|
+
sys.argv[0] 为 /Users/youx/NutstoreCloudBridge/slns/xlproject/xlproject/m2404ragdata/b清洗/hyx240806统计图表数.py
|
1151
|
+
将其转化为 xlproject.m2404ragdata.b清洗.hyx240806统计图表数
|
1152
|
+
'''
|
1153
|
+
header = 'xlproject.code4101'
|
1154
|
+
|
1155
|
+
root_directory_name = 'xlproject'
|
1156
|
+
occurrence = 2
|
1157
|
+
path = sys.argv[0]
|
1158
|
+
|
1159
|
+
# 查找第 occurrence 次出现的 root_directory_name 位置
|
1160
|
+
positions = [i for i in range(len(path)) if path.startswith(root_directory_name, i)]
|
1161
|
+
if len(positions) < occurrence:
|
1162
|
+
raise ValueError(
|
1163
|
+
f"Path does not contain {occurrence} occurrences of the root directory name: {root_directory_name}")
|
1164
|
+
|
1165
|
+
# 提取并转换为模块名称
|
1166
|
+
index = positions[occurrence - 1]
|
1167
|
+
module_name = os.path.splitext(path[index:])[0].replace(os.path.sep, '.')
|
1168
|
+
|
1169
|
+
# todo 这样使用有个坑,process_count、process_id都是以str类型传入的,开发者下游使用容易出问题
|
1170
|
+
cmds = [
|
1171
|
+
'run_python_module',
|
1172
|
+
'--wait_mode',
|
1173
|
+
'60',
|
1174
|
+
module_name,
|
1175
|
+
func.__name__,
|
1176
|
+
'--process_count', str(process_count),
|
1177
|
+
'--process_id', str(i)
|
1178
|
+
]
|
1179
|
+
cmds.extend(map(str, args)) # 添加位置参数
|
1180
|
+
for k, v in kwargs.items():
|
1181
|
+
cmds.append(f'--{k}') # 添加关键字参数的键
|
1182
|
+
cmds.append(str(v)) # 添加关键字参数的值
|
1183
|
+
|
1184
|
+
mpl.add_process_python_module(header, cmds, shell=shell)
|
1185
|
+
mpl.run_endless()
|
1186
|
+
|
1187
|
+
return wrapper
|
1188
|
+
|
1189
|
+
return decorator
|
1190
|
+
|
1191
|
+
|
1121
1192
|
def support_multi_processes(default_processes=1):
|
1122
1193
|
""" 对函数进行扩展,支持并发多进程运行
|
1123
1194
|
|
@@ -1151,6 +1222,8 @@ def support_multi_processes(default_processes=1):
|
|
1151
1222
|
for k, v in kwargs.items():
|
1152
1223
|
cmds.append(f'--{k}') # 添加关键字参数的键
|
1153
1224
|
cmds.append(str(v)) # 添加关键字参数的值
|
1225
|
+
|
1226
|
+
mpl.add_process_python_module()
|
1154
1227
|
mpl.add_process_python(sys.argv[0], cmds, shell=shell)
|
1155
1228
|
mpl.run_endless()
|
1156
1229
|
|
@@ -53,8 +53,7 @@ def get_xllog(name='xllog', *, log_file=None):
|
|
53
53
|
xllog = logging.getLogger('pyxllib.xllog')
|
54
54
|
fmt = '%(asctime)s %(message)s'
|
55
55
|
if log_file:
|
56
|
-
|
57
|
-
file_handler = logging.FileHandler(f'{log_file}', 'w')
|
56
|
+
file_handler = logging.FileHandler(f'{log_file}', 'a')
|
58
57
|
file_handler.setLevel(logging.DEBUG)
|
59
58
|
file_handler.setFormatter(logging.Formatter(fmt))
|
60
59
|
xllog.addHandler(file_handler)
|
@@ -3,7 +3,7 @@ charset-normalizer
|
|
3
3
|
requests
|
4
4
|
qiniu
|
5
5
|
pyyaml
|
6
|
-
|
6
|
+
loguru
|
7
7
|
humanfriendly
|
8
8
|
tqdm
|
9
9
|
ujson
|
@@ -13,39 +13,41 @@ envariable
|
|
13
13
|
decorator
|
14
14
|
more-itertools
|
15
15
|
fire
|
16
|
+
xlrd
|
16
17
|
pympler
|
17
18
|
lxml
|
18
19
|
beautifulsoup4
|
19
20
|
numpy
|
20
21
|
Jinja2
|
21
22
|
pandas>=0.23.4
|
23
|
+
pillow
|
22
24
|
|
23
25
|
[xlai]
|
26
|
+
pillow
|
27
|
+
opsdroid-get-image-size
|
24
28
|
pynvml
|
25
29
|
visdom
|
26
|
-
opsdroid-get-image-size
|
27
30
|
opencv-python
|
28
|
-
pillow
|
29
31
|
|
30
32
|
[xlall]
|
31
|
-
|
32
|
-
flask-
|
33
|
-
|
34
|
-
|
33
|
+
pillow
|
34
|
+
flask-jwt-extended
|
35
|
+
flask
|
36
|
+
fastapi
|
37
|
+
opsdroid-get-image-size
|
35
38
|
html2text
|
39
|
+
ujson
|
40
|
+
arts
|
36
41
|
uvicorn
|
37
|
-
|
38
|
-
|
42
|
+
flask-wtf
|
43
|
+
zhconv
|
44
|
+
sentencepiece
|
45
|
+
flask-cors
|
39
46
|
xlrd
|
40
|
-
fastapi
|
41
47
|
flask-restful
|
42
48
|
opencv-python
|
43
|
-
flask-wtf
|
44
|
-
flask
|
45
|
-
pillow
|
46
|
-
sentencepiece
|
47
49
|
|
48
50
|
[xlcv]
|
49
51
|
opencv-python
|
50
|
-
pillow
|
51
52
|
opsdroid-get-image-size
|
53
|
+
pillow
|
@@ -16,6 +16,8 @@ from unittest.mock import MagicMock
|
|
16
16
|
import math
|
17
17
|
from types import SimpleNamespace
|
18
18
|
|
19
|
+
import requests
|
20
|
+
from loguru import logger as loguru_logger
|
19
21
|
from tqdm import tqdm
|
20
22
|
from joblib import Parallel, delayed
|
21
23
|
from openai import OpenAI, AsyncOpenAI
|
@@ -289,20 +291,35 @@ class Chat:
|
|
289
291
|
self._messages.add_many(*messages)
|
290
292
|
|
291
293
|
def __getattr__(self, name):
|
292
|
-
match name: # 兼容旧代码
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
raise AttributeError(name)
|
294
|
+
# match name: # 兼容旧代码
|
295
|
+
# case 'asy_request':
|
296
|
+
# return self.async_request
|
297
|
+
# case 'forge':
|
298
|
+
# return self.add_dialogs
|
299
|
+
# case 'pin':
|
300
|
+
# return self.pin_messages
|
301
|
+
# case 'unpin':
|
302
|
+
# return self.unpin_messages
|
303
|
+
# case 'dump':
|
304
|
+
# return self._dump
|
305
|
+
# case 'load':
|
306
|
+
# return self._load
|
307
|
+
# raise AttributeError(name)
|
308
|
+
|
309
|
+
if name == 'asy_request':
|
310
|
+
return self.async_request
|
311
|
+
elif name == 'forge':
|
312
|
+
return self.add_dialogs
|
313
|
+
elif name == 'pin':
|
314
|
+
return self.pin_messages
|
315
|
+
elif name == 'unpin':
|
316
|
+
return self.unpin_messages
|
317
|
+
elif name == 'dump':
|
318
|
+
return self._dump
|
319
|
+
elif name == 'load':
|
320
|
+
return self._load
|
321
|
+
else:
|
322
|
+
raise AttributeError(name)
|
306
323
|
|
307
324
|
def _dump(self, fpath: str):
|
308
325
|
""" 存档 """
|
@@ -480,6 +497,106 @@ class Chat:
|
|
480
497
|
return image_url
|
481
498
|
|
482
499
|
|
500
|
+
class Chat2:
|
501
|
+
default_api_key = None
|
502
|
+
default_base_url = 'https://beta.gpt4api.plus'
|
503
|
+
|
504
|
+
def __init__(self, api_key=None,
|
505
|
+
gizmo_id=None,
|
506
|
+
*,
|
507
|
+
base_url=None,
|
508
|
+
model='gpt-4o'):
|
509
|
+
"""
|
510
|
+
:param gizmo_id: gpts的id,比如 https://chatgpt.com/g/g-ABCD1234-ce-shi。则id就是"g-ABCD1234"
|
511
|
+
后面的gpts的名称变了没关系,前面前缀的id不要变就行
|
512
|
+
"""
|
513
|
+
self.api_key = api_key or self.default_api_key
|
514
|
+
self.base_url = base_url or self.default_base_url
|
515
|
+
self.gizmo_id = gizmo_id # 是否有action模块需要点击确认
|
516
|
+
|
517
|
+
self.headers = {
|
518
|
+
'Authorization': f'Bearer {self.api_key}'
|
519
|
+
}
|
520
|
+
self.session_state = {
|
521
|
+
'stream': False,
|
522
|
+
'model': model,
|
523
|
+
}
|
524
|
+
|
525
|
+
self.messages = list() # 历史记录
|
526
|
+
|
527
|
+
def _upload_file(self, file_path, file_type='my_files', parent_payload=None):
|
528
|
+
""" 上传文件
|
529
|
+
|
530
|
+
:param payload: 如果传入外部主payload自动,会自动添加已上传的文件的状态内容信息
|
531
|
+
"""
|
532
|
+
# 1 请求
|
533
|
+
url = f"{self.base_url}/chat/uploaded"
|
534
|
+
payload = {'type': file_type}
|
535
|
+
if 'conversation_id' in self.session_state:
|
536
|
+
payload['conversation_id'] = self.session_state['conversation_id']
|
537
|
+
files = [
|
538
|
+
('files', (Path(file_path).name, open(file_path, 'rb')))
|
539
|
+
]
|
540
|
+
resp = requests.post(url, headers=self.headers, data=payload, files=files)
|
541
|
+
resp_json = resp.json()
|
542
|
+
|
543
|
+
# 2 保存状态
|
544
|
+
self.session_state['conversation_id'] = resp_json['conversation_id']
|
545
|
+
self.messages.append(resp_json)
|
546
|
+
if parent_payload:
|
547
|
+
key_name = 'attachments' if file_type == 'my_files' else 'parts'
|
548
|
+
if key_name not in parent_payload:
|
549
|
+
parent_payload[key_name] = []
|
550
|
+
parent_payload[key_name].append(resp_json[key_name[:-1]])
|
551
|
+
|
552
|
+
return resp_json
|
553
|
+
|
554
|
+
def _upload_image(self, image_path, parent_payload=None):
|
555
|
+
""" 上传图片 """
|
556
|
+
return self._upload_file(image_path, 'multimodal', parent_payload=parent_payload)
|
557
|
+
|
558
|
+
def query(self, message, *, files=None, images=None):
|
559
|
+
# 1 预备
|
560
|
+
if self.gizmo_id:
|
561
|
+
url = f"{self.base_url}/chat/action"
|
562
|
+
else:
|
563
|
+
url = f"{self.base_url}/chat/all-tools"
|
564
|
+
|
565
|
+
headers = self.headers.copy()
|
566
|
+
headers['Content-Type'] = 'application/json'
|
567
|
+
|
568
|
+
# 2 api初步配置
|
569
|
+
payload = self.session_state.copy()
|
570
|
+
payload['message'] = message
|
571
|
+
if self.gizmo_id:
|
572
|
+
payload['gizmo_id'] = self.gizmo_id
|
573
|
+
|
574
|
+
# 3 添加文件
|
575
|
+
if files:
|
576
|
+
if isinstance(files, str):
|
577
|
+
files = [files]
|
578
|
+
for file in files:
|
579
|
+
self._upload_file(file, parent_payload=payload)
|
580
|
+
|
581
|
+
# 4 添加图片
|
582
|
+
if images:
|
583
|
+
if isinstance(images, str):
|
584
|
+
images = [images]
|
585
|
+
for image in images:
|
586
|
+
self._upload_image(image, parent_payload=payload)
|
587
|
+
|
588
|
+
# 5 请求
|
589
|
+
resp = requests.post(url, headers=headers, data=json.dumps(payload))
|
590
|
+
resp_json = resp.json()
|
591
|
+
|
592
|
+
# 6 保存状态
|
593
|
+
self.session_state['conversation_id'] = resp_json['conversation_id']
|
594
|
+
self.session_state['parent_message_id'] = resp_json['message_id']
|
595
|
+
self.messages.append(resp_json)
|
596
|
+
|
597
|
+
return '\n\n'.join(resp_json['contents'][-1]['message']['content']['parts'])
|
598
|
+
|
599
|
+
|
483
600
|
def __2_信息摘要():
|
484
601
|
pass
|
485
602
|
|
@@ -580,7 +697,6 @@ class CompressContent:
|
|
580
697
|
expect_len=None,
|
581
698
|
max_round=-1,
|
582
699
|
text_spliter=None,
|
583
|
-
style=None,
|
584
700
|
model='gpt-3.5-turbo',
|
585
701
|
soft_merge_prompt=None,
|
586
702
|
calc_len=None,
|
@@ -606,7 +722,6 @@ class CompressContent:
|
|
606
722
|
:param func text_spliter: 文本分割器,默认使用均切
|
607
723
|
均匀切分,在不超过segment_len的情况下,尽量保持每段文本长度相同
|
608
724
|
后续要支持langchain里分割算法,觉得那个切法更泛用,虽然效率估计更低
|
609
|
-
:param str style: 提取风格。暂未实装,涉及到如何跟已有prompts配合。
|
610
725
|
:param str model: 使用的模型
|
611
726
|
:param soft_merge_prompt: 最后一轮合并后,如果已经满足要求,是否要加一段提示词,再优化下描述,避免暴力合并效果过于生硬
|
612
727
|
|
@@ -621,6 +736,9 @@ class CompressContent:
|
|
621
736
|
|
622
737
|
expect_len = expect_len or segment_len // 2
|
623
738
|
logger = logger or MagicMock()
|
739
|
+
if logger is True:
|
740
|
+
logger = loguru_logger
|
741
|
+
|
624
742
|
calc_len = calc_len or len
|
625
743
|
|
626
744
|
if text_spliter is None:
|
@@ -641,22 +759,21 @@ class CompressContent:
|
|
641
759
|
contents2.extend(text_spliter(content))
|
642
760
|
|
643
761
|
# 3 单个提取的接口
|
644
|
-
def extract_info(content, prompt):
|
762
|
+
def extract_info(i, content, prompt):
|
645
763
|
chat = Chat(model=model)
|
646
764
|
chat.add_system_prompt(prompt)
|
647
765
|
summary = chat.query(content)
|
648
|
-
logger.
|
766
|
+
logger.debug(f'>>> 第{i}块原始内容:\n{content}\n\n>>> 提取信息:{summary}\n\n')
|
649
767
|
return summary
|
650
768
|
|
651
769
|
# 4 (并发)提取信息
|
652
770
|
prompt_idx = min(round_num, len(extra_prompts) - 1)
|
653
771
|
backend = 'threading' if max_workers != 1 else 'sequential'
|
654
772
|
parallel = Parallel(n_jobs=max_workers, backend=backend, return_as='generator')
|
655
|
-
|
656
|
-
|
657
|
-
# disable = False
|
773
|
+
logger.debug(f'>>> 提取信息轮次:{round_num},使用提示词:\n{extra_prompts[prompt_idx]}')
|
774
|
+
tasks = [delayed(extract_info)(i, c, extra_prompts[prompt_idx]) for i, c in enumerate(contents2, start=1)]
|
658
775
|
contents = list(tqdm(parallel(tasks), total=len(contents2),
|
659
|
-
desc=f'round {round_num} 提取信息', disable=
|
776
|
+
desc=f'round {round_num} 提取信息', disable=isinstance(logger, MagicMock)))
|
660
777
|
|
661
778
|
# 5 合并数据
|
662
779
|
contents = ['\n\n'.join(contents)]
|
@@ -682,8 +799,13 @@ class CompressContent:
|
|
682
799
|
**kwargs)
|
683
800
|
|
684
801
|
@classmethod
|
685
|
-
def with_query(cls, content, query, extra_prompts=None, **kwargs):
|
686
|
-
""" 通用的信息压缩,根据用户的问题,进行信息压缩
|
802
|
+
def with_query(cls, content, query=None, extra_prompts=None, **kwargs):
|
803
|
+
""" 通用的信息压缩,根据用户的问题,进行信息压缩
|
804
|
+
但如果没传入query参数,也会自动改回common机制处理
|
805
|
+
"""
|
806
|
+
if not query:
|
807
|
+
return cls.common(content, extra_prompts, **kwargs)
|
808
|
+
|
687
809
|
return cls.basic(content,
|
688
810
|
extra_prompts or xlprompts.compress_content_with_query.render(query=query),
|
689
811
|
**kwargs)
|
@@ -3,7 +3,7 @@ charset-normalizer
|
|
3
3
|
requests
|
4
4
|
qiniu
|
5
5
|
pyyaml
|
6
|
-
|
6
|
+
loguru
|
7
7
|
humanfriendly
|
8
8
|
tqdm
|
9
9
|
ujson
|
@@ -13,10 +13,11 @@ envariable
|
|
13
13
|
decorator
|
14
14
|
more-itertools
|
15
15
|
fire
|
16
|
-
|
16
|
+
xlrd
|
17
17
|
pympler
|
18
18
|
lxml
|
19
19
|
beautifulsoup4
|
20
20
|
numpy
|
21
21
|
Jinja2
|
22
|
-
pandas>=0.23.4
|
22
|
+
pandas>=0.23.4
|
23
|
+
pillow
|
@@ -48,7 +48,7 @@ _dir = Path(__file__).parent
|
|
48
48
|
|
49
49
|
setup(
|
50
50
|
name='pyxllib', # pip 安装时用的名字
|
51
|
-
version='0.3.
|
51
|
+
version='0.3.127', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
|
52
52
|
author='code4101',
|
53
53
|
author_email='877362867@qq.com',
|
54
54
|
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
|