pyxllib 0.3.107__tar.gz → 0.3.108__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.107/pyxllib.egg-info → pyxllib-0.3.108}/PKG-INFO +1 -1
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/pupil.py +72 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/data/pglib.py +71 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/kq5034lib.py +3 -2
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/movielib.py +9 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/newbie.py +5 -1
- {pyxllib-0.3.107 → pyxllib-0.3.108/pyxllib.egg-info}/PKG-INFO +1 -1
- {pyxllib-0.3.107 → pyxllib-0.3.108}/setup.py +1 -1
- {pyxllib-0.3.107 → pyxllib-0.3.108}/LICENSE +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/MANIFEST.in +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/README.md +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/matcher.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/data/jsonlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/JLineViewer.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/autogui/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/autogui/autogui.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/drissionlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/robustprocfile.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/ext/yuquelib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/libreoffice.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/specialist/filelib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/file/xlsxlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/ipyexec.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/multiprocs.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/pupil.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/specialist/xllog.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/charclasslib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/jiebalib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/jscode.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/vbacode.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib.egg-info/SOURCES.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib.egg-info/requires.txt +5 -5
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/gptlib.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/requirements.txt +0 -0
- {pyxllib-0.3.107 → pyxllib-0.3.108}/setup.cfg +0 -0
@@ -152,6 +152,78 @@ class ValuesStat:
|
|
152
152
|
raise ValueError("无效的数据数量")
|
153
153
|
|
154
154
|
|
155
|
+
class ValuesStat2:
|
156
|
+
""" 240509周四17:33,第2代统计器
|
157
|
+
"""
|
158
|
+
|
159
|
+
def __init__(self, values=None, raw_values=None):
|
160
|
+
from statistics import pstdev, mean
|
161
|
+
|
162
|
+
# 支持输入可能带有非数值类型的raw_values
|
163
|
+
if raw_values:
|
164
|
+
values = [x for x in raw_values if isinstance(x, (int, float))] # todo 可能需要更泛用的判断数值的方法
|
165
|
+
|
166
|
+
self.raw_values = raw_values
|
167
|
+
values = values or []
|
168
|
+
self.values = sorted(values)
|
169
|
+
if self.raw_values:
|
170
|
+
self.raw_n = len(self.raw_values)
|
171
|
+
else:
|
172
|
+
self.raw_n = 0
|
173
|
+
self.n = len(values)
|
174
|
+
self.sum = sum(values)
|
175
|
+
if self.n:
|
176
|
+
self.mean = mean(self.values)
|
177
|
+
self.std = pstdev(self.values)
|
178
|
+
self.min, self.max = self.values[0], self.values[-1]
|
179
|
+
else:
|
180
|
+
self.mean = self.std = self.min = self.max = float('nan')
|
181
|
+
|
182
|
+
self.dist = []
|
183
|
+
|
184
|
+
def __len__(self):
|
185
|
+
return self.n
|
186
|
+
|
187
|
+
def summary(self, unit='万', precision=4, percentile=5):
|
188
|
+
""" 文本汇总性的报告
|
189
|
+
|
190
|
+
:param percentile: 包括两个极值端点的切分点数,
|
191
|
+
设置2,就是不设置分位数,就是只展示最小、最大值
|
192
|
+
如果设置了3,就表示"中位数、二分位数",在展示的时候,会显示50%位置的分位数值
|
193
|
+
如果设置了5,就相当于"四分位数",会显示25%、50%、75%位置的分位数值
|
194
|
+
:param unit: 展示数值时使用的单位
|
195
|
+
:param precision: 展示数值时的精度
|
196
|
+
"""
|
197
|
+
from statistics import quantiles
|
198
|
+
|
199
|
+
def fmt0(v):
|
200
|
+
return human_readable_number(v, '万')
|
201
|
+
|
202
|
+
def fmt(v):
|
203
|
+
return human_readable_number(v, unit, precision)
|
204
|
+
|
205
|
+
desc = []
|
206
|
+
if self.raw_n and self.raw_n > self.n:
|
207
|
+
desc.append(f"非数值数量:{fmt0(self.raw_n - self.n)}")
|
208
|
+
|
209
|
+
desc.append(f"总数:{fmt0(self.n)}")
|
210
|
+
desc.append(f"总和:{fmt(self.sum)}")
|
211
|
+
desc.append(f'均值±标准差:{fmt(self.mean)}±{fmt(self.std)}')
|
212
|
+
|
213
|
+
if self.values:
|
214
|
+
dist = [self.values[0]]
|
215
|
+
if percentile > 2:
|
216
|
+
quartiles = quantiles(self.values, n=percentile - 1)
|
217
|
+
dist += quartiles
|
218
|
+
dist.append(self.values[-1])
|
219
|
+
|
220
|
+
desc.append(f"分布:{'/'.join([fmt(v) for v in dist])}")
|
221
|
+
elif self.dist: # 此时当前函数的percentile设置失效,以dist中存储的情况为准
|
222
|
+
desc.append(f"分布:{'/'.join([fmt(v) for v in self.dist])}")
|
223
|
+
|
224
|
+
return '\t'.join(desc)
|
225
|
+
|
226
|
+
|
155
227
|
class Groups:
|
156
228
|
def __init__(self, data):
|
157
229
|
""" 分组
|
@@ -44,6 +44,7 @@ import psycopg.rows
|
|
44
44
|
from pyxllib.prog.newbie import round_int
|
45
45
|
from pyxllib.prog.pupil import utc_now, utc_timestamp
|
46
46
|
from pyxllib.prog.specialist import XlOsEnv
|
47
|
+
from pyxllib.algo.pupil import ValuesStat2
|
47
48
|
from pyxllib.file.specialist import get_etag
|
48
49
|
from pyxllib.data.sqlite import SqlBase
|
49
50
|
|
@@ -230,6 +231,76 @@ WHERE {table_name}.{item_id_name} = cte.{item_id_name}"""
|
|
230
231
|
|
231
232
|
self.commit_base(commit, query, params)
|
232
233
|
|
234
|
+
def __6_高级统计(self):
|
235
|
+
pass
|
236
|
+
|
237
|
+
def get_field_valuesstat(self, table_name, field_name, percentile_count=5,
|
238
|
+
cvt_numeric=True, by_data=False):
|
239
|
+
""" 获得指定表格的某个字段的统计特征ValuesStat2对象
|
240
|
+
|
241
|
+
:param table_name: 表名
|
242
|
+
:param field_name: 用于计算统计数据的字段名
|
243
|
+
:param percentile_count: 分位数的数量,例如 3 表示只计算中位数
|
244
|
+
:param by_data: 是否获得原始数据
|
245
|
+
默认只获得统计特征,不获得原始数据
|
246
|
+
"""
|
247
|
+
|
248
|
+
def init_from_db_data():
|
249
|
+
values = self.exec2col(f'SELECT {field_name} FROM {table_name}')
|
250
|
+
if cvt_numeric: # 这个是numeric格式字段,是"字符串",要做个转换
|
251
|
+
values = [x and float(x) for x in values]
|
252
|
+
|
253
|
+
return ValuesStat2(raw_values=values)
|
254
|
+
|
255
|
+
def init_from_db():
|
256
|
+
# 构建基础的 SQL 查询
|
257
|
+
sql_query = f"""
|
258
|
+
SELECT
|
259
|
+
COUNT(*) AS total_count,
|
260
|
+
COUNT({field_name}) AS non_null_count,
|
261
|
+
SUM({field_name}) AS total_sum,
|
262
|
+
AVG({field_name}) AS average,
|
263
|
+
STDDEV({field_name}) AS standard_deviation,
|
264
|
+
MIN({field_name}) AS min_value,
|
265
|
+
MAX({field_name}) AS max_value
|
266
|
+
"""
|
267
|
+
|
268
|
+
percentiles = []
|
269
|
+
# 根据分位点的数量动态添加分位数计算
|
270
|
+
if percentile_count > 2:
|
271
|
+
step = 1 / (percentile_count - 1)
|
272
|
+
percentiles = [(i * step) for i in range(1, percentile_count - 1)]
|
273
|
+
percentiles_query = ", ".join(
|
274
|
+
f"PERCENTILE_CONT({p:.2f}) WITHIN GROUP (ORDER BY {field_name}) AS percentile_{int(p * 100)}"
|
275
|
+
for p in percentiles
|
276
|
+
)
|
277
|
+
sql_query += ", " + percentiles_query
|
278
|
+
|
279
|
+
sql_query += f" FROM {table_name};"
|
280
|
+
|
281
|
+
# 执行 SQL 查询
|
282
|
+
row = self.exec2dict(sql_query).fetchone()
|
283
|
+
|
284
|
+
# 创建一个新实例并将从数据库获得的数据填充到相应的属性
|
285
|
+
x = ValuesStat2()
|
286
|
+
x.raw_n = row['total_count']
|
287
|
+
x.n = row['non_null_count']
|
288
|
+
x.sum = row['total_sum']
|
289
|
+
x.mean = row['average']
|
290
|
+
x.std = row['standard_deviation']
|
291
|
+
|
292
|
+
# 如果计算了分位数,填充相应属性
|
293
|
+
x.dist = [row['min_value']] + [row[f"percentile_{int(p * 100)}"] for p in percentiles] + [row['max_value']]
|
294
|
+
if cvt_numeric:
|
295
|
+
x.dist = [float(x) for x in x.dist]
|
296
|
+
|
297
|
+
return x
|
298
|
+
|
299
|
+
if by_data:
|
300
|
+
return init_from_db_data()
|
301
|
+
else:
|
302
|
+
return init_from_db()
|
303
|
+
|
233
304
|
|
234
305
|
"""
|
235
306
|
【关于为什么XlprDb要和pglib合一个文件】
|
@@ -135,13 +135,14 @@ class Xiaoetong:
|
|
135
135
|
|
136
136
|
|
137
137
|
class 网课考勤:
|
138
|
-
def __init__(self, today=None):
|
138
|
+
def __init__(self, today=None, *, 表格路径=None):
|
139
139
|
self.返款标题 = ''
|
140
|
-
self.表格路径 = r'考勤.xlsx'
|
140
|
+
self.表格路径 = 表格路径 or r'考勤.xlsx'
|
141
141
|
self.在线表格 = 'https://docs.qq.com/sheet/DUlF1UnRackJ2Vm5U' # 生成日报用
|
142
142
|
self.开课日期 = '2022-01-08'
|
143
143
|
self.视频返款 = [20, 15, 10, 5, 0, 0] # 直播(当堂)/第1天(当天)/第2天/第3天/第4天/第5天,完成观看的依次返款额。
|
144
144
|
self.打卡返款 = {5: 100, 10: 150, 15: 200} # 打卡满5/10/15次的返款额
|
145
|
+
self.课程链接 = []
|
145
146
|
self._init(today)
|
146
147
|
|
147
148
|
self.driver = None # 浏览器脚本
|
@@ -10,6 +10,7 @@ check_install_package('moviepy')
|
|
10
10
|
|
11
11
|
import cv2
|
12
12
|
from moviepy.editor import VideoFileClip
|
13
|
+
from moviepy.editor import cvsecs
|
13
14
|
import numpy as np
|
14
15
|
from tqdm import tqdm
|
15
16
|
|
@@ -137,3 +138,11 @@ class XlVideoFileClip(VideoFileClip):
|
|
137
138
|
|
138
139
|
|
139
140
|
inject_members(XlVideoFileClip, VideoFileClip)
|
141
|
+
|
142
|
+
|
143
|
+
def clip_video(input_file, output_file, start_time, end_time):
|
144
|
+
start_time = cvsecs(start_time)
|
145
|
+
end_time = cvsecs(end_time)
|
146
|
+
clip = VideoFileClip(input_file).subclip(start_time, end_time)
|
147
|
+
clip.write_videofile(output_file)
|
148
|
+
clip.reader.close()
|
@@ -267,13 +267,17 @@ def human_readable_number(value, base_type='K', precision=4):
|
|
267
267
|
'K': (['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'], 1000),
|
268
268
|
'KB': (['', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 1024),
|
269
269
|
'KiB': (['', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'], 1024),
|
270
|
-
'万': (['', '万', '亿', '万亿', '亿亿'], 10000)
|
270
|
+
'万': (['', '万', '亿', '万亿', '亿亿'], 10000),
|
271
|
+
'秒': (['秒', [60, '分'], [60, '时'], [24, '天'], [7, '周'], [4.345, '月'], [12, '年']], 60),
|
271
272
|
}.get(base_type, ([''], 1)) # 默认为空单位和基数1
|
272
273
|
|
273
274
|
x, i = abs(value), 0
|
274
275
|
while x >= base and i < len(units) - 1:
|
275
276
|
x /= base
|
276
277
|
i += 1
|
278
|
+
if isinstance(units[i], list):
|
279
|
+
base = units[i][0]
|
280
|
+
units[i] = units[i][1]
|
277
281
|
|
278
282
|
x = f'{x:.{precision}g}' # 四舍五入到指定精度
|
279
283
|
prefix = '-' if value < 0 else '' # 负数处理
|
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
|
|
30
30
|
|
31
31
|
setup(
|
32
32
|
name='pyxllib', # pip 安装时用的名字
|
33
|
-
version='0.3.
|
33
|
+
version='0.3.108', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
|
34
34
|
author='code4101',
|
35
35
|
author_email='877362867@qq.com',
|
36
36
|
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
|
@@ -21,14 +21,14 @@ Jinja2
|
|
21
21
|
pandas>=0.23.4
|
22
22
|
|
23
23
|
[xlai]
|
24
|
-
visdom
|
25
|
-
opsdroid-get-image-size
|
26
24
|
xlcocotools
|
27
|
-
opencv-python
|
28
25
|
pynvml
|
26
|
+
opsdroid-get-image-size
|
27
|
+
visdom
|
29
28
|
pillow
|
29
|
+
opencv-python
|
30
30
|
|
31
31
|
[xlcv]
|
32
|
-
opsdroid-get-image-size
|
33
|
-
pillow
|
34
32
|
opencv-python
|
33
|
+
pillow
|
34
|
+
opsdroid-get-image-size
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|