pyxllib 0.3.127__tar.gz → 0.3.129__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.127/pyxllib.egg-info → pyxllib-0.3.129}/PKG-INFO +1 -1
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/data/pglib.py +50 -47
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/yuquelib.py +3 -3
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/xlsxlib.py +45 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/pupil.py +0 -1
- {pyxllib-0.3.127 → pyxllib-0.3.129/pyxllib.egg-info}/PKG-INFO +1 -1
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib.egg-info/requires.txt +15 -14
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/openai2/_core/chat.py +48 -9
- {pyxllib-0.3.127 → pyxllib-0.3.129}/setup.py +3 -1
- {pyxllib-0.3.127 → pyxllib-0.3.129}/LICENSE +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/MANIFEST.in +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/README.md +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/matcher.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/pupil.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/data/jsonlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/JLineViewer.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/autogui/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/autogui/autogui.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/drissionlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/kq5034lib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/robustprocfile.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/libreoffice.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/movielib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/file/specialist/filelib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/cachetools.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/ipyexec.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/multiprocs.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/newbie.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/scheduler.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/specialist/xllog.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/charclasslib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/jiebalib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/jinjalib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/jscode.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/templates/echart_base.html +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/templates/highlight_code.html +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/templates/latex_editor.html +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/vbacode.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib.egg-info/SOURCES.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/gptlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/data/tiktokenlib.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/openai2/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/openai2/_core/group_chat.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/openai2/openai2.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/requirements.txt +0 -0
- {pyxllib-0.3.127 → pyxllib-0.3.129}/setup.cfg +0 -0
@@ -194,7 +194,7 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
|
|
194
194
|
@classmethod
|
195
195
|
def cvt_type(cls, val):
|
196
196
|
if isinstance(val, (dict, list)):
|
197
|
-
val = json.dumps(val, ensure_ascii=False)
|
197
|
+
val = json.dumps(val, ensure_ascii=False, default=str)
|
198
198
|
# 注意list数组类型读、写都会自动适配py
|
199
199
|
return val
|
200
200
|
|
@@ -781,27 +781,30 @@ class XlprDb(Connection):
|
|
781
781
|
def pretty_val(v):
|
782
782
|
return round_int(v) if v > 100 else round(v, 2)
|
783
783
|
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
784
|
+
try:
|
785
|
+
chart = Line()
|
786
|
+
chart.set_title(title)
|
787
|
+
chart.options['xAxis'][0].update({'min': ls[0][0], 'type': 'time',
|
788
|
+
# 'minInterval': 3600 * 1000 * 24,
|
789
|
+
'name': '时间', 'nameGap': 50, 'nameLocation': 'middle'})
|
790
|
+
chart.options['yAxis'][0].update({'name': yaxis_name, 'nameGap': 50, 'nameLocation': 'middle'})
|
791
|
+
# 目前是比较暴力的方法调整排版,后续要研究是不是能更自动灵活些
|
792
|
+
chart.options['legend'][0].update({'top': '6%', 'icon': 'pin'})
|
793
|
+
chart.options['grid'] = [{'top': 55 + len(all_users_usaged) * 4, 'containLabel': True}]
|
794
|
+
chart.options['tooltip'].opts.update({'axisPointer': {'type': 'cross'}, 'trigger': 'item'})
|
795
|
+
|
796
|
+
chart.add_series(f'total{pretty_val(ls[0][1]):g}', to_list([x[1] for x in ls]), areaStyle={})
|
797
|
+
for user, usaged in all_users_usaged.most_common():
|
798
|
+
usaged = usaged / ((ls[-1][0] - ls[0][0]).total_seconds() / 3600 + 1e-9)
|
799
|
+
chart.add_series(f'{user}{pretty_val(usaged):g}',
|
800
|
+
to_list([x[2].get(user, 0) for x in ls]),
|
801
|
+
areaStyle={}, stack='Total', emphasis={'focus': 'series'})
|
802
|
+
|
803
|
+
return '<body>' + chart.render_embed() + '</body>', sum(all_users_usaged.values())
|
804
|
+
except Exception as e:
|
805
|
+
return str(e), 0
|
806
|
+
|
807
|
+
# cdx_edit
|
805
808
|
def _get_database_trace_total(self, title, yaxis_name, date_trunc, recent, link_name):
|
806
809
|
ls = self.execute(textwrap.dedent(f"""\
|
807
810
|
WITH cte1 AS(
|
@@ -817,7 +820,6 @@ class XlprDb(Connection):
|
|
817
820
|
ORDER BY ttime"""), ((utc_now(8) - recent).isoformat(timespec='seconds'),)).fetchall()
|
818
821
|
return self.database_create_stack_chart(title, ls, yaxis_name=yaxis_name)
|
819
822
|
|
820
|
-
|
821
823
|
def _get_database_trace_per_host(self, db, title, yaxis_name, date_trunc, recent, link_name):
|
822
824
|
ls = self.execute(textwrap.dedent(f"""\
|
823
825
|
WITH cte1 AS (
|
@@ -860,20 +862,20 @@ class XlprDb(Connection):
|
|
860
862
|
if k == '_total':
|
861
863
|
continue
|
862
864
|
all_database_usaged[k] += v * hours
|
863
|
-
|
865
|
+
|
864
866
|
for i, x in enumerate(ls):
|
865
867
|
ct = Counter()
|
866
868
|
for k, v in x[1].items():
|
867
869
|
ct[k] += v
|
868
870
|
ls[i] = (x[0], ct, int(x[2]))
|
869
|
-
|
871
|
+
|
870
872
|
# 2 转图表可视化
|
871
873
|
def to_list(values):
|
872
874
|
return [(x[0], v) for x, v in zip(ls, values)]
|
873
|
-
|
875
|
+
|
874
876
|
def pretty_val(v):
|
875
877
|
return round_int(v) if v > 100 else round(v, 2)
|
876
|
-
|
878
|
+
|
877
879
|
chart = Line()
|
878
880
|
chart.set_title(title)
|
879
881
|
chart.options['xAxis'][0].update({'min': ls[0][0], 'type': 'time',
|
@@ -882,51 +884,52 @@ class XlprDb(Connection):
|
|
882
884
|
chart.options['yAxis'][0].update({'name': yaxis_name, 'nameGap': 50, 'nameLocation': 'middle'})
|
883
885
|
# 目前是比较暴力的方法调整排版,后续要研究是不是能更自动灵活些
|
884
886
|
chart.options['legend'][0].update({'top': '6%', 'icon': 'pin'})
|
885
|
-
chart.options['grid'] = [{'top': 55 + len(all_database_usaged) * 4
|
887
|
+
chart.options['grid'] = [{'top': 55 + len(all_database_usaged) * 4, 'containLabel': True}]
|
886
888
|
chart.options['tooltip'].opts.update({'axisPointer': {'type': 'cross'}, 'trigger': 'item'})
|
887
|
-
|
888
|
-
chart.add_series(f'total {pretty_val(ls[0][2]/1024/1024/1024):g}',
|
889
|
+
|
890
|
+
#chart.add_series(f'total {pretty_val(ls[0][2] / 1024 / 1024 / 1024):g}',
|
891
|
+
# to_list([x[2] / 1024 / 1024 / 1024 for x in ls]), areaStyle={})
|
889
892
|
for database, usaged in all_database_usaged.most_common():
|
890
893
|
usaged = usaged / ((ls[-1][0] - ls[0][0]).total_seconds() / 3600 + 1e-9)
|
891
|
-
chart.add_series(f'{database} {pretty_val(usaged/1024/1024/1024):g}',
|
892
|
-
to_list([x[1].get(database, 0)/1024/1024/1024 for x in ls]),
|
894
|
+
chart.add_series(f'{database} {pretty_val(usaged / 1024 / 1024 / 1024):g}',
|
895
|
+
to_list([x[1].get(database, 0) / 1024 / 1024 / 1024 for x in ls]),
|
893
896
|
areaStyle={}, stack='Total', emphasis={'focus': 'series'})
|
894
897
|
return '<body>' + chart.render_embed() + '</body>'
|
895
898
|
|
896
|
-
def dbview_xldb1_memory(self,recent=datetime.timedelta(days=
|
899
|
+
def dbview_xldb1_memory(self, recent=datetime.timedelta(days=180), date_trunc='day'):
|
897
900
|
from pyxllib.data.echarts import render_echart_html
|
898
|
-
|
899
|
-
db_list = ['
|
901
|
+
|
902
|
+
db_list = ['stdata', 'xlpr', 'st', 'ckz']
|
900
903
|
args = ['数据库大小(GB)', date_trunc, recent, 'xldb1']
|
901
904
|
htmltexts = []
|
902
905
|
|
903
|
-
res = self._get_database_trace_total('
|
906
|
+
res = self._get_database_trace_total('xldb1数据库使用近况', *args)
|
904
907
|
htmltexts.append(res)
|
905
908
|
|
906
909
|
data_stats = []
|
907
|
-
for idx,db in enumerate(db_list,start=1):
|
908
|
-
data_stats.append(self._get_database_trace_per_host(db,f'{db}', *args))
|
910
|
+
for idx, db in enumerate(db_list, start=1):
|
911
|
+
data_stats.append(self._get_database_trace_per_host(db, f'{db}', *args))
|
909
912
|
htmltexts += data_stats
|
910
913
|
|
911
914
|
self.commit()
|
912
915
|
h = render_echart_html('database_cdx', body='<br/>'.join(htmltexts))
|
913
916
|
return h
|
914
|
-
|
915
|
-
def dbview_xldb2_memory(self, recent=datetime.timedelta(days=
|
917
|
+
|
918
|
+
def dbview_xldb2_memory(self, recent=datetime.timedelta(days=180), date_trunc='day'):
|
916
919
|
from pyxllib.data.echarts import render_echart_html
|
917
|
-
|
918
|
-
db_list = ['
|
920
|
+
|
921
|
+
db_list = ['ragdata', 'kq5034']
|
919
922
|
args = ['数据库大小(GB)', date_trunc, recent, 'xldb2']
|
920
923
|
htmltexts = []
|
921
|
-
|
922
|
-
res = self._get_database_trace_total('
|
924
|
+
|
925
|
+
res = self._get_database_trace_total('xldb2数据库使用近况', *args)
|
923
926
|
htmltexts.append(res)
|
924
|
-
|
927
|
+
|
925
928
|
data_stats = []
|
926
929
|
for idx, db in enumerate(db_list, start=1):
|
927
930
|
data_stats.append(self._get_database_trace_per_host(db, f'{db}', *args))
|
928
931
|
htmltexts += data_stats
|
929
|
-
|
932
|
+
|
930
933
|
self.commit()
|
931
934
|
h = render_echart_html('database_cdx', body='<br/>'.join(htmltexts))
|
932
935
|
return h
|
@@ -977,7 +980,7 @@ class XlprDb(Connection):
|
|
977
980
|
h = render_echart_html('cpu_memory', body='<br/>'.join(htmltexts))
|
978
981
|
return h
|
979
982
|
|
980
|
-
def dbview_disk_memory(self, recent=datetime.timedelta(days=
|
983
|
+
def dbview_disk_memory(self, recent=datetime.timedelta(days=360), date_trunc='day'):
|
981
984
|
""" 查看disk硬盘使用近况
|
982
985
|
"""
|
983
986
|
from pyxllib.data.echarts import render_echart_html
|
@@ -20,10 +20,10 @@ class Yuque:
|
|
20
20
|
语雀请求限制:每小时最多 5000 次请求,每秒最多 100 次请求
|
21
21
|
"""
|
22
22
|
|
23
|
-
def __init__(self, token, user_id=None):
|
23
|
+
def __init__(self, token=None, user_id=None):
|
24
24
|
self.base_url = "https://www.yuque.com/api/v2"
|
25
25
|
self.headers = {
|
26
|
-
"X-Auth-Token": token,
|
26
|
+
"X-Auth-Token": token or os.environ.get('YUQUE_TOKEN'),
|
27
27
|
"Content-Type": "application/json"
|
28
28
|
}
|
29
29
|
self._user_id = user_id
|
@@ -197,7 +197,7 @@ class Yuque:
|
|
197
197
|
elif return_mode == 'md':
|
198
198
|
return res['data']['body']
|
199
199
|
elif return_mode == 'title_and_md':
|
200
|
-
return
|
200
|
+
return res["data"]["title"], res["data"]["body"]
|
201
201
|
|
202
202
|
def export_markdown(self, url, output_dir=None, post_mode=1):
|
203
203
|
""" 导出md格式文件
|
@@ -3018,12 +3018,51 @@ def extract_workbook_summary3(file_path, summary_limit_len=4000, **kwargs):
|
|
3018
3018
|
return data
|
3019
3019
|
|
3020
3020
|
|
3021
|
+
def summary2_add_enums(summary2, enum_values):
|
3022
|
+
# 1 预备
|
3023
|
+
if enum_values is True:
|
3024
|
+
enum_values = (20, 10)
|
3025
|
+
max_len, max_num = enum_values
|
3026
|
+
|
3027
|
+
# 2 枚举值
|
3028
|
+
for sheet in summary2['sheets']:
|
3029
|
+
# 2.1 遍历计数
|
3030
|
+
cols = defaultdict(Counter)
|
3031
|
+
for addr, val in sheet['cells'].items():
|
3032
|
+
n = len(str(val))
|
3033
|
+
if not n or n > max_len:
|
3034
|
+
continue
|
3035
|
+
col = re.match(r'[A-Z]+', addr).group()
|
3036
|
+
cols[col][val] += 1
|
3037
|
+
|
3038
|
+
# 2.2 添加枚举值列
|
3039
|
+
enums = {}
|
3040
|
+
keys = sorted(cols.keys(), key=column_index_from_string)
|
3041
|
+
for k in keys:
|
3042
|
+
ct = cols[k]
|
3043
|
+
if len(ct) > max_num:
|
3044
|
+
continue
|
3045
|
+
vals = ct.most_common()
|
3046
|
+
if vals[0][1] == 1: # 都只出现了一次,也不认为是枚举值,跳过。或者是小数据表,一般也能全量展示。
|
3047
|
+
continue
|
3048
|
+
enums[k] = [v for v, _ in vals]
|
3049
|
+
|
3050
|
+
# 2.3 保存
|
3051
|
+
if enums:
|
3052
|
+
sheet['enums'] = enums
|
3053
|
+
# enums2 = json.dumps(enums, ensure_ascii=False, default=str)
|
3054
|
+
# sheet['enums'] = json.loads(enums2)
|
3055
|
+
|
3056
|
+
return summary2
|
3057
|
+
|
3058
|
+
|
3021
3059
|
def extract_workbook_summary3b(file_path,
|
3022
3060
|
summary_limit_len=4000,
|
3023
3061
|
timeout_seconds=10,
|
3024
3062
|
return_mode=0,
|
3025
3063
|
debug=False,
|
3026
3064
|
len_mode=0,
|
3065
|
+
enum_values=False,
|
3027
3066
|
**kwargs):
|
3028
3067
|
"""
|
3029
3068
|
|
@@ -3036,6 +3075,9 @@ def extract_workbook_summary3b(file_path,
|
|
3036
3075
|
:param len_mode:
|
3037
3076
|
0, 使用len作为token长度评估
|
3038
3077
|
1, 使用模型评估实际token长度
|
3078
|
+
:param enum_values: 是否展示每列枚举值
|
3079
|
+
False, 默认不展示
|
3080
|
+
True, 展示,并且默认参数 (20, 10) 表示长度超过20的丢弃,只保留枚举类型不超过10种值的列
|
3039
3081
|
:param kwargs: 其他是summary2读取文件的时候的参数,其实都不太关键,一般不用特地设置
|
3040
3082
|
"""
|
3041
3083
|
res = {}
|
@@ -3056,7 +3098,10 @@ def extract_workbook_summary3b(file_path,
|
|
3056
3098
|
res, load_time = extract_workbook_summary2(file_path, mode=1, return_mode=1, **kwargs)
|
3057
3099
|
# res = convert_to_json_compatible(res)
|
3058
3100
|
summary2_res = copy.deepcopy(res)
|
3101
|
+
if enum_values:
|
3102
|
+
res = summary2_add_enums(res, enum_values)
|
3059
3103
|
summary2_time = time.time() - start_time - load_time
|
3104
|
+
|
3060
3105
|
start_time = time.time()
|
3061
3106
|
if len_mode == 1:
|
3062
3107
|
res = WorkbookSummary3plus.summary2_to_summary3b(res, summary_limit_len)
|
@@ -1223,7 +1223,6 @@ def support_multi_processes(default_processes=1):
|
|
1223
1223
|
cmds.append(f'--{k}') # 添加关键字参数的键
|
1224
1224
|
cmds.append(str(v)) # 添加关键字参数的值
|
1225
1225
|
|
1226
|
-
mpl.add_process_python_module()
|
1227
1226
|
mpl.add_process_python(sys.argv[0], cmds, shell=shell)
|
1228
1227
|
mpl.run_endless()
|
1229
1228
|
|
@@ -23,31 +23,32 @@ pandas>=0.23.4
|
|
23
23
|
pillow
|
24
24
|
|
25
25
|
[xlai]
|
26
|
-
|
26
|
+
visdom
|
27
27
|
opsdroid-get-image-size
|
28
28
|
pynvml
|
29
|
-
|
29
|
+
pillow
|
30
30
|
opencv-python
|
31
31
|
|
32
32
|
[xlall]
|
33
|
-
|
34
|
-
flask-jwt-extended
|
35
|
-
flask
|
36
|
-
fastapi
|
37
|
-
opsdroid-get-image-size
|
38
|
-
html2text
|
39
|
-
ujson
|
33
|
+
zhconv
|
40
34
|
arts
|
41
35
|
uvicorn
|
42
|
-
|
43
|
-
|
36
|
+
html2text
|
37
|
+
openai2
|
38
|
+
opsdroid-get-image-size
|
39
|
+
fastapi
|
40
|
+
flask-restful
|
41
|
+
flask-jwt-extended
|
44
42
|
sentencepiece
|
45
|
-
|
43
|
+
ujson
|
44
|
+
pillow
|
45
|
+
flask
|
46
46
|
xlrd
|
47
|
-
flask-
|
47
|
+
flask-wtf
|
48
|
+
flask-cors
|
48
49
|
opencv-python
|
49
50
|
|
50
51
|
[xlcv]
|
51
|
-
opencv-python
|
52
52
|
opsdroid-get-image-size
|
53
53
|
pillow
|
54
|
+
opencv-python
|
@@ -15,6 +15,7 @@ import logging
|
|
15
15
|
from unittest.mock import MagicMock
|
16
16
|
import math
|
17
17
|
from types import SimpleNamespace
|
18
|
+
from typing import Union
|
18
19
|
|
19
20
|
import requests
|
20
21
|
from loguru import logger as loguru_logger
|
@@ -132,11 +133,11 @@ class Chat:
|
|
132
133
|
|
133
134
|
recently_request_data: dict # 最近一次请求所用的参数
|
134
135
|
default_api_key = None
|
135
|
-
default_base_url = "https://
|
136
|
+
default_base_url = "https://platform.llmprovider.ai/v1"
|
136
137
|
|
137
138
|
def __init__(self,
|
138
139
|
# kwargs
|
139
|
-
api_key: str
|
140
|
+
api_key: Union[str, AKPool] = None,
|
140
141
|
base_url: str = None, # base_url 参数用于修改基础URL
|
141
142
|
timeout=None,
|
142
143
|
max_retries=None,
|
@@ -145,7 +146,7 @@ class Chat:
|
|
145
146
|
model: Literal["gpt-4-1106-preview", "gpt-4-vision-preview",
|
146
147
|
"gpt-4", "gpt-4-0314", "gpt-4-0613",
|
147
148
|
"gpt-4-32k", "gpt-4-32k-0314", "gpt-4-32k-0613", "gpt-3.5-turbo",
|
148
|
-
"gpt-4o", "gpt-4-turbo"] = "gpt-
|
149
|
+
"gpt-4o", "gpt-4-turbo"] = "gpt-4o-mini",
|
149
150
|
# Chat
|
150
151
|
msg_max_count: int = None,
|
151
152
|
# kwargs
|
@@ -176,7 +177,7 @@ class Chat:
|
|
176
177
|
def __1_原作者提供功能(self):
|
177
178
|
pass
|
178
179
|
|
179
|
-
def reset_api_key(self, api_key: str
|
180
|
+
def reset_api_key(self, api_key: Union[str, AKPool]):
|
180
181
|
if isinstance(api_key, AKPool):
|
181
182
|
self._akpool = api_key
|
182
183
|
else:
|
@@ -283,7 +284,7 @@ class Chat:
|
|
283
284
|
def fetch_messages(self):
|
284
285
|
return list(self._messages)
|
285
286
|
|
286
|
-
def add_dialogs(self, *ms: dict
|
287
|
+
def add_dialogs(self, *ms: Union[dict, system_msg, user_msg, assistant_msg]):
|
287
288
|
'''
|
288
289
|
添加历史对话
|
289
290
|
'''
|
@@ -505,7 +506,7 @@ class Chat2:
|
|
505
506
|
gizmo_id=None,
|
506
507
|
*,
|
507
508
|
base_url=None,
|
508
|
-
model='gpt-4o'):
|
509
|
+
model='gpt-4o-mini'):
|
509
510
|
"""
|
510
511
|
:param gizmo_id: gpts的id,比如 https://chatgpt.com/g/g-ABCD1234-ce-shi。则id就是"g-ABCD1234"
|
511
512
|
后面的gpts的名称变了没关系,前面前缀的id不要变就行
|
@@ -563,7 +564,7 @@ class Chat2:
|
|
563
564
|
url = f"{self.base_url}/chat/all-tools"
|
564
565
|
|
565
566
|
headers = self.headers.copy()
|
566
|
-
headers['Content-Type'] = 'application/json'
|
567
|
+
# headers['Content-Type'] = 'application/json'
|
567
568
|
|
568
569
|
# 2 api初步配置
|
569
570
|
payload = self.session_state.copy()
|
@@ -586,7 +587,8 @@ class Chat2:
|
|
586
587
|
self._upload_image(image, parent_payload=payload)
|
587
588
|
|
588
589
|
# 5 请求
|
589
|
-
resp = requests.post(url, headers=headers, data=json.dumps(payload))
|
590
|
+
# resp = requests.post(url, headers=headers, data=json.dumps(payload))
|
591
|
+
resp = requests.post(url, headers=headers, json=payload) # 我觉得应该可以改这样调用,但还没测试
|
590
592
|
resp_json = resp.json()
|
591
593
|
|
592
594
|
# 6 保存状态
|
@@ -597,6 +599,43 @@ class Chat2:
|
|
597
599
|
return '\n\n'.join(resp_json['contents'][-1]['message']['content']['parts'])
|
598
600
|
|
599
601
|
|
602
|
+
class DifyChat:
|
603
|
+
default_base_url = 'http://localhost'
|
604
|
+
|
605
|
+
def __init__(self, app_key, *,
|
606
|
+
conversation_id=None,
|
607
|
+
user=None,
|
608
|
+
base_url=None):
|
609
|
+
self.app_key = app_key
|
610
|
+
self.base_url = base_url or self.default_base_url
|
611
|
+
|
612
|
+
self.headers = {
|
613
|
+
'Authorization': f'Bearer {self.app_key}',
|
614
|
+
}
|
615
|
+
|
616
|
+
self.conversation_state = {
|
617
|
+
'inputs': {},
|
618
|
+
# 'response_mode': 'streaming',
|
619
|
+
'conversation_id': conversation_id or '',
|
620
|
+
'user': user or 'code4101',
|
621
|
+
}
|
622
|
+
|
623
|
+
def query(self, query, *, files=None, images=None):
|
624
|
+
""" files、images等后期再加
|
625
|
+
"""
|
626
|
+
# 1 请求
|
627
|
+
payload = self.conversation_state.copy()
|
628
|
+
payload['query'] = query
|
629
|
+
resp = requests.post(f'{self.base_url}/v1/chat-messages',
|
630
|
+
headers=self.headers, json=payload)
|
631
|
+
resp_json = resp.json() # 如果需要可以打印这个字典看结构
|
632
|
+
|
633
|
+
# 2 保存状态
|
634
|
+
self.conversation_state['conversation_id'] = resp_json.get('conversation_id', '')
|
635
|
+
|
636
|
+
return resp_json['answer']
|
637
|
+
|
638
|
+
|
600
639
|
def __2_信息摘要():
|
601
640
|
pass
|
602
641
|
|
@@ -697,7 +736,7 @@ class CompressContent:
|
|
697
736
|
expect_len=None,
|
698
737
|
max_round=-1,
|
699
738
|
text_spliter=None,
|
700
|
-
model='gpt-
|
739
|
+
model='gpt-4o-mini',
|
701
740
|
soft_merge_prompt=None,
|
702
741
|
calc_len=None,
|
703
742
|
logger=None,
|
@@ -41,14 +41,16 @@ flask-jwt-extended
|
|
41
41
|
fastapi
|
42
42
|
arts
|
43
43
|
uvicorn
|
44
|
+
openai2
|
44
45
|
"""
|
45
46
|
# pywin32
|
47
|
+
# openai2里有个import arts的东西,这个arts才是作者原本的库
|
46
48
|
|
47
49
|
_dir = Path(__file__).parent
|
48
50
|
|
49
51
|
setup(
|
50
52
|
name='pyxllib', # pip 安装时用的名字
|
51
|
-
version='0.3.
|
53
|
+
version='0.3.129', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
|
52
54
|
author='code4101',
|
53
55
|
author_email='877362867@qq.com',
|
54
56
|
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
|