pyxllib 0.3.147__tar.gz → 0.3.148__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.147/pyxllib.egg-info → pyxllib-0.3.148}/PKG-INFO +16 -16
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/autogui/uiautolib.py +1 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/autogui/wechat.py +31 -8
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/autogui/wechat_msg.py +2 -0
- pyxllib-0.3.148/pyxllib/prog/filelock.py +42 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148/pyxllib.egg-info}/PKG-INFO +16 -16
- {pyxllib-0.3.147 → pyxllib-0.3.148}/setup.py +1 -1
- pyxllib-0.3.147/pyxllib/prog/filelock.py +0 -141
- {pyxllib-0.3.147 → pyxllib-0.3.148}/LICENSE +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/MANIFEST.in +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/README.md +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/matcher.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/pupil.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/autogui/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/autogui/activewin.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/autogui/all.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/autogui/autogui.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/data/jsonlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/data/pglib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/JLineViewer.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/drissionlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/kq5034lib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/robustprocfile.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/ext/yuquelib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/libreoffice.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/movielib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/specialist/filelib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/xlsxlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/file/xlsyncfile.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/cachetools.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/ipyexec.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/multiprogs.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/newbie.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/pupil.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/specialist/xllog.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/charclasslib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/jiebalib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/jinjalib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/jscode.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/templates/echart_base.html +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/templates/highlight_code.html +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/templates/latex_editor.html +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/vbacode.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib.egg-info/SOURCES.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib.egg-info/requires.txt +15 -15
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/gptlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/data/tiktokenlib.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/openai2/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/openai2/_core/chat.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/openai2/_core/group_chat.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/openai2/openai2.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/requirements.txt +0 -0
- {pyxllib-0.3.147 → pyxllib-0.3.148}/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.148
|
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"
|
42
41
|
Requires-Dist: pillow; extra == "xlcv"
|
43
42
|
Requires-Dist: opencv-python; extra == "xlcv"
|
43
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
44
44
|
Provides-Extra: xlai
|
45
|
-
Requires-Dist: pynvml; extra == "xlai"
|
46
45
|
Requires-Dist: visdom; extra == "xlai"
|
47
|
-
Requires-Dist: pillow; extra == "xlai"
|
48
46
|
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
47
|
+
Requires-Dist: pynvml; extra == "xlai"
|
48
|
+
Requires-Dist: pillow; extra == "xlai"
|
49
49
|
Requires-Dist: opencv-python; extra == "xlai"
|
50
50
|
Provides-Extra: xlall
|
51
|
-
Requires-Dist:
|
52
|
-
Requires-Dist: flask; extra == "xlall"
|
53
|
-
Requires-Dist: html2text; extra == "xlall"
|
54
|
-
Requires-Dist: zhconv; extra == "xlall"
|
55
|
-
Requires-Dist: arts; extra == "xlall"
|
56
|
-
Requires-Dist: xlrd; extra == "xlall"
|
57
|
-
Requires-Dist: flask-cors; extra == "xlall"
|
51
|
+
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
58
52
|
Requires-Dist: flask-restful; extra == "xlall"
|
53
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
54
|
+
Requires-Dist: uvicorn; extra == "xlall"
|
55
|
+
Requires-Dist: sentencepiece; extra == "xlall"
|
59
56
|
Requires-Dist: flask-wtf; extra == "xlall"
|
57
|
+
Requires-Dist: openai2; extra == "xlall"
|
58
|
+
Requires-Dist: arts; extra == "xlall"
|
59
|
+
Requires-Dist: xlrd; extra == "xlall"
|
60
|
+
Requires-Dist: flask; extra == "xlall"
|
61
|
+
Requires-Dist: ujson; extra == "xlall"
|
60
62
|
Requires-Dist: fastapi; extra == "xlall"
|
63
|
+
Requires-Dist: html2text; extra == "xlall"
|
61
64
|
Requires-Dist: pillow; extra == "xlall"
|
62
|
-
Requires-Dist: sentencepiece; extra == "xlall"
|
63
|
-
Requires-Dist: uvicorn; extra == "xlall"
|
64
|
-
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
65
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
66
|
-
Requires-Dist: openai2; extra == "xlall"
|
67
65
|
Requires-Dist: opencv-python; extra == "xlall"
|
66
|
+
Requires-Dist: zhconv; extra == "xlall"
|
67
|
+
Requires-Dist: flask-cors; extra == "xlall"
|
68
68
|
|
69
69
|
# 1 install
|
70
70
|
|
@@ -10,21 +10,15 @@
|
|
10
10
|
|
11
11
|
import time
|
12
12
|
from copy import deepcopy
|
13
|
-
from typing import Iterable
|
14
|
-
import os
|
15
13
|
from typing import (Iterable, Callable, List)
|
16
|
-
import
|
17
|
-
import re
|
18
|
-
import textwrap
|
14
|
+
from typing import Optional
|
19
15
|
|
20
16
|
import uiautomation as auto
|
21
|
-
from anytree import NodeMixin, RenderTree
|
22
17
|
|
23
18
|
import win32con
|
24
19
|
import win32gui
|
25
20
|
|
26
|
-
from pyxllib.prog.
|
27
|
-
from pyxllib.autogui.wechat_msg import msg_parsers
|
21
|
+
from pyxllib.prog.filelock import get_autoui_lock
|
28
22
|
from pyxllib.autogui.uiautolib import find_ctrl, UiCtrlNode, copy_files_to_clipboard
|
29
23
|
|
30
24
|
|
@@ -456,6 +450,35 @@ class WeChatMainWnd(UiCtrlNode):
|
|
456
450
|
time.sleep(1) # 等待发送动作完成
|
457
451
|
|
458
452
|
|
453
|
+
class WeChatSingletonLock:
|
454
|
+
""" 基于 get_autoui_lock 的微信全局唯一单例控制器,确保同一时间仅有一个微信自动化程序在操作 """
|
455
|
+
|
456
|
+
def __init__(self, lock_timeout: Optional[float] = -1):
|
457
|
+
# 初始化全局锁
|
458
|
+
self.lock = get_autoui_lock(timeout=lock_timeout)
|
459
|
+
self.wechat = WeChatMainWnd()
|
460
|
+
|
461
|
+
def __enter__(self):
|
462
|
+
# 获取锁并激活微信窗口
|
463
|
+
self.lock.acquire()
|
464
|
+
self.wechat.activate()
|
465
|
+
return self.wechat
|
466
|
+
|
467
|
+
def __exit__(self, exc_type, exc_value, traceback):
|
468
|
+
# 释放锁
|
469
|
+
self.lock.release()
|
470
|
+
|
471
|
+
|
472
|
+
def wechat_lock_send(user, text=None, files=None, *, timeout=-1):
|
473
|
+
""" 使用全局唯一单例锁,确保同一时间仅有一个微信自动化程序在操作 """
|
474
|
+
with WeChatSingletonLock(timeout) as we:
|
475
|
+
we.set_chat_with(user)
|
476
|
+
if text:
|
477
|
+
we.send_text(user, text)
|
478
|
+
if files:
|
479
|
+
we.send_files(files)
|
480
|
+
|
481
|
+
|
459
482
|
def __4_wx():
|
460
483
|
""" 别人的原版实现 """
|
461
484
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Author : 陈坤泽
|
4
|
+
# @Email : 877362867@qq.com
|
5
|
+
# @Date : 2024/11/13
|
6
|
+
|
7
|
+
import os
|
8
|
+
import tempfile
|
9
|
+
import time
|
10
|
+
|
11
|
+
from filelock import FileLock, Timeout
|
12
|
+
|
13
|
+
|
14
|
+
class XlFileLock(FileLock):
|
15
|
+
def __init__(self, lock_file: str, timeout: float = -1, **kwargs):
|
16
|
+
"""
|
17
|
+
初始化 XlFileLock 实例,锁文件默认存储在系统临时目录中。
|
18
|
+
|
19
|
+
:param str filename: 锁文件的文件名(不包含路径)。
|
20
|
+
:param float timeout: 获取锁的超时时间(以秒为单位),默认值为 -1 表示无限等待。
|
21
|
+
"""
|
22
|
+
lock_file_path = os.path.join(tempfile.gettempdir(), lock_file)
|
23
|
+
super().__init__(lock_file=lock_file_path, timeout=timeout, **kwargs)
|
24
|
+
|
25
|
+
|
26
|
+
def get_autoui_lock(lock_file='autoui.lock', timeout=-1):
|
27
|
+
"""
|
28
|
+
注意:XlFileLock中的lock_file无法设置默认值,这跟FileLock的底层有关
|
29
|
+
所以无法继承一个AutoUiLock类,但是可以通过这种函数的方式,绕开它特殊的初始化限制
|
30
|
+
"""
|
31
|
+
lock = XlFileLock(lock_file=lock_file, timeout=timeout)
|
32
|
+
return lock
|
33
|
+
|
34
|
+
|
35
|
+
if __name__ == "__main__":
|
36
|
+
try:
|
37
|
+
with get_autoui_lock(timeout=5):
|
38
|
+
print("Lock acquired, doing some work...")
|
39
|
+
time.sleep(3)
|
40
|
+
print("Work done.")
|
41
|
+
except Timeout:
|
42
|
+
print("Failed to acquire lock within the timeout.")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyxllib
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.148
|
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"
|
42
41
|
Requires-Dist: pillow; extra == "xlcv"
|
43
42
|
Requires-Dist: opencv-python; extra == "xlcv"
|
43
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
44
44
|
Provides-Extra: xlai
|
45
|
-
Requires-Dist: pynvml; extra == "xlai"
|
46
45
|
Requires-Dist: visdom; extra == "xlai"
|
47
|
-
Requires-Dist: pillow; extra == "xlai"
|
48
46
|
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
47
|
+
Requires-Dist: pynvml; extra == "xlai"
|
48
|
+
Requires-Dist: pillow; extra == "xlai"
|
49
49
|
Requires-Dist: opencv-python; extra == "xlai"
|
50
50
|
Provides-Extra: xlall
|
51
|
-
Requires-Dist:
|
52
|
-
Requires-Dist: flask; extra == "xlall"
|
53
|
-
Requires-Dist: html2text; extra == "xlall"
|
54
|
-
Requires-Dist: zhconv; extra == "xlall"
|
55
|
-
Requires-Dist: arts; extra == "xlall"
|
56
|
-
Requires-Dist: xlrd; extra == "xlall"
|
57
|
-
Requires-Dist: flask-cors; extra == "xlall"
|
51
|
+
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
58
52
|
Requires-Dist: flask-restful; extra == "xlall"
|
53
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
54
|
+
Requires-Dist: uvicorn; extra == "xlall"
|
55
|
+
Requires-Dist: sentencepiece; extra == "xlall"
|
59
56
|
Requires-Dist: flask-wtf; extra == "xlall"
|
57
|
+
Requires-Dist: openai2; extra == "xlall"
|
58
|
+
Requires-Dist: arts; extra == "xlall"
|
59
|
+
Requires-Dist: xlrd; extra == "xlall"
|
60
|
+
Requires-Dist: flask; extra == "xlall"
|
61
|
+
Requires-Dist: ujson; extra == "xlall"
|
60
62
|
Requires-Dist: fastapi; extra == "xlall"
|
63
|
+
Requires-Dist: html2text; extra == "xlall"
|
61
64
|
Requires-Dist: pillow; extra == "xlall"
|
62
|
-
Requires-Dist: sentencepiece; extra == "xlall"
|
63
|
-
Requires-Dist: uvicorn; extra == "xlall"
|
64
|
-
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
65
|
-
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
66
|
-
Requires-Dist: openai2; extra == "xlall"
|
67
65
|
Requires-Dist: opencv-python; extra == "xlall"
|
66
|
+
Requires-Dist: zhconv; extra == "xlall"
|
67
|
+
Requires-Dist: flask-cors; 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.148', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
|
54
54
|
author='code4101',
|
55
55
|
author_email='877362867@qq.com',
|
56
56
|
url='https://github.com/XLPRUtils/pyxllib',
|
@@ -1,141 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python3
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
# @Author : 陈坤泽
|
4
|
-
# @Email : 877362867@qq.com
|
5
|
-
# @Date : 2024/11/13
|
6
|
-
|
7
|
-
import os
|
8
|
-
import time
|
9
|
-
import platform
|
10
|
-
import tempfile
|
11
|
-
|
12
|
-
if platform.system() == 'Windows':
|
13
|
-
import msvcrt
|
14
|
-
else:
|
15
|
-
import fcntl
|
16
|
-
|
17
|
-
|
18
|
-
class FileLock:
|
19
|
-
"""
|
20
|
-
文件锁类,用于在不同进程之间实现互斥锁,确保同一时间只有一个程序实例可以访问共享资源。
|
21
|
-
|
22
|
-
适用于以下场景:
|
23
|
-
- 防止多个独立程序同时操作同一资源(如文件、窗口、数据库等)。
|
24
|
-
- 解决多个自动化脚本并发访问相同应用程序时的冲突问题。
|
25
|
-
- 跨平台支持:在 Windows 上使用 `msvcrt`,在 Unix 系统上使用 `fcntl`。
|
26
|
-
|
27
|
-
使用方式:
|
28
|
-
1. 作为上下文管理器:
|
29
|
-
>> with FileLock('wechat.lock'):
|
30
|
-
>> # 执行独占的操作
|
31
|
-
>> print("操作微信...")
|
32
|
-
|
33
|
-
2. 手动调用 acquire() 和 release():
|
34
|
-
>> lock = FileLock('wechat.lock')
|
35
|
-
>> try:
|
36
|
-
>> lock.acquire()
|
37
|
-
>> print("正在执行任务...")
|
38
|
-
>> finally:
|
39
|
-
>> lock.release()
|
40
|
-
|
41
|
-
属性:
|
42
|
-
:param bool locked: 指示当前是否已获得文件锁。
|
43
|
-
|
44
|
-
异常:
|
45
|
-
- TimeoutError: 如果在指定的超时时间内无法获取锁,则抛出此异常。
|
46
|
-
"""
|
47
|
-
|
48
|
-
def __init__(self, lock_file='lockfile.lock', timeout=10, check_interval=0.1):
|
49
|
-
"""
|
50
|
-
|
51
|
-
:param str lock_file: 锁文件的路径,默认值为 'lockfile.lock'。
|
52
|
-
:param int timeout: 获取锁的超时时间,单位为秒,默认值为 10 秒。
|
53
|
-
:param float check_interval: 重试获取锁的时间间隔,单位为秒,默认值为 0.1 秒。
|
54
|
-
"""
|
55
|
-
# 如果 lock_file 没有提供绝对路径,则将其存储在临时目录下
|
56
|
-
if not os.path.isabs(lock_file):
|
57
|
-
lock_file = os.path.join(tempfile.gettempdir(), lock_file)
|
58
|
-
|
59
|
-
self.lock_file = lock_file
|
60
|
-
self.timeout = timeout
|
61
|
-
self.check_interval = check_interval
|
62
|
-
self.locked = False
|
63
|
-
self.file = None
|
64
|
-
|
65
|
-
def acquire(self):
|
66
|
-
"""
|
67
|
-
手动获取文件锁。
|
68
|
-
|
69
|
-
如果文件已被其他进程锁定,则会阻塞,直到成功获取锁或者超时。
|
70
|
-
如果在指定的超时时间内无法获取锁,则抛出 TimeoutError。
|
71
|
-
|
72
|
-
Raises:
|
73
|
-
TimeoutError: 如果在指定的超时时间内无法获取锁。
|
74
|
-
"""
|
75
|
-
start_time = time.time()
|
76
|
-
while True:
|
77
|
-
try:
|
78
|
-
self.file = open(self.lock_file, 'w')
|
79
|
-
if platform.system() == 'Windows':
|
80
|
-
# Windows 系统使用 msvcrt.locking() 实现文件锁
|
81
|
-
msvcrt.locking(self.file.fileno(), msvcrt.LK_NBLCK, 1)
|
82
|
-
else:
|
83
|
-
# Unix 系统使用 fcntl.flock() 实现文件锁
|
84
|
-
fcntl.flock(self.file, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
85
|
-
self.locked = True
|
86
|
-
break
|
87
|
-
except (BlockingIOError, OSError):
|
88
|
-
if time.time() - start_time > self.timeout:
|
89
|
-
raise TimeoutError(f"无法在 {self.timeout} 秒内获取文件锁:{self.lock_file}")
|
90
|
-
time.sleep(self.check_interval)
|
91
|
-
|
92
|
-
def release(self):
|
93
|
-
"""
|
94
|
-
手动释放文件锁。
|
95
|
-
|
96
|
-
如果锁已被获取,则解锁并关闭文件句柄。
|
97
|
-
"""
|
98
|
-
if self.locked and self.file:
|
99
|
-
if platform.system() == 'Windows':
|
100
|
-
# Windows 系统释放锁
|
101
|
-
msvcrt.locking(self.file.fileno(), msvcrt.LK_UNLCK, 1)
|
102
|
-
else:
|
103
|
-
# Unix 系统释放锁
|
104
|
-
fcntl.flock(self.file, fcntl.LOCK_UN)
|
105
|
-
self.file.close()
|
106
|
-
self.locked = False
|
107
|
-
|
108
|
-
def __enter__(self):
|
109
|
-
"""
|
110
|
-
进入上下文管理器时自动获取文件锁。
|
111
|
-
|
112
|
-
Returns:
|
113
|
-
self: 返回当前 FileLock 实例。
|
114
|
-
"""
|
115
|
-
self.acquire()
|
116
|
-
return self
|
117
|
-
|
118
|
-
def __exit__(self, exc_type, exc_val, exc_tb):
|
119
|
-
"""
|
120
|
-
退出上下文管理器时自动释放文件锁。
|
121
|
-
"""
|
122
|
-
self.release()
|
123
|
-
|
124
|
-
|
125
|
-
# 示例:如何使用 FileLock 类
|
126
|
-
if __name__ == '__main__':
|
127
|
-
# 使用上下文管理器
|
128
|
-
with FileLock('wechat.lock') as lock:
|
129
|
-
print("通过上下文管理器获取锁,正在操作微信...")
|
130
|
-
time.sleep(3)
|
131
|
-
print("操作完成")
|
132
|
-
|
133
|
-
# 手动调用 acquire 和 release
|
134
|
-
lock = FileLock('wechat.lock')
|
135
|
-
try:
|
136
|
-
lock.acquire()
|
137
|
-
print("手动获取锁,正在执行任务...")
|
138
|
-
time.sleep(3)
|
139
|
-
finally:
|
140
|
-
lock.release()
|
141
|
-
print("任务完成并已释放锁")
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|