pyxllib 0.3.143__tar.gz → 0.3.144__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.143/pyxllib.egg-info → pyxllib-0.3.144}/PKG-INFO +14 -14
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/multiprogs.py +146 -11
- {pyxllib-0.3.143 → pyxllib-0.3.144/pyxllib.egg-info}/PKG-INFO +14 -14
- {pyxllib-0.3.143 → pyxllib-0.3.144}/setup.py +1 -1
- {pyxllib-0.3.143 → pyxllib-0.3.144}/LICENSE +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/MANIFEST.in +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/README.md +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/matcher.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/pupil.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/autogui/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/autogui/activewin.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/autogui/all.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/autogui/autogui.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/autogui/uiautolib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/autogui/wechat.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/autogui/wechat_msg.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/data/jsonlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/data/pglib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/JLineViewer.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/drissionlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/kq5034lib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/robustprocfile.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/ext/yuquelib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/libreoffice.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/movielib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/specialist/filelib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/xlsxlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/file/xlsyncfile.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/cachetools.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/ipyexec.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/newbie.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/pupil.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/specialist/xllog.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/charclasslib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/jiebalib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/jinjalib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/jscode.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/templates/echart_base.html +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/templates/highlight_code.html +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/templates/latex_editor.html +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/vbacode.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib.egg-info/SOURCES.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib.egg-info/requires.txt +13 -13
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/gptlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/data/tiktokenlib.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/openai2/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/openai2/_core/chat.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/openai2/_core/group_chat.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/openai2/openai2.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/requirements.txt +0 -0
- {pyxllib-0.3.143 → pyxllib-0.3.144}/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.144
|
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: opencv-python; extra == "xlcv"
|
42
41
|
Requires-Dist: pillow; extra == "xlcv"
|
43
42
|
Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
43
|
+
Requires-Dist: opencv-python; extra == "xlcv"
|
44
44
|
Provides-Extra: xlai
|
45
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
46
45
|
Requires-Dist: opencv-python; extra == "xlai"
|
46
|
+
Requires-Dist: visdom; extra == "xlai"
|
47
47
|
Requires-Dist: pillow; extra == "xlai"
|
48
48
|
Requires-Dist: pynvml; extra == "xlai"
|
49
|
-
Requires-Dist:
|
49
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
50
50
|
Provides-Extra: xlall
|
51
|
-
Requires-Dist: flask-
|
52
|
-
Requires-Dist: fastapi; extra == "xlall"
|
51
|
+
Requires-Dist: flask-wtf; extra == "xlall"
|
53
52
|
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
53
|
+
Requires-Dist: flask-restful; extra == "xlall"
|
54
|
+
Requires-Dist: uvicorn; extra == "xlall"
|
55
|
+
Requires-Dist: openai2; extra == "xlall"
|
54
56
|
Requires-Dist: ujson; extra == "xlall"
|
57
|
+
Requires-Dist: fastapi; extra == "xlall"
|
58
|
+
Requires-Dist: html2text; extra == "xlall"
|
55
59
|
Requires-Dist: zhconv; extra == "xlall"
|
56
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
57
|
-
Requires-Dist: openai2; extra == "xlall"
|
58
60
|
Requires-Dist: opencv-python; extra == "xlall"
|
59
|
-
Requires-Dist: arts; extra == "xlall"
|
60
61
|
Requires-Dist: pillow; extra == "xlall"
|
61
|
-
Requires-Dist:
|
62
|
+
Requires-Dist: flask; extra == "xlall"
|
62
63
|
Requires-Dist: sentencepiece; extra == "xlall"
|
63
|
-
Requires-Dist: flask-
|
64
|
-
Requires-Dist:
|
65
|
-
Requires-Dist:
|
64
|
+
Requires-Dist: flask-cors; extra == "xlall"
|
65
|
+
Requires-Dist: arts; extra == "xlall"
|
66
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
66
67
|
Requires-Dist: xlrd; extra == "xlall"
|
67
|
-
Requires-Dist: flask; extra == "xlall"
|
68
68
|
|
69
69
|
# 1 install
|
70
70
|
|
@@ -4,6 +4,7 @@
|
|
4
4
|
# @Email : 877362867@qq.com
|
5
5
|
# @Date : 2024/11/12
|
6
6
|
|
7
|
+
from collections import defaultdict
|
7
8
|
from types import SimpleNamespace
|
8
9
|
from unittest.mock import Mock
|
9
10
|
import ctypes
|
@@ -13,13 +14,14 @@ import socketserver
|
|
13
14
|
import subprocess
|
14
15
|
import sys
|
15
16
|
import time
|
16
|
-
import
|
17
|
+
import textwrap
|
17
18
|
|
18
19
|
from deprecated import deprecated
|
19
20
|
from loguru import logger
|
20
21
|
from croniter import croniter
|
21
22
|
|
22
23
|
from pyxllib.prog.specialist import parse_datetime
|
24
|
+
from pyxllib.file.specialist import XlPath
|
23
25
|
|
24
26
|
|
25
27
|
def __1_定时工具():
|
@@ -202,10 +204,18 @@ class ProgramWorker(SimpleNamespace):
|
|
202
204
|
proc.pid = None
|
203
205
|
proc.poll.return_value = 'tag'
|
204
206
|
self.program = proc
|
205
|
-
|
206
|
-
|
207
|
+
return self.program
|
208
|
+
|
209
|
+
kwargs = {}
|
210
|
+
for name in ['stdin', 'stdout', 'stderr']:
|
211
|
+
if hasattr(self, name):
|
212
|
+
kwargs[name] = getattr(self, name)
|
213
|
+
|
214
|
+
if sys.platform == 'win32':
|
215
|
+
self.program = subprocess.Popen(self.cmd, shell=self.shell, **kwargs)
|
207
216
|
else:
|
208
|
-
self.program = subprocess.Popen(self.cmd, shell=self.shell,
|
217
|
+
self.program = subprocess.Popen(self.cmd, shell=self.shell, **kwargs,
|
218
|
+
preexec_fn=self._set_pdeathsig())
|
209
219
|
|
210
220
|
return self.program
|
211
221
|
|
@@ -320,9 +330,9 @@ class MultiProgramLauncher:
|
|
320
330
|
elif isinstance(schedule, str):
|
321
331
|
from apscheduler.triggers.cron import CronTrigger
|
322
332
|
cron_parts = schedule.split()
|
323
|
-
# 如果是 5 个字段,则补齐 "秒" 字段为 '
|
333
|
+
# 如果是 5 个字段,则补齐 "秒" 字段为 '0'
|
324
334
|
if len(cron_parts) == 5:
|
325
|
-
cron_parts.insert(0, '
|
335
|
+
cron_parts.insert(0, '0')
|
326
336
|
# 检查是否为有效的 6 字段 cron 表达式
|
327
337
|
if len(cron_parts) == 6:
|
328
338
|
# 统一处理为 6 字段格式
|
@@ -389,9 +399,6 @@ class MultiProgramLauncher:
|
|
389
399
|
|
390
400
|
return worker
|
391
401
|
|
392
|
-
def __2_各种添加进程的机制(self):
|
393
|
-
pass
|
394
|
-
|
395
402
|
def add_program_cmd2(self, cmd, ports=1, name=None, **kwargs):
|
396
403
|
"""
|
397
404
|
增强版 add_program_cmd,支持 ports 的处理
|
@@ -452,6 +459,9 @@ class MultiProgramLauncher:
|
|
452
459
|
|
453
460
|
return workers
|
454
461
|
|
462
|
+
def __2_各种添加进程的机制(self):
|
463
|
+
pass
|
464
|
+
|
455
465
|
def add_program_python(self, py_file, args='',
|
456
466
|
ports=None, locations=None,
|
457
467
|
name=None, shell=False, executer=None,
|
@@ -489,7 +499,129 @@ class MultiProgramLauncher:
|
|
489
499
|
cmd += list(args)
|
490
500
|
return self.add_program_cmd3(cmd, ports=ports, name=name, locations=locations, shell=shell, **kwargs)
|
491
501
|
|
492
|
-
def
|
502
|
+
def add_prog(self, prog, extcmds='',
|
503
|
+
ports=None, locations=None, *,
|
504
|
+
name=None, devices=None,
|
505
|
+
executer=None,
|
506
|
+
run=True,
|
507
|
+
schedule=None,
|
508
|
+
):
|
509
|
+
"""
|
510
|
+
:param int|list ports:
|
511
|
+
:param str|list extcmds:
|
512
|
+
"""
|
513
|
+
if locations is None:
|
514
|
+
locations = f'/api/{prog.split('.')[-1]}'
|
515
|
+
self.add_program_python_module(prog,
|
516
|
+
extcmds,
|
517
|
+
ports=ports, locations=locations,
|
518
|
+
name=name, devices=devices,
|
519
|
+
executer=executer,
|
520
|
+
run=run,
|
521
|
+
schedule=schedule,
|
522
|
+
)
|
523
|
+
|
524
|
+
def add_server(self, prog, ports=None, locations=None, *args, **kwargs):
|
525
|
+
""" 我自己部署的服务,基本都有特定的start_server启动函数 """
|
526
|
+
self.add_prog(prog, extcmds='start_server', ports=ports, locations=locations, *args, **kwargs)
|
527
|
+
|
528
|
+
def add_os_command_task(self,
|
529
|
+
script_content,
|
530
|
+
extension=None,
|
531
|
+
shell=False,
|
532
|
+
run=True,
|
533
|
+
name=None,
|
534
|
+
schedule=None,
|
535
|
+
**kwargs):
|
536
|
+
"""
|
537
|
+
添加一个操作系统命令或脚本(如 .bat、.sh、.ps1 等)并启动。
|
538
|
+
|
539
|
+
:param script_content: 脚本的内容(字符串)
|
540
|
+
:param extension: 脚本文件的扩展名(如 .bat, .sh, .ps1);如果为 None 则根据操作系统自动选择
|
541
|
+
:param shell: 是否使用 shell 执行
|
542
|
+
:param run: 是否立即启动
|
543
|
+
:param name: 程序名称
|
544
|
+
:param schedule: 定时任务配置
|
545
|
+
"""
|
546
|
+
# 1 自动选择脚本文件扩展名
|
547
|
+
if extension is None:
|
548
|
+
if sys.platform == 'win32':
|
549
|
+
extension = '.ps1' # Windows 默认使用 PowerShell
|
550
|
+
else:
|
551
|
+
extension = '.sh' # Linux 和 macOS 默认使用 Bash
|
552
|
+
|
553
|
+
# 2 添加编码配置到脚本内容
|
554
|
+
if extension == '.bat':
|
555
|
+
# 为 .bat 文件添加 UTF-8 支持
|
556
|
+
script_content = f"chcp 65001 >nul\n{script_content}"
|
557
|
+
elif extension == '.ps1':
|
558
|
+
# 为 .ps1 文件添加 UTF-8 支持
|
559
|
+
script_content = f"[Console]::OutputEncoding = [System.Text.Encoding]::UTF8\n" \
|
560
|
+
f"[Console]::InputEncoding = [System.Text.Encoding]::UTF8\n{script_content}"
|
561
|
+
|
562
|
+
# 3 创建临时脚本文件
|
563
|
+
script_file = XlPath.create_tempfile_path(extension)
|
564
|
+
script_file.write_text(script_content)
|
565
|
+
|
566
|
+
# 4 根据文件扩展名和操作系统选择执行命令
|
567
|
+
if extension == '.sh':
|
568
|
+
cmd = ['bash', str(script_file)]
|
569
|
+
elif extension == '.ps1':
|
570
|
+
if sys.platform == 'win32':
|
571
|
+
cmd = ['powershell', '-ExecutionPolicy', 'Bypass', '-File', str(script_file)]
|
572
|
+
else:
|
573
|
+
raise ValueError("PowerShell 脚本仅在 Windows 系统上受支持")
|
574
|
+
elif extension == '.bat':
|
575
|
+
cmd = [str(script_file)] # 直接运行 .bat 文件
|
576
|
+
else:
|
577
|
+
raise ValueError(f"不支持的脚本类型: {extension}")
|
578
|
+
|
579
|
+
# 5 使用 add_program_cmd3 启动脚本
|
580
|
+
return self.add_program_cmd3(
|
581
|
+
cmd=cmd,
|
582
|
+
name=name or f"command_{script_file.stem}",
|
583
|
+
shell=shell,
|
584
|
+
run=run,
|
585
|
+
schedule=schedule,
|
586
|
+
**kwargs
|
587
|
+
)
|
588
|
+
|
589
|
+
def __3_nginx相关(self):
|
590
|
+
pass
|
591
|
+
|
592
|
+
def get_all_locations(self):
|
593
|
+
locations = defaultdict(list)
|
594
|
+
for worker in self.workers:
|
595
|
+
if not worker.locations:
|
596
|
+
continue
|
597
|
+
for x in worker.locations:
|
598
|
+
for dst, src in x.items():
|
599
|
+
locations[dst].append(f'localhost:{worker.port}{src}')
|
600
|
+
return locations
|
601
|
+
|
602
|
+
def configure_nginx(self, nginx_template, locations=None):
|
603
|
+
if locations is None:
|
604
|
+
locations = self.get_all_locations()
|
605
|
+
|
606
|
+
upstreams = [] # 外部的配置
|
607
|
+
servers = [nginx_template.rstrip()] # 内部的配置
|
608
|
+
|
609
|
+
for dst, srcs in locations.items():
|
610
|
+
if len(srcs) == 1: # 只有1个不开负载
|
611
|
+
server = f'location {dst} {{\n\tproxy_pass http://{srcs[0]};\n}}\n'
|
612
|
+
else: # 有多个端口功能则开负载
|
613
|
+
hosts = '\n'.join([f'\tserver {src.split("/")[0]};' for src in srcs])
|
614
|
+
upstream_name = 'upstream' + str(len(upstreams) + 1)
|
615
|
+
upstreams.append(f'upstream {upstream_name} {{\n{hosts}\n}}\n')
|
616
|
+
sub_urls = [src.split('/', maxsplit=1)[1] for src in srcs]
|
617
|
+
assert len(set(sub_urls)) == 1, f'负载均衡的子url必须一致 {sub_urls}'
|
618
|
+
server = f'location {dst} {{\n\tproxy_pass http://{upstream_name}/{sub_urls[0]};\n}}\n'
|
619
|
+
servers.append(server)
|
620
|
+
|
621
|
+
content = '\n'.join(upstreams) + '\nserver {\n' + textwrap.indent('\n'.join(servers), '\t') + '}'
|
622
|
+
return content
|
623
|
+
|
624
|
+
def __4_多程序管理(self):
|
493
625
|
pass
|
494
626
|
|
495
627
|
def cleanup_finished(self, exit_code=None):
|
@@ -560,7 +692,10 @@ class MultiProgramLauncher:
|
|
560
692
|
elif cmd == 'list': # 列出所有程序(转df查看)
|
561
693
|
ls = []
|
562
694
|
for worker in self.workers:
|
563
|
-
ls.append([worker.name,
|
695
|
+
ls.append([worker.name,
|
696
|
+
worker.program and worker.program.pid,
|
697
|
+
worker.program and worker.program.poll(),
|
698
|
+
worker.raw_cmd])
|
564
699
|
df = pd.DataFrame(ls, columns=['name', 'pid', 'poll', 'args'])
|
565
700
|
print_full_dataframe(df)
|
566
701
|
except KeyboardInterrupt:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyxllib
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.144
|
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: opencv-python; extra == "xlcv"
|
42
41
|
Requires-Dist: pillow; extra == "xlcv"
|
43
42
|
Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
43
|
+
Requires-Dist: opencv-python; extra == "xlcv"
|
44
44
|
Provides-Extra: xlai
|
45
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
46
45
|
Requires-Dist: opencv-python; extra == "xlai"
|
46
|
+
Requires-Dist: visdom; extra == "xlai"
|
47
47
|
Requires-Dist: pillow; extra == "xlai"
|
48
48
|
Requires-Dist: pynvml; extra == "xlai"
|
49
|
-
Requires-Dist:
|
49
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
50
50
|
Provides-Extra: xlall
|
51
|
-
Requires-Dist: flask-
|
52
|
-
Requires-Dist: fastapi; extra == "xlall"
|
51
|
+
Requires-Dist: flask-wtf; extra == "xlall"
|
53
52
|
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
53
|
+
Requires-Dist: flask-restful; extra == "xlall"
|
54
|
+
Requires-Dist: uvicorn; extra == "xlall"
|
55
|
+
Requires-Dist: openai2; extra == "xlall"
|
54
56
|
Requires-Dist: ujson; extra == "xlall"
|
57
|
+
Requires-Dist: fastapi; extra == "xlall"
|
58
|
+
Requires-Dist: html2text; extra == "xlall"
|
55
59
|
Requires-Dist: zhconv; extra == "xlall"
|
56
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
57
|
-
Requires-Dist: openai2; extra == "xlall"
|
58
60
|
Requires-Dist: opencv-python; extra == "xlall"
|
59
|
-
Requires-Dist: arts; extra == "xlall"
|
60
61
|
Requires-Dist: pillow; extra == "xlall"
|
61
|
-
Requires-Dist:
|
62
|
+
Requires-Dist: flask; extra == "xlall"
|
62
63
|
Requires-Dist: sentencepiece; extra == "xlall"
|
63
|
-
Requires-Dist: flask-
|
64
|
-
Requires-Dist:
|
65
|
-
Requires-Dist:
|
64
|
+
Requires-Dist: flask-cors; extra == "xlall"
|
65
|
+
Requires-Dist: arts; extra == "xlall"
|
66
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
66
67
|
Requires-Dist: xlrd; extra == "xlall"
|
67
|
-
Requires-Dist: flask; 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.144', # 当前版本,每次更新上传到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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|