pyxllib 0.3.130__tar.gz → 0.3.131__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.130/pyxllib.egg-info → pyxllib-0.3.131}/PKG-INFO +15 -15
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/xlsxlib.py +1 -1
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/pupil.py +209 -92
- {pyxllib-0.3.130 → pyxllib-0.3.131/pyxllib.egg-info}/PKG-INFO +15 -15
- {pyxllib-0.3.130 → pyxllib-0.3.131}/setup.py +1 -1
- {pyxllib-0.3.130 → pyxllib-0.3.131}/LICENSE +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/MANIFEST.in +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/README.md +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/matcher.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/pupil.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/data/jsonlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/data/pglib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/JLineViewer.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/autogui/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/autogui/autogui.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/drissionlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/kq5034lib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/robustprocfile.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/ext/yuquelib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/libreoffice.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/movielib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/specialist/filelib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/file/xlsyncfile.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/cachetools.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/ipyexec.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/multiprocs.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/newbie.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/scheduler.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/specialist/xllog.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/charclasslib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/jiebalib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/jinjalib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/jscode.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/templates/echart_base.html +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/templates/highlight_code.html +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/templates/latex_editor.html +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/vbacode.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib.egg-info/SOURCES.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib.egg-info/requires.txt +14 -14
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/gptlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/data/tiktokenlib.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/openai2/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/openai2/_core/chat.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/openai2/_core/group_chat.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/openai2/openai2.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/requirements.txt +0 -0
- {pyxllib-0.3.130 → pyxllib-0.3.131}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyxllib
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.131
|
4
4
|
Summary: 厦门理工模式识别团队通用python代码工具库
|
5
5
|
Home-page: https://github.com/XLPRUtils/pyxllib
|
6
6
|
Author: code4101
|
@@ -38,33 +38,33 @@ Requires-Dist: Jinja2
|
|
38
38
|
Requires-Dist: pandas>=0.23.4
|
39
39
|
Requires-Dist: pillow
|
40
40
|
Provides-Extra: xlcv
|
41
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
41
42
|
Requires-Dist: opencv-python; extra == "xlcv"
|
42
43
|
Requires-Dist: pillow; extra == "xlcv"
|
43
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
44
44
|
Provides-Extra: xlai
|
45
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
46
45
|
Requires-Dist: pynvml; extra == "xlai"
|
47
|
-
Requires-Dist: opencv-python; extra == "xlai"
|
48
46
|
Requires-Dist: visdom; extra == "xlai"
|
47
|
+
Requires-Dist: opencv-python; extra == "xlai"
|
49
48
|
Requires-Dist: pillow; extra == "xlai"
|
49
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
50
50
|
Provides-Extra: xlall
|
51
|
+
Requires-Dist: flask-cors; extra == "xlall"
|
52
|
+
Requires-Dist: arts; extra == "xlall"
|
53
|
+
Requires-Dist: uvicorn; extra == "xlall"
|
54
|
+
Requires-Dist: openai2; extra == "xlall"
|
55
|
+
Requires-Dist: opencv-python; extra == "xlall"
|
56
|
+
Requires-Dist: pillow; extra == "xlall"
|
57
|
+
Requires-Dist: sentencepiece; extra == "xlall"
|
51
58
|
Requires-Dist: xlrd; extra == "xlall"
|
52
59
|
Requires-Dist: html2text; extra == "xlall"
|
53
|
-
Requires-Dist: flask-restful; extra == "xlall"
|
54
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
55
|
-
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
56
60
|
Requires-Dist: flask; extra == "xlall"
|
57
|
-
Requires-Dist: ujson; extra == "xlall"
|
58
|
-
Requires-Dist: arts; extra == "xlall"
|
59
61
|
Requires-Dist: flask-wtf; extra == "xlall"
|
60
|
-
Requires-Dist: opencv-python; extra == "xlall"
|
61
|
-
Requires-Dist: sentencepiece; extra == "xlall"
|
62
|
-
Requires-Dist: openai2; extra == "xlall"
|
63
62
|
Requires-Dist: fastapi; extra == "xlall"
|
64
63
|
Requires-Dist: zhconv; extra == "xlall"
|
65
|
-
Requires-Dist:
|
66
|
-
Requires-Dist:
|
67
|
-
Requires-Dist: flask-
|
64
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
65
|
+
Requires-Dist: ujson; extra == "xlall"
|
66
|
+
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
67
|
+
Requires-Dist: flask-restful; extra == "xlall"
|
68
68
|
|
69
69
|
# 1 install
|
70
70
|
|
@@ -2870,7 +2870,7 @@ class WorkbookSummary3:
|
|
2870
2870
|
|
2871
2871
|
# 4 否则每张表按照比例删单元格,只保留前面部分的单元格
|
2872
2872
|
# todo 这里应该有更好的筛选机制,后续可以思考思考
|
2873
|
-
left_rate = min((summary_limit_len + cur_summary_len) / 2 * cur_summary_len, 0.9) # 首轮减小一点调整幅度
|
2873
|
+
left_rate = min((summary_limit_len + cur_summary_len) / (2 * cur_summary_len), 0.9) # 首轮减小一点调整幅度
|
2874
2874
|
while True:
|
2875
2875
|
for i, st in enumerate(y['sheets']):
|
2876
2876
|
if i == active_sheet_index:
|
@@ -7,9 +7,11 @@
|
|
7
7
|
|
8
8
|
""" 封装一些代码开发中常用的功能,工程组件 """
|
9
9
|
|
10
|
-
import builtins
|
11
10
|
from collections import Counter, UserDict
|
12
11
|
from concurrent.futures import ThreadPoolExecutor
|
12
|
+
from types import SimpleNamespace
|
13
|
+
from urllib.parse import urlparse
|
14
|
+
import builtins
|
13
15
|
import ctypes
|
14
16
|
import datetime
|
15
17
|
import functools
|
@@ -24,6 +26,7 @@ import os
|
|
24
26
|
import pprint
|
25
27
|
import queue
|
26
28
|
import random
|
29
|
+
import re
|
27
30
|
import signal
|
28
31
|
import socket
|
29
32
|
import socketserver
|
@@ -33,11 +36,13 @@ import tempfile
|
|
33
36
|
import threading
|
34
37
|
import time
|
35
38
|
import traceback
|
36
|
-
from
|
37
|
-
import re
|
39
|
+
from unittest.mock import Mock
|
38
40
|
|
39
41
|
from pyxllib.prog.newbie import classproperty, typename
|
40
42
|
|
43
|
+
from deprecated import deprecated
|
44
|
+
# from loguru import logger
|
45
|
+
|
41
46
|
|
42
47
|
def system_information():
|
43
48
|
"""主要是测试一些系统变量值,顺便再演示一次Timer用法"""
|
@@ -981,145 +986,257 @@ class OutputLogger(logging.Logger):
|
|
981
986
|
self.print(msg)
|
982
987
|
|
983
988
|
|
984
|
-
class
|
985
|
-
"""
|
989
|
+
class ProgramWorker(SimpleNamespace):
|
990
|
+
"""
|
991
|
+
代表一个单独的程序(进程),基于 SimpleNamespace 实现。
|
992
|
+
"""
|
986
993
|
|
987
|
-
def __init__(self, name,
|
988
|
-
raw_cmd=None):
|
994
|
+
def __init__(self, name, program, port=None, locations=None,
|
995
|
+
raw_cmd=None, **attrs):
|
989
996
|
"""
|
990
|
-
|
991
|
-
:param
|
992
|
-
:param process: 进程对象
|
997
|
+
:param name: 程序昵称
|
998
|
+
:param program: 程序对象
|
993
999
|
:param port: 是否有执行所在端口
|
994
1000
|
:param locations: 是否有url地址映射,一般用于nginx等配置
|
995
1001
|
"""
|
1002
|
+
super().__init__(**attrs)
|
996
1003
|
self.name = name
|
997
|
-
self.
|
1004
|
+
self.program = program
|
1005
|
+
self.raw_cmd = raw_cmd
|
1006
|
+
|
1007
|
+
# 这两个是比较特别的属性,在我的工程框架中常用
|
998
1008
|
self.port = port
|
999
1009
|
self.locations = locations
|
1000
|
-
self.raw_cmd = raw_cmd
|
1001
1010
|
|
1002
1011
|
def terminate(self):
|
1003
|
-
"""
|
1004
|
-
|
1005
|
-
|
1012
|
+
"""
|
1013
|
+
比较优雅结束进程的方法
|
1014
|
+
"""
|
1015
|
+
if self.program is not None:
|
1016
|
+
self.program.terminate()
|
1006
1017
|
|
1007
1018
|
def kill(self):
|
1008
|
-
"""
|
1009
|
-
|
1010
|
-
|
1019
|
+
"""
|
1020
|
+
有时候需要强硬的kill方法来结束进程
|
1021
|
+
"""
|
1022
|
+
if self.program is not None:
|
1023
|
+
self.program.kill()
|
1011
1024
|
|
1012
1025
|
|
1013
|
-
class
|
1014
|
-
"""
|
1026
|
+
class MultiProgramLauncher:
|
1027
|
+
"""
|
1028
|
+
管理多个程序的启动与终止
|
1029
|
+
"""
|
1015
1030
|
|
1016
1031
|
def __init__(self):
|
1017
1032
|
self.workers = []
|
1018
1033
|
|
1019
|
-
def
|
1034
|
+
def __1_各种添加进程的机制(self):
|
1035
|
+
pass
|
1036
|
+
|
1037
|
+
def _set_pdeathsig(self, sig=None):
|
1038
|
+
""" 在主服务退出时,这些程序也会全部自动关闭 """
|
1039
|
+
|
1040
|
+
def callable():
|
1041
|
+
import signal
|
1042
|
+
sig2 = signal.SIGTERM if sig is None else sig
|
1043
|
+
libc = ctypes.CDLL("libc.so.6")
|
1044
|
+
return libc.prctl(1, sig2)
|
1045
|
+
|
1046
|
+
if sys.platform == 'win32':
|
1047
|
+
# windows系统暂设为空
|
1048
|
+
return None
|
1049
|
+
else:
|
1050
|
+
return callable
|
1051
|
+
|
1052
|
+
def add_program_cmd(self,
|
1020
1053
|
cmd,
|
1021
1054
|
name=None,
|
1022
1055
|
shell=False,
|
1023
|
-
|
1056
|
+
run=True,
|
1057
|
+
**attrs):
|
1024
1058
|
"""
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1059
|
+
启动一个程序,或仅存储任务,并添加进管理列表
|
1060
|
+
|
1061
|
+
:param cmd: 启动程序的命令
|
1062
|
+
:param name: 程序名称,如果未提供则从cmd中自动获取
|
1063
|
+
:param shell:
|
1064
|
+
False,(优先推荐)直接跟系统交互,此时cmd应该输入数组格式
|
1065
|
+
True,启用shell进行交互操作,这种情况会更适合管道等模式的处理,此时cmd应该输入字符串格式
|
1066
|
+
:param attrs: 其他需要传递给ProgramWorker的参数
|
1067
|
+
:return: 返回一个ProgramWorker实例,表示启动的程序或存储的任务
|
1029
1068
|
"""
|
1069
|
+
# 1 如果未显式传入name,自动从cmd中获取程序名称
|
1070
|
+
# logger.info(cmd)
|
1030
1071
|
if name is None:
|
1031
|
-
|
1032
|
-
name =
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1072
|
+
_cmd = cmd.split() if isinstance(cmd, str) else cmd
|
1073
|
+
name = _cmd[0]
|
1074
|
+
|
1075
|
+
# 2 启动或模拟进程
|
1076
|
+
if run:
|
1077
|
+
# 2.1 运行进程
|
1078
|
+
if sys.platform == 'win32':
|
1079
|
+
proc = subprocess.Popen(cmd, shell=shell)
|
1080
|
+
else:
|
1081
|
+
proc = subprocess.Popen(cmd, shell=shell, preexec_fn=self._set_pdeathsig())
|
1036
1082
|
else:
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1083
|
+
# 2.2 如果run=False,使用Mock对象占位
|
1084
|
+
proc = Mock() # 模拟一个proc对象
|
1085
|
+
proc.pid = None
|
1086
|
+
proc.poll.return_value = 'tag' # 仅标签,此处未实际启动
|
1040
1087
|
|
1041
|
-
|
1088
|
+
# 3 创建ProgramWorker实例并添加到workers列表中
|
1089
|
+
worker = ProgramWorker(name, proc, raw_cmd=cmd, **attrs)
|
1042
1090
|
self.workers.append(worker)
|
1091
|
+
|
1043
1092
|
return worker
|
1044
1093
|
|
1045
|
-
def
|
1046
|
-
"""
|
1094
|
+
def add_program_cmd2(self, cmd, ports=1, name=None, **kwargs):
|
1095
|
+
"""
|
1096
|
+
增强版 add_program_cmd,支持 ports 的处理
|
1047
1097
|
|
1048
|
-
:param
|
1049
|
-
|
1050
|
-
|
1098
|
+
:param ports:
|
1099
|
+
int 表示要开启的进程数,端口号随机生成;
|
1100
|
+
list 表示指定的端口号
|
1101
|
+
None 不做特殊配置
|
1102
|
+
"""
|
1103
|
+
# 1 处理 ports 参数,找到空闲端口或使用指定端口
|
1104
|
+
if isinstance(ports, int):
|
1105
|
+
ports = find_free_ports(ports)
|
1106
|
+
|
1107
|
+
# 2 处理 locations 参数,自动设置默认 URL 映射
|
1108
|
+
if name is None:
|
1109
|
+
_cmd = cmd.split() if isinstance(cmd, str) else cmd
|
1110
|
+
name = _cmd[0]
|
1111
|
+
|
1112
|
+
# 2 遍历端口,依次启动进程
|
1113
|
+
workers = []
|
1114
|
+
if ports:
|
1115
|
+
for port in ports:
|
1116
|
+
cmd_with_port = cmd + [f'--port', str(port)]
|
1117
|
+
kwargs['port'] = port
|
1118
|
+
worker = self.add_program_cmd(cmd_with_port, name=f'{name}:{port}', **kwargs)
|
1119
|
+
workers.append(worker)
|
1120
|
+
else:
|
1121
|
+
workers = [self.add_program_cmd(cmd, name=name, **kwargs)]
|
1122
|
+
|
1123
|
+
return workers
|
1124
|
+
|
1125
|
+
def add_program_cmd3(self, cmd, ports=None, locations=None, *, devices=None, **kwargs):
|
1126
|
+
"""
|
1127
|
+
增强版 add_program_cmd2,支持 devices 等其他更多特殊的扩展参数的处理
|
1128
|
+
|
1129
|
+
:param locations: URL 映射规则
|
1130
|
+
:param int|str|None devices: 使用的设备编号(显卡编号或 CPU)
|
1131
|
+
未设置的时候,使用cpu运行
|
1132
|
+
:return: 返回一个包含所有启动程序的 worker 列表。
|
1051
1133
|
"""
|
1052
|
-
|
1134
|
+
# 1 处理locations
|
1135
|
+
if locations:
|
1136
|
+
if isinstance(locations, str):
|
1137
|
+
locations = [locations]
|
1138
|
+
for i, x in enumerate(locations):
|
1139
|
+
if not isinstance(x, dict):
|
1140
|
+
locations[i] = {x: x}
|
1141
|
+
kwargs['locations'] = locations
|
1142
|
+
|
1143
|
+
# 2 处理 devices 参数,设置显卡编号或使用 CPU
|
1144
|
+
if devices is not None:
|
1145
|
+
os.environ['CUDA_VISIBLE_DEVICES'] = str(devices)
|
1146
|
+
elif 'CUDA_VISIBLE_DEVICES' in os.environ:
|
1147
|
+
del os.environ['CUDA_VISIBLE_DEVICES'] # 如果没设置 devices,就清除环境变量,使用 CPU
|
1148
|
+
|
1149
|
+
# 3 处理 ports 参数
|
1150
|
+
workers = self.add_program_cmd2(cmd, ports=ports, **kwargs)
|
1151
|
+
|
1152
|
+
return workers
|
1153
|
+
|
1154
|
+
def add_program_python(self, py_file, args='',
|
1155
|
+
ports=None, locations=None,
|
1156
|
+
name=None, shell=False, executer=None,
|
1157
|
+
**kwargs):
|
1158
|
+
""" 添加并启动一个Python文件作为后台程序 """
|
1159
|
+
if executer is None:
|
1160
|
+
executer = sys.executable
|
1161
|
+
cmd = [str(executer), str(py_file)]
|
1053
1162
|
if isinstance(args, str):
|
1054
1163
|
cmd.append(args)
|
1055
1164
|
else:
|
1056
1165
|
cmd += list(args)
|
1166
|
+
return self.add_program_cmd3(cmd, name, ports=ports, locations=locations, shell=shell, **kwargs)
|
1057
1167
|
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1168
|
+
def add_program_python_module(self, module, args='',
|
1169
|
+
ports=None, locations=None,
|
1170
|
+
name=None, shell=False, executer=None,
|
1171
|
+
**kwargs):
|
1172
|
+
"""
|
1173
|
+
添加并启动一个Python模块作为后台程序
|
1062
1174
|
|
1063
|
-
|
1175
|
+
:param module: 要执行的Python模块名(python -m 后面的部分)
|
1064
1176
|
:param str|list args: 模块的参数
|
1065
1177
|
:param name: 进程的名称,默认为模块名
|
1066
|
-
|
1067
|
-
|
1178
|
+
"""
|
1179
|
+
if executer is None:
|
1180
|
+
executer = sys.executable
|
1181
|
+
cmd = [f'{executer}', '-m', f'{module}']
|
1068
1182
|
if isinstance(args, str):
|
1069
1183
|
cmd.append(args)
|
1070
1184
|
else:
|
1071
1185
|
cmd += list(args)
|
1186
|
+
return self.add_program_cmd3(cmd, ports=ports, name=name, locations=locations, shell=shell, **kwargs)
|
1072
1187
|
|
1073
|
-
|
1188
|
+
def __2_多进程管理(self):
|
1189
|
+
pass
|
1074
1190
|
|
1075
1191
|
def stop_all(self):
|
1076
|
-
"""
|
1192
|
+
""" 停止所有后台程序 """
|
1077
1193
|
for worker in self.workers:
|
1078
|
-
worker.
|
1194
|
+
worker.terminate()
|
1079
1195
|
self.workers = []
|
1080
1196
|
|
1081
|
-
def _set_pdeathsig(self, sig=None):
|
1082
|
-
""" 在主服务退出时,这些进程也会全部自动关闭 """
|
1083
|
-
|
1084
|
-
def callable():
|
1085
|
-
import signal
|
1086
|
-
sig2 = signal.SIGTERM if sig is None else sig
|
1087
|
-
libc = ctypes.CDLL("libc.so.6")
|
1088
|
-
return libc.prctl(1, sig2)
|
1089
|
-
|
1090
|
-
if sys.platform == 'win32':
|
1091
|
-
# windows系统暂设为空
|
1092
|
-
return None
|
1093
|
-
else:
|
1094
|
-
return callable
|
1095
|
-
|
1096
1197
|
def run_endless(self):
|
1097
|
-
"""
|
1198
|
+
"""
|
1199
|
+
一直运行,直到用户输入 kill 命令或 Ctrl+C
|
1098
1200
|
|
1099
|
-
|
1201
|
+
poll:
|
1100
1202
|
如果进程仍在运行,poll()方法返回None。
|
1101
1203
|
如果进程已经结束,poll()方法返回进程的退出码(exit code)。
|
1102
1204
|
如果进程正常结束,退出码通常为0。
|
1103
1205
|
如果进程异常结束,退出码通常是一个非零值,表示异常的类型或错误码。
|
1104
|
-
|
1206
|
+
"""
|
1105
1207
|
import pandas as pd
|
1106
1208
|
from pyxllib.algo.stat import print_full_dataframe
|
1107
1209
|
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1210
|
+
try:
|
1211
|
+
while True:
|
1212
|
+
cmd = input('>>>')
|
1213
|
+
if cmd == 'kill':
|
1214
|
+
self.stop_all()
|
1215
|
+
break
|
1216
|
+
elif cmd == 'count':
|
1217
|
+
# 需要实际检查现有程序
|
1218
|
+
m = sum([1 for worker in self.workers if worker.program.poll() is None])
|
1219
|
+
print(f'有{m}个程序正在运行')
|
1220
|
+
elif cmd == 'list': # 列出所有程序(转df查看)
|
1221
|
+
ls = []
|
1222
|
+
for worker in self.workers:
|
1223
|
+
ls.append([worker.name, worker.program.pid, worker.program.poll(), worker.raw_cmd])
|
1224
|
+
df = pd.DataFrame(ls, columns=['name', 'pid', 'poll', 'args'])
|
1225
|
+
print_full_dataframe(df)
|
1226
|
+
except KeyboardInterrupt:
|
1227
|
+
print("\n检测到 Ctrl+C,正在终止所有程序...")
|
1228
|
+
self.stop_all()
|
1229
|
+
print("所有程序已终止,退出。")
|
1230
|
+
|
1231
|
+
|
1232
|
+
@deprecated(reason='已改名ProgramWorker')
|
1233
|
+
class ProcessWorker(ProgramWorker):
|
1234
|
+
pass
|
1235
|
+
|
1236
|
+
|
1237
|
+
@deprecated(reason='已改名MultiProgramLauncher')
|
1238
|
+
class MultiProcessLauncher(MultiProgramLauncher):
|
1239
|
+
pass
|
1123
1240
|
|
1124
1241
|
|
1125
1242
|
def support_multi_processes_hyx(default_processes=1):
|
@@ -1168,14 +1285,14 @@ def support_multi_processes_hyx(default_processes=1):
|
|
1168
1285
|
|
1169
1286
|
# todo 这样使用有个坑,process_count、process_id都是以str类型传入的,开发者下游使用容易出问题
|
1170
1287
|
cmds = [
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1288
|
+
'run_python_module',
|
1289
|
+
'--wait_mode',
|
1290
|
+
'60',
|
1291
|
+
module_name,
|
1292
|
+
func.__name__,
|
1293
|
+
'--process_count', str(process_count),
|
1294
|
+
'--process_id', str(i)
|
1295
|
+
]
|
1179
1296
|
cmds.extend(map(str, args)) # 添加位置参数
|
1180
1297
|
for k, v in kwargs.items():
|
1181
1298
|
cmds.append(f'--{k}') # 添加关键字参数的键
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyxllib
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.131
|
4
4
|
Summary: 厦门理工模式识别团队通用python代码工具库
|
5
5
|
Home-page: https://github.com/XLPRUtils/pyxllib
|
6
6
|
Author: code4101
|
@@ -38,33 +38,33 @@ Requires-Dist: Jinja2
|
|
38
38
|
Requires-Dist: pandas>=0.23.4
|
39
39
|
Requires-Dist: pillow
|
40
40
|
Provides-Extra: xlcv
|
41
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
41
42
|
Requires-Dist: opencv-python; extra == "xlcv"
|
42
43
|
Requires-Dist: pillow; extra == "xlcv"
|
43
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
44
44
|
Provides-Extra: xlai
|
45
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
46
45
|
Requires-Dist: pynvml; extra == "xlai"
|
47
|
-
Requires-Dist: opencv-python; extra == "xlai"
|
48
46
|
Requires-Dist: visdom; extra == "xlai"
|
47
|
+
Requires-Dist: opencv-python; extra == "xlai"
|
49
48
|
Requires-Dist: pillow; extra == "xlai"
|
49
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
50
50
|
Provides-Extra: xlall
|
51
|
+
Requires-Dist: flask-cors; extra == "xlall"
|
52
|
+
Requires-Dist: arts; extra == "xlall"
|
53
|
+
Requires-Dist: uvicorn; extra == "xlall"
|
54
|
+
Requires-Dist: openai2; extra == "xlall"
|
55
|
+
Requires-Dist: opencv-python; extra == "xlall"
|
56
|
+
Requires-Dist: pillow; extra == "xlall"
|
57
|
+
Requires-Dist: sentencepiece; extra == "xlall"
|
51
58
|
Requires-Dist: xlrd; extra == "xlall"
|
52
59
|
Requires-Dist: html2text; extra == "xlall"
|
53
|
-
Requires-Dist: flask-restful; extra == "xlall"
|
54
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
55
|
-
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
56
60
|
Requires-Dist: flask; extra == "xlall"
|
57
|
-
Requires-Dist: ujson; extra == "xlall"
|
58
|
-
Requires-Dist: arts; extra == "xlall"
|
59
61
|
Requires-Dist: flask-wtf; extra == "xlall"
|
60
|
-
Requires-Dist: opencv-python; extra == "xlall"
|
61
|
-
Requires-Dist: sentencepiece; extra == "xlall"
|
62
|
-
Requires-Dist: openai2; extra == "xlall"
|
63
62
|
Requires-Dist: fastapi; extra == "xlall"
|
64
63
|
Requires-Dist: zhconv; extra == "xlall"
|
65
|
-
Requires-Dist:
|
66
|
-
Requires-Dist:
|
67
|
-
Requires-Dist: flask-
|
64
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
65
|
+
Requires-Dist: ujson; extra == "xlall"
|
66
|
+
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
67
|
+
Requires-Dist: flask-restful; extra == "xlall"
|
68
68
|
|
69
69
|
# 1 install
|
70
70
|
|
@@ -50,7 +50,7 @@ _dir = Path(__file__).parent
|
|
50
50
|
|
51
51
|
setup(
|
52
52
|
name='pyxllib', # pip 安装时用的名字
|
53
|
-
version='0.3.
|
53
|
+
version='0.3.131', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
|
54
54
|
author='code4101',
|
55
55
|
author_email='877362867@qq.com',
|
56
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
|