pyxllib 0.0.43__py3-none-any.whl → 0.3.197__py3-none-any.whl
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/__init__.py +9 -2
- pyxllib/algo/__init__.py +8 -0
- pyxllib/algo/disjoint.py +54 -0
- pyxllib/algo/geo.py +541 -0
- pyxllib/{util/mathlib.py → algo/intervals.py} +172 -36
- pyxllib/algo/matcher.py +389 -0
- pyxllib/algo/newbie.py +166 -0
- pyxllib/algo/pupil.py +629 -0
- pyxllib/algo/shapelylib.py +67 -0
- pyxllib/algo/specialist.py +241 -0
- pyxllib/algo/stat.py +494 -0
- pyxllib/algo/treelib.py +149 -0
- pyxllib/algo/unitlib.py +66 -0
- pyxllib/autogui/__init__.py +5 -0
- pyxllib/autogui/activewin.py +246 -0
- pyxllib/autogui/all.py +9 -0
- pyxllib/autogui/autogui.py +852 -0
- pyxllib/autogui/uiautolib.py +362 -0
- pyxllib/autogui/virtualkey.py +102 -0
- pyxllib/autogui/wechat.py +827 -0
- pyxllib/autogui/wechat_msg.py +421 -0
- pyxllib/autogui/wxautolib.py +84 -0
- pyxllib/cv/__init__.py +1 -11
- pyxllib/cv/expert.py +267 -0
- pyxllib/cv/{imlib.py → imfile.py} +18 -83
- pyxllib/cv/imhash.py +39 -0
- pyxllib/cv/pupil.py +9 -0
- pyxllib/cv/rgbfmt.py +1525 -0
- pyxllib/cv/slidercaptcha.py +137 -0
- pyxllib/cv/trackbartools.py +163 -49
- pyxllib/cv/xlcvlib.py +1040 -0
- pyxllib/cv/xlpillib.py +423 -0
- pyxllib/data/__init__.py +0 -0
- pyxllib/data/echarts.py +240 -0
- pyxllib/data/jsonlib.py +89 -0
- pyxllib/{util/oss2_.py → data/oss.py} +11 -9
- pyxllib/data/pglib.py +1127 -0
- pyxllib/data/sqlite.py +568 -0
- pyxllib/{util → data}/sqllib.py +13 -31
- pyxllib/ext/JLineViewer.py +505 -0
- pyxllib/ext/__init__.py +6 -0
- pyxllib/{util → ext}/demolib.py +119 -35
- pyxllib/ext/drissionlib.py +277 -0
- pyxllib/ext/kq5034lib.py +12 -0
- pyxllib/{util/main.py → ext/old.py} +122 -284
- pyxllib/ext/qt.py +449 -0
- pyxllib/ext/robustprocfile.py +497 -0
- pyxllib/ext/seleniumlib.py +76 -0
- pyxllib/{util/tklib.py → ext/tk.py} +10 -11
- pyxllib/ext/unixlib.py +827 -0
- pyxllib/ext/utools.py +351 -0
- pyxllib/{util/webhooklib.py → ext/webhook.py} +45 -17
- pyxllib/ext/win32lib.py +40 -0
- pyxllib/ext/wjxlib.py +88 -0
- pyxllib/ext/wpsapi.py +124 -0
- pyxllib/ext/xlwork.py +9 -0
- pyxllib/ext/yuquelib.py +1105 -0
- pyxllib/file/__init__.py +17 -0
- pyxllib/file/docxlib.py +761 -0
- pyxllib/{util → file}/gitlib.py +40 -27
- pyxllib/file/libreoffice.py +165 -0
- pyxllib/file/movielib.py +148 -0
- pyxllib/file/newbie.py +10 -0
- pyxllib/file/onenotelib.py +1469 -0
- pyxllib/file/packlib/__init__.py +330 -0
- pyxllib/{util → file/packlib}/zipfile.py +598 -195
- pyxllib/file/pdflib.py +426 -0
- pyxllib/file/pupil.py +185 -0
- pyxllib/file/specialist/__init__.py +685 -0
- pyxllib/{basic/_5_dirlib.py → file/specialist/dirlib.py} +364 -93
- pyxllib/file/specialist/download.py +193 -0
- pyxllib/file/specialist/filelib.py +2829 -0
- pyxllib/file/xlsxlib.py +3131 -0
- pyxllib/file/xlsyncfile.py +341 -0
- pyxllib/prog/__init__.py +5 -0
- pyxllib/prog/cachetools.py +64 -0
- pyxllib/prog/deprecatedlib.py +233 -0
- pyxllib/prog/filelock.py +42 -0
- pyxllib/prog/ipyexec.py +253 -0
- pyxllib/prog/multiprogs.py +940 -0
- pyxllib/prog/newbie.py +451 -0
- pyxllib/prog/pupil.py +1197 -0
- pyxllib/{sitepackages.py → prog/sitepackages.py} +5 -3
- pyxllib/prog/specialist/__init__.py +391 -0
- pyxllib/prog/specialist/bc.py +203 -0
- pyxllib/prog/specialist/browser.py +497 -0
- pyxllib/prog/specialist/common.py +347 -0
- pyxllib/prog/specialist/datetime.py +199 -0
- pyxllib/prog/specialist/tictoc.py +240 -0
- pyxllib/prog/specialist/xllog.py +180 -0
- pyxllib/prog/xlosenv.py +108 -0
- pyxllib/stdlib/__init__.py +17 -0
- pyxllib/{util → stdlib}/tablepyxl/__init__.py +1 -3
- pyxllib/{util → stdlib}/tablepyxl/style.py +1 -1
- pyxllib/{util → stdlib}/tablepyxl/tablepyxl.py +2 -4
- pyxllib/text/__init__.py +8 -0
- pyxllib/text/ahocorasick.py +39 -0
- pyxllib/text/airscript.js +744 -0
- pyxllib/text/charclasslib.py +121 -0
- pyxllib/text/jiebalib.py +267 -0
- pyxllib/text/jinjalib.py +32 -0
- pyxllib/text/jsa_ai_prompt.md +271 -0
- pyxllib/text/jscode.py +922 -0
- pyxllib/text/latex/__init__.py +158 -0
- pyxllib/text/levenshtein.py +303 -0
- pyxllib/text/nestenv.py +1215 -0
- pyxllib/text/newbie.py +300 -0
- pyxllib/text/pupil/__init__.py +8 -0
- pyxllib/text/pupil/common.py +1121 -0
- pyxllib/text/pupil/xlalign.py +326 -0
- pyxllib/text/pycode.py +47 -0
- pyxllib/text/specialist/__init__.py +8 -0
- pyxllib/text/specialist/common.py +112 -0
- pyxllib/text/specialist/ptag.py +186 -0
- pyxllib/text/spellchecker.py +172 -0
- pyxllib/text/templates/echart_base.html +11 -0
- pyxllib/text/templates/highlight_code.html +17 -0
- pyxllib/text/templates/latex_editor.html +103 -0
- pyxllib/text/vbacode.py +17 -0
- pyxllib/text/xmllib.py +747 -0
- pyxllib/xl.py +39 -0
- pyxllib/xlcv.py +17 -0
- pyxllib-0.3.197.dist-info/METADATA +48 -0
- pyxllib-0.3.197.dist-info/RECORD +126 -0
- {pyxllib-0.0.43.dist-info → pyxllib-0.3.197.dist-info}/WHEEL +4 -5
- pyxllib/basic/_1_strlib.py +0 -945
- pyxllib/basic/_2_timelib.py +0 -488
- pyxllib/basic/_3_pathlib.py +0 -916
- pyxllib/basic/_4_loglib.py +0 -419
- pyxllib/basic/__init__.py +0 -54
- pyxllib/basic/arrow_.py +0 -250
- pyxllib/basic/chardet_.py +0 -66
- pyxllib/basic/dirlib.py +0 -529
- pyxllib/basic/dprint.py +0 -202
- pyxllib/basic/extension.py +0 -12
- pyxllib/basic/judge.py +0 -31
- pyxllib/basic/log.py +0 -204
- pyxllib/basic/pathlib_.py +0 -705
- pyxllib/basic/pytictoc.py +0 -102
- pyxllib/basic/qiniu_.py +0 -61
- pyxllib/basic/strlib.py +0 -761
- pyxllib/basic/timer.py +0 -132
- pyxllib/cv/cv.py +0 -834
- pyxllib/cv/cvlib/_1_geo.py +0 -543
- pyxllib/cv/cvlib/_2_cvprcs.py +0 -309
- pyxllib/cv/cvlib/_2_imgproc.py +0 -594
- pyxllib/cv/cvlib/_3_pilprcs.py +0 -80
- pyxllib/cv/cvlib/_4_cvimg.py +0 -211
- pyxllib/cv/cvlib/__init__.py +0 -10
- pyxllib/cv/debugtools.py +0 -82
- pyxllib/cv/fitz_.py +0 -300
- pyxllib/cv/installer.py +0 -42
- pyxllib/debug/_0_installer.py +0 -38
- pyxllib/debug/_1_typelib.py +0 -277
- pyxllib/debug/_2_chrome.py +0 -198
- pyxllib/debug/_3_showdir.py +0 -161
- pyxllib/debug/_4_bcompare.py +0 -140
- pyxllib/debug/__init__.py +0 -49
- pyxllib/debug/bcompare.py +0 -132
- pyxllib/debug/chrome.py +0 -198
- pyxllib/debug/installer.py +0 -38
- pyxllib/debug/showdir.py +0 -158
- pyxllib/debug/typelib.py +0 -278
- pyxllib/image/__init__.py +0 -12
- pyxllib/torch/__init__.py +0 -20
- pyxllib/torch/modellib.py +0 -37
- pyxllib/torch/trainlib.py +0 -344
- pyxllib/util/__init__.py +0 -20
- pyxllib/util/aip_.py +0 -141
- pyxllib/util/casiadb.py +0 -59
- pyxllib/util/excellib.py +0 -495
- pyxllib/util/filelib.py +0 -612
- pyxllib/util/jsondata.py +0 -27
- pyxllib/util/jsondata2.py +0 -92
- pyxllib/util/labelmelib.py +0 -139
- pyxllib/util/onepy/__init__.py +0 -29
- pyxllib/util/onepy/onepy.py +0 -574
- pyxllib/util/onepy/onmanager.py +0 -170
- pyxllib/util/pyautogui_.py +0 -219
- pyxllib/util/textlib.py +0 -1305
- pyxllib/util/unorder.py +0 -22
- pyxllib/util/xmllib.py +0 -639
- pyxllib-0.0.43.dist-info/METADATA +0 -39
- pyxllib-0.0.43.dist-info/RECORD +0 -80
- pyxllib-0.0.43.dist-info/top_level.txt +0 -1
- {pyxllib-0.0.43.dist-info → pyxllib-0.3.197.dist-info/licenses}/LICENSE +0 -0
pyxllib/basic/timer.py
DELETED
@@ -1,132 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python3
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
# @Author : 陈坤泽
|
4
|
-
# @Email : 877362867@qq.com
|
5
|
-
# @Data : 2020/05/31
|
6
|
-
|
7
|
-
|
8
|
-
import math
|
9
|
-
import re
|
10
|
-
import textwrap
|
11
|
-
import timeit
|
12
|
-
|
13
|
-
|
14
|
-
def shorten(s, width=200, placeholder='...'):
|
15
|
-
"""
|
16
|
-
:param width: 这个长度是上限,即使用placeholder时的字符串总长度也在这个范围内
|
17
|
-
|
18
|
-
>>> shorten('aaa', 10)
|
19
|
-
'aaa'
|
20
|
-
>>> shorten('hell world! 0123456789 0123456789', 11)
|
21
|
-
'hell wor...'
|
22
|
-
>>> shorten("Hello world!", width=12)
|
23
|
-
'Hello world!'
|
24
|
-
>>> shorten("Hello world!", width=11)
|
25
|
-
'Hello wo...'
|
26
|
-
>>> shorten('0123456789 0123456789', 2, 'xyz') # 自己写的shorten
|
27
|
-
'xy'
|
28
|
-
|
29
|
-
注意textwrap.shorten的缩略只针对空格隔开的单词有效,我这里的功能与其不太一样
|
30
|
-
>>> textwrap.shorten('0123456789 0123456789', 11) # 全部字符都被折叠了
|
31
|
-
'[...]'
|
32
|
-
>>> shorten('0123456789 0123456789', 11) # 自己写的shorten
|
33
|
-
'01234567...'
|
34
|
-
"""
|
35
|
-
s = re.sub(r'\s+', ' ', str(s))
|
36
|
-
n, m = len(s), len(placeholder)
|
37
|
-
if n > width:
|
38
|
-
s = s[:max(width - m, 0)] + placeholder
|
39
|
-
return s[:width] # 加了placeholder在特殊情况下也会超,再做个截断最保险
|
40
|
-
|
41
|
-
# return textwrap.shorten(str(s), width)
|
42
|
-
|
43
|
-
|
44
|
-
def parse_perf(data):
|
45
|
-
""" 输出性能分析报告,data是每次运行得到的时间数组
|
46
|
-
"""
|
47
|
-
n, sum_ = len(data), sum(data)
|
48
|
-
|
49
|
-
if n > 1: # 有多轮,则应该输出些参考统计指标
|
50
|
-
# np有标准差等公式,但这是basic底层库,不想依赖太多第三方库,所以手动实现
|
51
|
-
mean = sum_ / n
|
52
|
-
std = math.sqrt((sum([(x - mean) ** 2 for x in data]) / n))
|
53
|
-
li = [f'总耗时: {sum_:.3f}s', f'均值标准差: {mean:.3f}±{std:.3f}s',
|
54
|
-
f'总数: {n}', f'最小值: {min(data):.3f}s', f'最大值: {max(data):.3f}s']
|
55
|
-
return '\t'.join(li)
|
56
|
-
elif n == 1: # 只有一轮,则简单地输出耗时即可
|
57
|
-
sum_ = sum(data)
|
58
|
-
return f'用时: {sum_:.3f}s'
|
59
|
-
else:
|
60
|
-
raise ValueError
|
61
|
-
|
62
|
-
|
63
|
-
def performit(title, stmt="pass", setup="pass", repeat=1, number=1, globals=None, res_width=None, result=False):
|
64
|
-
""" 在timeit.repeat的基础上,做了层封装,能更好的展示运行效果
|
65
|
-
:param title: 测试标题、名称功能
|
66
|
-
:param res_width: 运行结果内容展示的字符上限数
|
67
|
-
:param result: 是否获取运行结果,使用该参数会重复运行一次函数
|
68
|
-
:return: 返回原函数单次执行结果
|
69
|
-
"""
|
70
|
-
# 1 性能报告
|
71
|
-
data = timeit.repeat(stmt=stmt, setup=setup,
|
72
|
-
repeat=repeat, number=number, globals=globals)
|
73
|
-
|
74
|
-
# 2 原函数运行结果(这里要先重载stdout)
|
75
|
-
if result:
|
76
|
-
if callable(stmt):
|
77
|
-
res = stmt()
|
78
|
-
else:
|
79
|
-
res = eval(stmt, globals)
|
80
|
-
res = ' 运行结果:' + shorten(str(res), res_width)
|
81
|
-
else:
|
82
|
-
res = ''
|
83
|
-
|
84
|
-
if res_width is None:
|
85
|
-
# 如果性能报告比较短,只有一次测试,那res_width默认长度可以高一点
|
86
|
-
res_width = 50 if len(data) > 1 else 200
|
87
|
-
print(title, parse_perf(data) + res)
|
88
|
-
|
89
|
-
return data
|
90
|
-
|
91
|
-
|
92
|
-
class Timer:
|
93
|
-
"""分析性能用的计时器类,支持with语法调用
|
94
|
-
必须显示地指明每一轮的start()和end(),否则会报错
|
95
|
-
"""
|
96
|
-
|
97
|
-
def __init__(self, title=''):
|
98
|
-
"""
|
99
|
-
:param title: 计时器名称
|
100
|
-
"""
|
101
|
-
# 不同的平台应该使用的计时器不同,这个直接用timeit中的配置最好
|
102
|
-
self.default_timer = timeit.default_timer
|
103
|
-
# 标题
|
104
|
-
self.title = title
|
105
|
-
self.data = []
|
106
|
-
self.start_clock = float('nan')
|
107
|
-
|
108
|
-
def start(self):
|
109
|
-
self.start_clock = self.default_timer()
|
110
|
-
|
111
|
-
def stop(self):
|
112
|
-
self.data.append(self.default_timer() - self.start_clock)
|
113
|
-
|
114
|
-
def report(self, msg=''):
|
115
|
-
""" 报告目前性能统计情况
|
116
|
-
"""
|
117
|
-
msg = f'{self.title} {msg}'
|
118
|
-
n = len(self.data)
|
119
|
-
|
120
|
-
if n >= 1:
|
121
|
-
print(msg, parse_perf(self.data))
|
122
|
-
elif n == 1:
|
123
|
-
sum_ = sum(self.data)
|
124
|
-
print(f'{msg} 用时: {sum_:.3f}s')
|
125
|
-
else: # 没有统计数据,则补充执行一次stop后汇报
|
126
|
-
print(f'{msg} 暂无计时信息')
|
127
|
-
|
128
|
-
def __enter__(self):
|
129
|
-
return self
|
130
|
-
|
131
|
-
def __exit__(self, *args):
|
132
|
-
self.report()
|