gomyck-tools 1.4.1__py3-none-any.whl → 1.4.3__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.
- ctools/__init__.py +21 -0
- ctools/ai/env_config.py +18 -1
- ctools/ai/llm_chat.py +8 -8
- ctools/ai/llm_client.py +26 -24
- ctools/ai/mcp/mcp_client.py +33 -17
- ctools/ai/tools/json_extract.py +3 -2
- ctools/ai/tools/quick_tools.py +71 -22
- ctools/ai/tools/tool_use_xml_parse.py +2 -1
- ctools/ai/tools/xml_extract.py +3 -0
- ctools/application.py +21 -19
- ctools/aspect.py +65 -0
- ctools/auto/browser_element.py +11 -3
- ctools/auto/plan_area.py +2 -2
- ctools/auto/pty_process.py +0 -1
- ctools/auto/screenshot.py +3 -4
- ctools/auto/win_canvas.py +10 -4
- ctools/auto/win_control.py +8 -4
- ctools/call.py +32 -47
- ctools/cdate.py +43 -2
- ctools/cid.py +6 -4
- ctools/cipher/aes_util.py +2 -2
- ctools/cipher/b64.py +2 -0
- ctools/cipher/czip.py +3 -1
- ctools/cipher/rsa.py +6 -1
- ctools/cipher/sign.py +1 -0
- ctools/cipher/sm_util.py +3 -0
- ctools/cjson.py +5 -0
- ctools/cron_lite.py +10 -4
- ctools/database/database.py +52 -22
- ctools/dict_wrapper.py +1 -0
- ctools/ex.py +4 -0
- ctools/geo/coord_trans.py +94 -94
- ctools/geo/douglas_rarefy.py +13 -9
- ctools/metrics.py +6 -0
- ctools/office/cword.py +7 -7
- ctools/office/word_fill.py +1 -4
- ctools/patch.py +88 -0
- ctools/path_info.py +29 -0
- ctools/pkg/__init__.py +4 -0
- ctools/pkg/dynamic_imp.py +38 -0
- ctools/pools/process_pool.py +6 -1
- ctools/pools/thread_pool.py +6 -2
- ctools/similar.py +3 -0
- ctools/stream/ckafka.py +11 -5
- ctools/stream/credis.py +37 -23
- ctools/stream/mqtt_utils.py +2 -2
- ctools/sys_info.py +8 -0
- ctools/sys_log.py +4 -1
- ctools/util/cftp.py +4 -2
- ctools/util/cklock.py +118 -0
- ctools/util/config_util.py +52 -0
- ctools/util/http_util.py +1 -0
- ctools/util/image_process.py +8 -0
- ctools/util/jb_cut.py +53 -0
- ctools/util/snow_id.py +3 -2
- ctools/web/__init__.py +2 -2
- ctools/web/aio_web_server.py +19 -9
- ctools/web/api_result.py +3 -2
- ctools/web/bottle_web_base.py +134 -70
- ctools/web/bottle_webserver.py +41 -35
- ctools/web/bottle_websocket.py +4 -0
- ctools/web/ctoken.py +81 -13
- ctools/web/download_util.py +1 -1
- ctools/web/params_util.py +4 -0
- ctools/web/upload_util.py +1 -1
- {gomyck_tools-1.4.1.dist-info → gomyck_tools-1.4.3.dist-info}/METADATA +9 -11
- gomyck_tools-1.4.3.dist-info/RECORD +88 -0
- ctools/auto/pacth.py +0 -74
- gomyck_tools-1.4.1.dist-info/RECORD +0 -82
- {gomyck_tools-1.4.1.dist-info → gomyck_tools-1.4.3.dist-info}/WHEEL +0 -0
- {gomyck_tools-1.4.1.dist-info → gomyck_tools-1.4.3.dist-info}/licenses/LICENSE +0 -0
- {gomyck_tools-1.4.1.dist-info → gomyck_tools-1.4.3.dist-info}/top_level.txt +0 -0
ctools/web/bottle_webserver.py
CHANGED
|
@@ -5,51 +5,41 @@ from wsgiref.simple_server import WSGIServer, WSGIRequestHandler, make_server
|
|
|
5
5
|
from bottle import ServerAdapter, Bottle, template, static_file, abort, redirect, response
|
|
6
6
|
|
|
7
7
|
from ctools import sys_info
|
|
8
|
+
from ctools.pkg.dynamic_imp import load_modules_from_package
|
|
9
|
+
from ctools.web.bottle_web_base import cache_white_list
|
|
8
10
|
|
|
9
|
-
"""
|
|
10
|
-
module_names = list(globals().keys())
|
|
11
|
-
def get_modules():
|
|
12
|
-
mods = []
|
|
13
|
-
for modname in module_names:
|
|
14
|
-
if modname == 'base' or modname == 'online' or modname.startswith('__') or modname == 'importlib': continue
|
|
15
|
-
module = globals()[modname]
|
|
16
|
-
mods.append(module)
|
|
17
|
-
return mods
|
|
18
|
-
|
|
19
|
-
def get_ws_modules():
|
|
20
|
-
from . import websocket
|
|
21
|
-
return [websocket]
|
|
22
|
-
"""
|
|
23
11
|
|
|
24
12
|
"""
|
|
25
|
-
|
|
26
|
-
from ctools
|
|
13
|
+
import controllers
|
|
14
|
+
from ctools import patch
|
|
15
|
+
from ctools.database import database
|
|
16
|
+
from ctools.util.config_util import load_config
|
|
17
|
+
from ctools.web import bottle_web_base, bottle_webserver
|
|
18
|
+
from key_word_cloud.db_core.db_init import init_partitions
|
|
19
|
+
from patch_manager import patch_funcs
|
|
27
20
|
|
|
28
|
-
|
|
29
|
-
app = bottle_web_base.init_app('子模块写 context_path, 主模块就不用写任何东西')
|
|
21
|
+
database.init_db('postgresql://postgres:123123@192.168.xx.xx:5432/xxx', default_schema='xxx', auto_gen_table=False, echo=False)
|
|
30
22
|
|
|
31
|
-
|
|
32
|
-
@bottle_web_base.before_intercept(0)
|
|
33
|
-
def token_check():
|
|
34
|
-
return bottle_web_base.common_auth_verify(secret_key)
|
|
23
|
+
config = load_config('application.ini')
|
|
35
24
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return R.ok(ctoken.gen_token({'username': 'xxx'}, secret_key, 3600))
|
|
25
|
+
patch.sync_version(config.base.app_name, config.base.version, patch_funcs)
|
|
26
|
+
init_partitions()
|
|
39
27
|
|
|
40
|
-
|
|
41
|
-
@bottle_web_base.rule('DOC:DOWNLOAD')
|
|
42
|
-
def demo(params):
|
|
43
|
-
print(params)
|
|
28
|
+
app = bottle_web_base.init_app("/api", True)
|
|
44
29
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
30
|
+
@bottle_web_base.before_intercept(0)
|
|
31
|
+
def token_check():
|
|
32
|
+
return bottle_web_base.common_auth_verify(config.base.secret_key)
|
|
33
|
+
|
|
34
|
+
if __name__ == '__main__':
|
|
35
|
+
main_server = bottle_webserver.init_bottle(app)
|
|
36
|
+
main_server.auto_mount(controllers)
|
|
37
|
+
main_server.run()
|
|
49
38
|
"""
|
|
50
39
|
|
|
51
40
|
_default_port = 8888
|
|
52
41
|
|
|
42
|
+
|
|
53
43
|
class CBottle:
|
|
54
44
|
|
|
55
45
|
def __init__(self, bottle: Bottle, port=_default_port, quiet=False):
|
|
@@ -98,7 +88,8 @@ class CBottle:
|
|
|
98
88
|
|
|
99
89
|
def run(self):
|
|
100
90
|
http_server = WSGIRefServer(port=self.port)
|
|
101
|
-
print('Click the link below to open the service homepage %s' % '\n \t\t http://localhost:%s \n \t\t http://%s:%s' %
|
|
91
|
+
print('Click the link below to open the service homepage %s' % '\n \t\t http://localhost:%s \n \t\t http://%s:%s' % (self.port, sys_info.get_local_ipv4(), self.port), file=sys.stderr)
|
|
92
|
+
cache_white_list(self.bottle)
|
|
102
93
|
self.bottle.run(server=http_server, quiet=self.quiet)
|
|
103
94
|
|
|
104
95
|
def set_index(self, filename='index.html', root='./', is_tpl=False, redirect_url=None, **kwargs):
|
|
@@ -118,16 +109,31 @@ class CBottle:
|
|
|
118
109
|
if not context_path: return
|
|
119
110
|
self.bottle.mount(context_path, app, **kwargs)
|
|
120
111
|
|
|
121
|
-
def
|
|
112
|
+
def auto_mount(self, package, exclude=None, recursive=True):
|
|
113
|
+
for module in load_modules_from_package(package, exclude, recursive):
|
|
114
|
+
if self.bottle.context_path != '/':
|
|
115
|
+
if module.app.context_path == '/':
|
|
116
|
+
ctx_path = self.bottle.context_path
|
|
117
|
+
else:
|
|
118
|
+
ctx_path = self.bottle.context_path + module.app.context_path
|
|
119
|
+
else:
|
|
120
|
+
ctx_path = module.app.context_path
|
|
121
|
+
print("mount: %s on %s" % (ctx_path, module.__name__))
|
|
122
|
+
self.bottle.mount(ctx_path, module.app)
|
|
123
|
+
|
|
124
|
+
def init_bottle(app: Bottle = None, port=_default_port, quiet=False) -> CBottle:
|
|
122
125
|
bottle = app or Bottle()
|
|
123
126
|
return CBottle(bottle, port, quiet)
|
|
124
127
|
|
|
128
|
+
|
|
125
129
|
class ThreadedWSGIServer(ThreadingMixIn, WSGIServer):
|
|
126
130
|
daemon_threads = True
|
|
127
131
|
|
|
132
|
+
|
|
128
133
|
class CustomWSGIHandler(WSGIRequestHandler):
|
|
129
134
|
def log_request(*args, **kw): pass
|
|
130
135
|
|
|
136
|
+
|
|
131
137
|
class WSGIRefServer(ServerAdapter):
|
|
132
138
|
|
|
133
139
|
def __init__(self, host='0.0.0.0', port=_default_port):
|
ctools/web/bottle_websocket.py
CHANGED
|
@@ -33,6 +33,7 @@ socket_app.run()
|
|
|
33
33
|
|
|
34
34
|
_default_port = 8887
|
|
35
35
|
|
|
36
|
+
|
|
36
37
|
class CBottle:
|
|
37
38
|
|
|
38
39
|
def __init__(self, bottle: Bottle, port=_default_port, quiet=False):
|
|
@@ -47,10 +48,12 @@ class CBottle:
|
|
|
47
48
|
def mount(self, context_path, app):
|
|
48
49
|
self.bottle.mount(context_path, app)
|
|
49
50
|
|
|
51
|
+
|
|
50
52
|
def init_bottle(port=_default_port, quiet=False) -> CBottle:
|
|
51
53
|
bottle = Bottle()
|
|
52
54
|
return CBottle(bottle, port, quiet)
|
|
53
55
|
|
|
56
|
+
|
|
54
57
|
class CustomWebSocketHandler(WebSocketHandler):
|
|
55
58
|
def log_request(self):
|
|
56
59
|
if '101' not in str(self.status):
|
|
@@ -60,6 +63,7 @@ class CustomWebSocketHandler(WebSocketHandler):
|
|
|
60
63
|
return
|
|
61
64
|
self.logger.info(log_msg)
|
|
62
65
|
|
|
66
|
+
|
|
63
67
|
class WebSocketServer(ServerAdapter):
|
|
64
68
|
|
|
65
69
|
def __init__(self, host='0.0.0.0', port=_default_port):
|
ctools/web/ctoken.py
CHANGED
|
@@ -8,28 +8,96 @@ import time
|
|
|
8
8
|
import jwt
|
|
9
9
|
from bottle import request
|
|
10
10
|
|
|
11
|
+
from ctools import cid
|
|
11
12
|
from ctools.dict_wrapper import DictWrapper
|
|
12
13
|
|
|
13
|
-
token_header = 'Authorization'
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
class CToken:
|
|
16
|
+
token_audience = ["gomyck"]
|
|
17
|
+
token_secret_key = 'gomyck123'
|
|
18
|
+
token_header = 'Authorization'
|
|
18
19
|
|
|
19
|
-
def
|
|
20
|
+
def gen_token(userid, username, payload={}, expired: int = 3600, rules= []) -> str:
|
|
21
|
+
if expired and expired > 0: payload.update({'exp': time.time() + expired})
|
|
22
|
+
payload.update({'iss': "gomyck", 'jti': cid.get_snowflake_id_str(), 'nbf': time.time(), 'iat': time.time()})
|
|
23
|
+
payload.update({'rules': rules})
|
|
24
|
+
payload.update({'uid': userid})
|
|
25
|
+
payload.update({'sub': username})
|
|
26
|
+
payload.update({'aud': CToken.token_audience})
|
|
27
|
+
payload.update({'rules': rules})
|
|
28
|
+
return jwt.encode(payload, CToken.token_secret_key, algorithm='HS256')
|
|
29
|
+
|
|
30
|
+
def get_payload(token=None):
|
|
20
31
|
try:
|
|
21
|
-
|
|
32
|
+
if token is None: token = get_token()
|
|
33
|
+
payload = jwt.decode(token, options={"verify_signature": False}, algorithms=['HS256'])
|
|
22
34
|
return DictWrapper(payload)
|
|
23
35
|
except Exception as e:
|
|
24
36
|
return None
|
|
25
37
|
|
|
26
|
-
def
|
|
27
|
-
|
|
38
|
+
def get_token_payload(token=None):
|
|
39
|
+
if token is None: token = get_token()
|
|
40
|
+
return get_payload(token)
|
|
41
|
+
|
|
42
|
+
def is_valid(token=None):
|
|
43
|
+
"""
|
|
44
|
+
判断token是否有效
|
|
45
|
+
:param token: token 信息
|
|
46
|
+
:return: 是否有效
|
|
47
|
+
"""
|
|
48
|
+
if token is None: token = get_token()
|
|
49
|
+
if token is None: return False
|
|
50
|
+
try:
|
|
51
|
+
jwt.decode(token, CToken.token_secret_key, algorithms=['HS256'], audience=CToken.token_audience)
|
|
52
|
+
except Exception as e:
|
|
53
|
+
print(e)
|
|
54
|
+
return False
|
|
55
|
+
return True
|
|
56
|
+
|
|
57
|
+
def get_user_name():
|
|
58
|
+
"""
|
|
59
|
+
获取用户名称
|
|
60
|
+
:return: 用户ID
|
|
61
|
+
"""
|
|
62
|
+
token_obj = get_token_attr("sub")
|
|
63
|
+
return token_obj
|
|
64
|
+
|
|
65
|
+
def get_user_id():
|
|
66
|
+
"""
|
|
67
|
+
获取用户ID
|
|
68
|
+
:return: 用户ID
|
|
69
|
+
"""
|
|
70
|
+
token_obj = get_token_attr("uid")
|
|
71
|
+
return token_obj
|
|
72
|
+
|
|
73
|
+
def get_token_id():
|
|
74
|
+
"""
|
|
75
|
+
获取token id
|
|
76
|
+
:return: token id
|
|
77
|
+
"""
|
|
78
|
+
token_obj = get_token_attr("jti")
|
|
79
|
+
return token_obj
|
|
80
|
+
|
|
81
|
+
def get_app_flag() -> []:
|
|
82
|
+
"""
|
|
83
|
+
获取服务标识
|
|
84
|
+
:return: 服务标识 []
|
|
85
|
+
"""
|
|
86
|
+
token_obj = get_token_attr("aud")
|
|
87
|
+
return token_obj
|
|
88
|
+
|
|
89
|
+
def get_token_attr(attr):
|
|
90
|
+
token_obj = get_token_payload()
|
|
91
|
+
return getattr(token_obj, attr, None)
|
|
28
92
|
|
|
29
|
-
def
|
|
30
|
-
|
|
93
|
+
def get_token():
|
|
94
|
+
auth_token = request.get_header(CToken.token_header)
|
|
95
|
+
if auth_token is None:
|
|
96
|
+
auth_token = request.get_cookie(CToken.token_header)
|
|
97
|
+
return auth_token
|
|
31
98
|
|
|
32
99
|
# if __name__ == '__main__':
|
|
33
|
-
# token = gen_token(
|
|
34
|
-
#
|
|
35
|
-
# print(
|
|
100
|
+
# token = gen_token(123, username='xxx', expired=0)
|
|
101
|
+
# print(token)
|
|
102
|
+
# print(get_payload(token))
|
|
103
|
+
# print(is_valid(token))
|
ctools/web/download_util.py
CHANGED
ctools/web/params_util.py
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
__author__ = 'haoyang'
|
|
4
4
|
__date__ = '2025/6/11 09:35'
|
|
5
5
|
|
|
6
|
+
|
|
6
7
|
def is_list(v: str):
|
|
7
8
|
try:
|
|
8
9
|
list(v)
|
|
@@ -13,6 +14,7 @@ def is_list(v: str):
|
|
|
13
14
|
except Exception:
|
|
14
15
|
return False
|
|
15
16
|
|
|
17
|
+
|
|
16
18
|
def is_digit(v: str):
|
|
17
19
|
try:
|
|
18
20
|
float(v)
|
|
@@ -20,12 +22,14 @@ def is_digit(v: str):
|
|
|
20
22
|
except Exception:
|
|
21
23
|
return False
|
|
22
24
|
|
|
25
|
+
|
|
23
26
|
def is_bool(v: str):
|
|
24
27
|
if v in ["False", "True"]:
|
|
25
28
|
return True
|
|
26
29
|
else:
|
|
27
30
|
return False
|
|
28
31
|
|
|
32
|
+
|
|
29
33
|
def dict_to_params(obj: dict):
|
|
30
34
|
params = ""
|
|
31
35
|
for k, v in obj.items():
|
ctools/web/upload_util.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gomyck-tools
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.3
|
|
4
4
|
Summary: A tools collection for python development by hao474798383
|
|
5
5
|
Author-email: gomyck <hao474798383@163.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -15,7 +15,7 @@ Requires-Dist: croniter~=5.0.1
|
|
|
15
15
|
Requires-Dist: gmssl~=3.2.2
|
|
16
16
|
Requires-Dist: psutil~=6.1.0
|
|
17
17
|
Requires-Dist: jsonpath_ng~=1.7.0
|
|
18
|
-
Requires-Dist: bottle~=0.13.
|
|
18
|
+
Requires-Dist: bottle~=0.13.4
|
|
19
19
|
Requires-Dist: requests~=2.32.3
|
|
20
20
|
Requires-Dist: urllib3~=1.26.20
|
|
21
21
|
Requires-Dist: kafka-python~=2.0.2
|
|
@@ -29,15 +29,13 @@ Requires-Dist: paramiko==3.5.0
|
|
|
29
29
|
Requires-Dist: pyjwt==2.10.1
|
|
30
30
|
Requires-Dist: cryptography==44.0.2
|
|
31
31
|
Requires-Dist: redis==5.2.1
|
|
32
|
-
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Provides-Extra: auto-ui
|
|
40
|
-
Requires-Dist: pynput==1.7.7; extra == "auto-ui"
|
|
32
|
+
Requires-Dist: uvloop>=0.21.0
|
|
33
|
+
Requires-Dist: jieba>=0.42.1
|
|
34
|
+
Provides-Extra: kwc
|
|
35
|
+
Requires-Dist: imageio>=2.37.0; extra == "kwc"
|
|
36
|
+
Requires-Dist: wordcloud>=1.9.4; extra == "kwc"
|
|
37
|
+
Requires-Dist: jieba==0.42.1; extra == "kwc"
|
|
38
|
+
Requires-Dist: paddlepaddle==2.6.1; extra == "kwc"
|
|
41
39
|
Dynamic: license-file
|
|
42
40
|
|
|
43
41
|
# Gomyck-Tools
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
ctools/__init__.py,sha256=7EtnbO7mi1iYQeyU4CLusYrwO96_dC7eR7jboyWAqvg,1089
|
|
2
|
+
ctools/application.py,sha256=QFLbwmjznz2HAwVyph9PhzMpJUU5R82eMaVcw5UDSMk,15899
|
|
3
|
+
ctools/aspect.py,sha256=lXrpeu_F3w6v2Hu2yOwQIRGqfDN25_H-1YyW6fPt_mw,1667
|
|
4
|
+
ctools/call.py,sha256=TFFC8PqvCu0PS0XelmV4QXdXezQiUsEacxg3RgKvdwE,1572
|
|
5
|
+
ctools/cdate.py,sha256=OhKAaQfo2Rxd3Jx3g9AfPsaISRoLkstqZdaGT4ZZr_I,3096
|
|
6
|
+
ctools/cdebug.py,sha256=_mihZRCEx_bi7Kv_QPjP4MPLNFrl-GR1Y_irTgOP7OU,4021
|
|
7
|
+
ctools/cid.py,sha256=utxK9u6Df1HuMaiQztqnJ5EENYaJHzZ0pCIuXpveckA,401
|
|
8
|
+
ctools/cjson.py,sha256=XloZIRnc8Wd8OsTAqDRvhmkqbj97KtyzXTDWJm-unZk,1370
|
|
9
|
+
ctools/cron_lite.py,sha256=rVu9S2oouaw_XZ5RMDJidCNepg5yoEJwLcfcaGTuJRA,8235
|
|
10
|
+
ctools/dict_wrapper.py,sha256=0NRtHUX7MVjfIyms_gJiofGcD-x4lBCnaSpkk5yDdjE,461
|
|
11
|
+
ctools/ex.py,sha256=9npepunW0G1obXqjnvUEiNAjQ5XDazZvEtlF5ceFRCM,869
|
|
12
|
+
ctools/metrics.py,sha256=8d0ymwyHF5vDnVmjVqny5puLljX_mSsqAH8BI3tiMYg,5254
|
|
13
|
+
ctools/patch.py,sha256=2eIle4uVTIcy1QMB1LbApo47cQTJ8GnXMihp-Mkgse0,3128
|
|
14
|
+
ctools/path_info.py,sha256=JoEGPeeSu1jMGTIquq2CZFMe7Ergg8gL4DPt3_Q4q0U,2688
|
|
15
|
+
ctools/similar.py,sha256=ByOFaJ2AHZBe3ekoEco5miXcZP1XW7vGecH1i3dES5g,698
|
|
16
|
+
ctools/sys_info.py,sha256=QynB_2nQeGUuUdqJQldtEq916gDfPBsei1OWx9GYKSI,4278
|
|
17
|
+
ctools/sys_log.py,sha256=Sud91NQEVIiqiW6zffv-LrdmVKqva9ijUpdhTxrQhDA,2782
|
|
18
|
+
ctools/ai/__init__.py,sha256=gTYAICILq48icnFbg0HCbsQO8PbU02EDOQ0JeMvfqTY,98
|
|
19
|
+
ctools/ai/env_config.py,sha256=L98G9LPdpD7Yl5XbA_-KfkcA4mDunQoKiYtK5w7QR-s,1790
|
|
20
|
+
ctools/ai/llm_chat.py,sha256=HnuejSXQrwiIn5VDjkF09W78Tki_1KCdf9fWOHGxCxA,8668
|
|
21
|
+
ctools/ai/llm_client.py,sha256=_-lGP_mMqT26D898c_ys_XdHRse5Uqsp0nRBeQJNrzA,6176
|
|
22
|
+
ctools/ai/llm_exception.py,sha256=wsCVl0m53Mk7Xfug1obocAthlX0oEo4dytg1eOhWHPg,389
|
|
23
|
+
ctools/ai/mcp/__init__.py,sha256=gTYAICILq48icnFbg0HCbsQO8PbU02EDOQ0JeMvfqTY,98
|
|
24
|
+
ctools/ai/mcp/mcp_client.py,sha256=UU7TSMreWcSmbOVoyH02YSVzxE3peg89Z5Hifyg3RlQ,11946
|
|
25
|
+
ctools/ai/tools/__init__.py,sha256=gPc-ViRgtFlfX7JUbk5wQZ3wkJ5Ylh14CIqPwa83VPs,98
|
|
26
|
+
ctools/ai/tools/json_extract.py,sha256=FLrwrpYxAYQ0nvUok9OhmVQUaWhOpftDS4-uJIV3j0o,4839
|
|
27
|
+
ctools/ai/tools/quick_tools.py,sha256=XjYHINavVkFly4sB7Q5dDkR8UpTYmUYZZpMKU80izXw,3026
|
|
28
|
+
ctools/ai/tools/think_process.py,sha256=RGU9j3_O328Byw05ILek-aMfFBczbly2RA-QRouqUjM,257
|
|
29
|
+
ctools/ai/tools/tool_use_xml_parse.py,sha256=xZkxbXoOR5o_mEaUgKfD6oMGsc0BVxNJk5FO4_uvQ_4,1430
|
|
30
|
+
ctools/ai/tools/xml_extract.py,sha256=u1HZFCbMDwmNAvSPBia6-7H3WoRHN6oUQ8wGG5A2WHw,234
|
|
31
|
+
ctools/auto/__init__.py,sha256=zERjXFeDwOnR6GW77qJfpxTFv-otJK2HvI241-214N4,98
|
|
32
|
+
ctools/auto/browser_element.py,sha256=pbcAS8V6KaEflIaV4BEQxIcFapW9ZtMvv_RsaraP1Cc,9969
|
|
33
|
+
ctools/auto/plan_area.py,sha256=kPCOGxHG8KIdE1wjm62u-5MWqmlbaoW8ZIjVj5kpims,3370
|
|
34
|
+
ctools/auto/pty_process.py,sha256=0lHow3na3M3f7EFx7IPM9petdSZC9iTEF7a246pv0GQ,1622
|
|
35
|
+
ctools/auto/resource_bundle.py,sha256=FA0p_yLp6dxVwCqUgorVUq495J-RDhmCMe5P5f4F_oc,3796
|
|
36
|
+
ctools/auto/screenshot.py,sha256=Uu8rHG2jKQh6Dj39c3oNujU6O_5qnvnwXhVJ88WtLbI,4558
|
|
37
|
+
ctools/auto/win_canvas.py,sha256=zr4ND0wjKlbP_YM9jJBbl4GEr_I5UvJ8CPS_JJhrRaE,2531
|
|
38
|
+
ctools/auto/win_control.py,sha256=r7OUc9YsQsU6bIpJPnBFvfVks5flmjOpAzT-v47fCJk,3543
|
|
39
|
+
ctools/cipher/__init__.py,sha256=OkUaZv5ckkXJFNbRyFZqkX5m3GxTueEGEBU99_jJQNE,98
|
|
40
|
+
ctools/cipher/aes_util.py,sha256=IOkvo89jOOqpjvFDehS2jgy-q7QD8_Vxcjgt-vqmyLE,699
|
|
41
|
+
ctools/cipher/b64.py,sha256=TLVYRCZc4BowPGk-RoSz89o9mqpDmFW8IlceP_KNZcI,196
|
|
42
|
+
ctools/cipher/czip.py,sha256=7zNaafiG-O6NkaSv4cBP8jxUBqCTmCmPsd6efX0bu9Y,4679
|
|
43
|
+
ctools/cipher/rsa.py,sha256=7TPwlt-JQxDVHwvL_Am9ZKI70B2CfJDqQDf473edHSQ,2264
|
|
44
|
+
ctools/cipher/sign.py,sha256=i__5PVevvR2-VjJyInmyH1QJOpmuxcA9ZIM0oxxFWVo,567
|
|
45
|
+
ctools/cipher/sm_util.py,sha256=cC58wZ9IL08SvUfWUNjX5139fal2SnXGaFQ0R9WA3SE,1675
|
|
46
|
+
ctools/database/__init__.py,sha256=fB36UC93Pya_1YyWGMzDy3D4tMDTBQoYK20E4wgNqec,98
|
|
47
|
+
ctools/database/database.py,sha256=yfW8nw6_rONYz6F1343hmwy_es6eh3WEtKt9jIrStHk,7220
|
|
48
|
+
ctools/geo/__init__.py,sha256=OkUaZv5ckkXJFNbRyFZqkX5m3GxTueEGEBU99_jJQNE,98
|
|
49
|
+
ctools/geo/coord_trans.py,sha256=UWCU1wnrTDU1aLSVAwmiHOeH7Pu-Dp8lDLAngDG48NM,3761
|
|
50
|
+
ctools/geo/douglas_rarefy.py,sha256=bJo6TwNxPa-7-8MOi8MULxeqnz4cvIJN-oXqBDWNAVM,4883
|
|
51
|
+
ctools/office/__init__.py,sha256=wum34b8YJg0qD7uKdDEbozSE8RIxWqTVa44CCIZyqPU,98
|
|
52
|
+
ctools/office/cword.py,sha256=bIthKmf0oBqjcdkrU5hFDAPp66ZrjeMNzjIxOlMPeCc,837
|
|
53
|
+
ctools/office/word_fill.py,sha256=ZoTxz0-agEy5atIRWqYmQZz82nVr2zz9JebSTMkulIo,18214
|
|
54
|
+
ctools/office/word_fill_entity.py,sha256=eX3G0Gy16hfGpavQSEkCIoKDdTnNgRRJrFvKliETZK8,985
|
|
55
|
+
ctools/pkg/__init__.py,sha256=MVdmAIChV2Jx9OaBGq639vNGsshVvKVAc3lf7hN90Yg,98
|
|
56
|
+
ctools/pkg/dynamic_imp.py,sha256=rHPPq5gHCOxSgKv4kuU3xOUI0tc_oU5CJd9rourSQbA,1256
|
|
57
|
+
ctools/pools/__init__.py,sha256=3_W3mvEs6pInRTvK7TqOPu9dC2z8rCHvHZFXO4KNYT8,98
|
|
58
|
+
ctools/pools/process_pool.py,sha256=p6Mrh59gXrL9wpQ1dS72-GKtX_lEoAFc4_PLrXjukPk,957
|
|
59
|
+
ctools/pools/thread_pool.py,sha256=ekfoxowyaKWUgevUgRbwee27IFJpqNoz-w27urlX_q8,948
|
|
60
|
+
ctools/stream/__init__.py,sha256=mf8vkbcJdYpvDslgXkkHOz6rKBzU1qfxi8xQGQ1A90w,98
|
|
61
|
+
ctools/stream/ckafka.py,sha256=_vTMIVQBjjsW1iH29BXNQrvEWGgdacDBm3ZrjBjBUGk,5938
|
|
62
|
+
ctools/stream/credis.py,sha256=qxfkhtwHCvGN2eUAr9lpS42um02IXkcZTmiMXs0_Yfg,4551
|
|
63
|
+
ctools/stream/mqtt_utils.py,sha256=HOT8uFOXmgPFRvxcmBPXlOJuhekupleaYwB47lGVSpk,10718
|
|
64
|
+
ctools/util/__init__.py,sha256=jJLxgj-rdTVIo_czMcN83-HQI9yyBYy1L5gw8ZAbmyc,98
|
|
65
|
+
ctools/util/cftp.py,sha256=ESLFNW7yfRYD4e_c777Gmm4jf9Vks4waGe_TKncgxMQ,2485
|
|
66
|
+
ctools/util/cklock.py,sha256=uS1g8H7jtQ5dINKe-k23osQ1sjvZSZrkXGwH6qKcgNo,3234
|
|
67
|
+
ctools/util/compile_util.py,sha256=Nybh3vnkurIKnPnubdYzigjnzFu4GaTMKPvqFdibxmE,510
|
|
68
|
+
ctools/util/config_util.py,sha256=FBacCqQ1kPtRl1VEz0IsAuxI0zdpqUiuBv11G8kiDLE,1230
|
|
69
|
+
ctools/util/html_soup.py,sha256=rnr8M3gn3gQGo-wNaNFXDjdzp8AAkv9o4yqfIIfO-zw,1567
|
|
70
|
+
ctools/util/http_util.py,sha256=cx0FRnPLFdJ0mF9UYphl40SZj68fqG30Q0udku9hZIE,769
|
|
71
|
+
ctools/util/image_process.py,sha256=nqJOi2p8wLe8wRsfkH99MyEYSjE9i4fthxBJwrrZVB8,835
|
|
72
|
+
ctools/util/jb_cut.py,sha256=22QUkKVjJVCYXzgM_fNBdOcMKylCZxy1hGPqno64BnM,1576
|
|
73
|
+
ctools/util/snow_id.py,sha256=KCuQ0zOTlmus8gZetmRA5y0jBSd8J0KXcJ33EzgCKjE,2225
|
|
74
|
+
ctools/web/__init__.py,sha256=koSNYeKF5Z_xbp4Q2qbZ4ZP-3--1phbOYN9e4SJy_gk,98
|
|
75
|
+
ctools/web/aio_web_server.py,sha256=p46BOU3_m4Jb57yAACeedKjhlFc1YC0QJSUe2selBgA,5693
|
|
76
|
+
ctools/web/api_result.py,sha256=i1MjTnnlgkWl_q07xr-TLQeLYlXEh4DEclUFE414nSk,1568
|
|
77
|
+
ctools/web/bottle_web_base.py,sha256=e8Ve4a07e-mH6j8KDbKbHEQOunvdldQb1MAYOEfM86M,8468
|
|
78
|
+
ctools/web/bottle_webserver.py,sha256=kueGN9l9eYlq2KfC-4q355Imw94LV8LrifrdT_kbCec,5059
|
|
79
|
+
ctools/web/bottle_websocket.py,sha256=xsu9fAtTuR5DsSsQjiBfaYxLjOWFyfr1sYM6cktTovI,1957
|
|
80
|
+
ctools/web/ctoken.py,sha256=WaB29kqGlKAh21aUw5avl2h8AgLD1aESw8KCpqaN5nM,2539
|
|
81
|
+
ctools/web/download_util.py,sha256=v0JTXiED1bvoWFfwfd-LD5s7_aoRQ0lCkaGwSnSp7WI,1954
|
|
82
|
+
ctools/web/params_util.py,sha256=eJDV3PSq-ZHb8UZf6xqs8kOhbyZzits1H9yPoUBIDXg,828
|
|
83
|
+
ctools/web/upload_util.py,sha256=z1QQCi4SFx08jrAQH5-Y_ShiM4MghuD_5Qz6V9KK_4U,1076
|
|
84
|
+
gomyck_tools-1.4.3.dist-info/licenses/LICENSE,sha256=X25ypfH9E6VTht2hcO8k7LCSdHUcoG_ALQt80jdYZfY,547
|
|
85
|
+
gomyck_tools-1.4.3.dist-info/METADATA,sha256=8QMLyPlLz6WepCoRUmDfsKaQ-ieZCrqJi1tluZ9ImVk,1513
|
|
86
|
+
gomyck_tools-1.4.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
87
|
+
gomyck_tools-1.4.3.dist-info/top_level.txt,sha256=-MiIH9FYRVKp1i5_SVRkaI-71WmF1sZSRrNWFU9ls3s,7
|
|
88
|
+
gomyck_tools-1.4.3.dist-info/RECORD,,
|
ctools/auto/pacth.py
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import shutil
|
|
3
|
-
|
|
4
|
-
from sqlalchemy.sql import text
|
|
5
|
-
|
|
6
|
-
from ctools import database
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class Patch:
|
|
10
|
-
|
|
11
|
-
def __init__(self, oldVersion, newVersion, pythonPath, playwrightPath, driverPath) -> None:
|
|
12
|
-
super().__init__()
|
|
13
|
-
self.oldV = oldVersion[len('V'):].replace('.', '').replace('-snapshot', '')
|
|
14
|
-
self.currentV = newVersion[len('V'):].replace('.', '').replace('-snapshot', '')
|
|
15
|
-
self.snapshot = '-snapshot' in newVersion or '-snapshot' in oldVersion
|
|
16
|
-
self.pythonPath = pythonPath
|
|
17
|
-
self.playwrightPath = playwrightPath
|
|
18
|
-
self.driverPath = driverPath
|
|
19
|
-
self.deleteSDK, self.deleteHPL, self.deleteDriver = False, False, False
|
|
20
|
-
|
|
21
|
-
def apply_patch(self):
|
|
22
|
-
patch_methods = [method for method in dir(self) if callable(getattr(self, method)) and method.startswith('patch_V')]
|
|
23
|
-
patch_methods.sort(key=lambda x: int(x[len('patch_V'):]))
|
|
24
|
-
max_method_name = patch_methods[-1]
|
|
25
|
-
exec_max_method = False
|
|
26
|
-
for method_name in patch_methods:
|
|
27
|
-
slVersion = method_name[len('patch_V'):]
|
|
28
|
-
if int(self.currentV) > int(slVersion) >= int(self.oldV):
|
|
29
|
-
if max_method_name == method_name: exec_max_method = True
|
|
30
|
-
method = getattr(self, method_name)
|
|
31
|
-
print('start exec patch {}'.format(method_name))
|
|
32
|
-
method()
|
|
33
|
-
print('patch {} update success'.format(method_name))
|
|
34
|
-
if self.snapshot and not exec_max_method:
|
|
35
|
-
print('start exec snapshot patch {}'.format(max_method_name))
|
|
36
|
-
method = getattr(self, max_method_name)
|
|
37
|
-
method()
|
|
38
|
-
print('snapshot patch {} update success'.format(max_method_name))
|
|
39
|
-
|
|
40
|
-
def patch_V220(self):
|
|
41
|
-
pass
|
|
42
|
-
|
|
43
|
-
def run_sqls(self, sqls):
|
|
44
|
-
with database.get_session() as s:
|
|
45
|
-
for sql in sqls.split(";"):
|
|
46
|
-
try:
|
|
47
|
-
s.execute(text(sql.strip()))
|
|
48
|
-
s.commit()
|
|
49
|
-
except Exception as e:
|
|
50
|
-
print('结构升级错误, 请检查!!! {}'.format(e.__cause__))
|
|
51
|
-
|
|
52
|
-
def remove_sdk(self):
|
|
53
|
-
if self.deleteSDK: return
|
|
54
|
-
try:
|
|
55
|
-
self.deleteSDK = True
|
|
56
|
-
if os.path.exists(self.pythonPath): shutil.rmtree(self.pythonPath)
|
|
57
|
-
except Exception as e:
|
|
58
|
-
print('删除SDK错误: {}'.format(e))
|
|
59
|
-
|
|
60
|
-
def remove_hpl(self):
|
|
61
|
-
if self.deleteHPL: return
|
|
62
|
-
try:
|
|
63
|
-
self.deleteHPL = True
|
|
64
|
-
if os.path.exists(self.playwrightPath): shutil.rmtree(self.playwrightPath)
|
|
65
|
-
except Exception as e:
|
|
66
|
-
print('删除HPL错误: {}'.format(e))
|
|
67
|
-
|
|
68
|
-
def remove_driver(self):
|
|
69
|
-
if self.deleteDriver: return
|
|
70
|
-
try:
|
|
71
|
-
self.deleteDriver = True
|
|
72
|
-
if os.path.exists(self.driverPath): shutil.rmtree(self.driverPath)
|
|
73
|
-
except Exception as e:
|
|
74
|
-
print('删除Driver错误: {}'.format(e))
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
ctools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
ctools/application.py,sha256=yXqCVbBbfe_bhHDBxV7grj9KzVr72tM7we2pYTQ4eiY,15943
|
|
3
|
-
ctools/call.py,sha256=BCr8wzt5qd70okv8IZn-9-EpjywleZgvA3u1vfZ_Kt8,1581
|
|
4
|
-
ctools/cdate.py,sha256=h3rvlw_K2F0QTac2Zat_1us76R0P-Qj6_6NeQPfM3VE,1697
|
|
5
|
-
ctools/cdebug.py,sha256=_mihZRCEx_bi7Kv_QPjP4MPLNFrl-GR1Y_irTgOP7OU,4021
|
|
6
|
-
ctools/cid.py,sha256=_0CCz3Mr1hHtj7FKDdD0vXU5tk6h42qTF8IIU8XvYxA,340
|
|
7
|
-
ctools/cjson.py,sha256=d0RZ53b-M18OudRFGRtPCvvGofJcaLHdbNlTCemyJag,1365
|
|
8
|
-
ctools/cron_lite.py,sha256=CUqdtO02VnYUWcw6t6Jr7v2dKKhx3_G7CDAtlWnirBE,8232
|
|
9
|
-
ctools/dict_wrapper.py,sha256=otxDX0CCKbBCVFtASweo5VEv6_ettH-CptA6azX1mJI,460
|
|
10
|
-
ctools/ex.py,sha256=_UtbmDLrC7uZsoBtTdecuCZAlf2DA7fvojUf5fGZDVo,795
|
|
11
|
-
ctools/metrics.py,sha256=YaTBCfvL9Y0uciDuxQ5WJEAn2bUaLtQP6F5Xfr_2Iuc,5248
|
|
12
|
-
ctools/path_info.py,sha256=OmfYu-Jjg2huRY6Su8zJ_2EGFFhtBZFbobYTwbjJtG4,1817
|
|
13
|
-
ctools/similar.py,sha256=7mBbp7JrGGyAgA_hDmCvGJ6hGE1Lh43ocyqPkLGclyc,695
|
|
14
|
-
ctools/sys_info.py,sha256=T5pcRblNHEmXEvPk2PPvQga7Hh5aDnNN72pt4U176SE,4270
|
|
15
|
-
ctools/sys_log.py,sha256=T-tgOcrFggSJ2I6pLHhKpj4fvVFk_vbZBOrInKC6y3Q,2789
|
|
16
|
-
ctools/ai/__init__.py,sha256=gTYAICILq48icnFbg0HCbsQO8PbU02EDOQ0JeMvfqTY,98
|
|
17
|
-
ctools/ai/env_config.py,sha256=pZ8dG-4-CeMjBdgFHvljY2xMfyBE_0bM961UjIzm6xs,1400
|
|
18
|
-
ctools/ai/llm_chat.py,sha256=dAFar0A5h3ws_kjx9MlWZAawLPYHIwvfdyO_umJgkpU,8655
|
|
19
|
-
ctools/ai/llm_client.py,sha256=nQKjQj8WzDqCnMsYag3Td5hYTXep2PthRm6KS7Qyc8U,5661
|
|
20
|
-
ctools/ai/llm_exception.py,sha256=wsCVl0m53Mk7Xfug1obocAthlX0oEo4dytg1eOhWHPg,389
|
|
21
|
-
ctools/ai/mcp/__init__.py,sha256=gTYAICILq48icnFbg0HCbsQO8PbU02EDOQ0JeMvfqTY,98
|
|
22
|
-
ctools/ai/mcp/mcp_client.py,sha256=9T22s8BmerT7FrmRJr2VRhvNaV17Xz-C8jGNp08PYu0,11649
|
|
23
|
-
ctools/ai/tools/__init__.py,sha256=gPc-ViRgtFlfX7JUbk5wQZ3wkJ5Ylh14CIqPwa83VPs,98
|
|
24
|
-
ctools/ai/tools/json_extract.py,sha256=bgubZ2RwTo_R1X0CzMnvBWu61hglB1l6oO553645RXc,4842
|
|
25
|
-
ctools/ai/tools/quick_tools.py,sha256=WeUFDLLHrP6PCs1pM3G_hRS2YSTp5XjCrJ077u06jeo,2369
|
|
26
|
-
ctools/ai/tools/think_process.py,sha256=RGU9j3_O328Byw05ILek-aMfFBczbly2RA-QRouqUjM,257
|
|
27
|
-
ctools/ai/tools/tool_use_xml_parse.py,sha256=zpHKMhU5LFSpuznU_Z5w_HHp-Bney-Te8DxoU1BNHZ0,1429
|
|
28
|
-
ctools/ai/tools/xml_extract.py,sha256=lpUTERzUQhbiWanc5_ukBP0wPIVg0F9va39S36yyI-4,231
|
|
29
|
-
ctools/auto/__init__.py,sha256=zERjXFeDwOnR6GW77qJfpxTFv-otJK2HvI241-214N4,98
|
|
30
|
-
ctools/auto/browser_element.py,sha256=OkGrQJZMnxx9i_uzjrSnnvRTK6fvP0nN6ztNze1UE0g,9957
|
|
31
|
-
ctools/auto/pacth.py,sha256=MJ9Du-J9Gv62y4cZKls1jKbl5a5kL2y9bD-gzYUCveQ,2604
|
|
32
|
-
ctools/auto/plan_area.py,sha256=yEpW562h9TgKfENwO5oOtJ9F0CXxseHJiqF6SiBbnrs,3358
|
|
33
|
-
ctools/auto/pty_process.py,sha256=r3-MF5hkFQ7ZAGlrvUKtCEeQS1V2yWW4JDlPrFZXCkc,1623
|
|
34
|
-
ctools/auto/resource_bundle.py,sha256=FA0p_yLp6dxVwCqUgorVUq495J-RDhmCMe5P5f4F_oc,3796
|
|
35
|
-
ctools/auto/screenshot.py,sha256=sDcNPg22IQL5qXADFJObunSeSC6kEkrtYpe2Fje0rIk,4539
|
|
36
|
-
ctools/auto/win_canvas.py,sha256=PAxI4i1jalfree9d1YG4damjc2EzaHZrgHZCTgk2GiM,2530
|
|
37
|
-
ctools/auto/win_control.py,sha256=vs1qz1Repj3efeU8iSecW-w4d3w-BYRAxmx7wXyhnzs,3536
|
|
38
|
-
ctools/cipher/__init__.py,sha256=OkUaZv5ckkXJFNbRyFZqkX5m3GxTueEGEBU99_jJQNE,98
|
|
39
|
-
ctools/cipher/aes_util.py,sha256=L5Jg4QtVTdIxHe9zEpR8oMQx0IrYK68vjEYb_RmkhPA,699
|
|
40
|
-
ctools/cipher/b64.py,sha256=_BdhX3p3-MaSSlU2wivN5qPxQfacR3VRBr1WC456tU0,194
|
|
41
|
-
ctools/cipher/czip.py,sha256=8LBoB4PsjN2HGga5sWk1FSigP21kIrRrzK63l92H0R8,4675
|
|
42
|
-
ctools/cipher/rsa.py,sha256=hxks2--eJvo2OW5Hj7xzOjF1QkybgR-3fUcvGpEO_ko,2259
|
|
43
|
-
ctools/cipher/sign.py,sha256=JOkgpgsMbk7T3c3MOj1U6eiEndUG9XQ-uIX9e615A_Y,566
|
|
44
|
-
ctools/cipher/sm_util.py,sha256=R0m52TQE-CT7pvGTP27UWNCfdzpQ8C-ALz7p0mnOnLU,1672
|
|
45
|
-
ctools/database/__init__.py,sha256=fB36UC93Pya_1YyWGMzDy3D4tMDTBQoYK20E4wgNqec,98
|
|
46
|
-
ctools/database/database.py,sha256=_DnzaIC_daO_60ixkQGGtgHJhwFceTZBNJ79H4pofZI,6421
|
|
47
|
-
ctools/geo/__init__.py,sha256=OkUaZv5ckkXJFNbRyFZqkX5m3GxTueEGEBU99_jJQNE,98
|
|
48
|
-
ctools/geo/coord_trans.py,sha256=pzIHxC4aLwvOF3eJG47Dda3vIq-Zp42xnu_FwILDflU,3951
|
|
49
|
-
ctools/geo/douglas_rarefy.py,sha256=iRdUdhmaMmdfXPzoleQaGMrtcAoHUDRPHYtWStTx4U4,4889
|
|
50
|
-
ctools/office/__init__.py,sha256=wum34b8YJg0qD7uKdDEbozSE8RIxWqTVa44CCIZyqPU,98
|
|
51
|
-
ctools/office/cword.py,sha256=ZRzAFn96yjo-hAbZuGIm4DoBAL2y8tFySWZ5xbYgY6Q,857
|
|
52
|
-
ctools/office/word_fill.py,sha256=bId-pMuPVQm7bMySJgcTvSETT3H2gPqii0bHpWOWOmY,18217
|
|
53
|
-
ctools/office/word_fill_entity.py,sha256=eX3G0Gy16hfGpavQSEkCIoKDdTnNgRRJrFvKliETZK8,985
|
|
54
|
-
ctools/pools/__init__.py,sha256=3_W3mvEs6pInRTvK7TqOPu9dC2z8rCHvHZFXO4KNYT8,98
|
|
55
|
-
ctools/pools/process_pool.py,sha256=1TuZySUbQjgYYcuwis54DIwQTimWvTLNahSra7Ia8Ps,951
|
|
56
|
-
ctools/pools/thread_pool.py,sha256=Mt60XMhs-nk-hbkPo8NA7wQ4RxRLZTk4X6vh5Wn3WEw,944
|
|
57
|
-
ctools/stream/__init__.py,sha256=mf8vkbcJdYpvDslgXkkHOz6rKBzU1qfxi8xQGQ1A90w,98
|
|
58
|
-
ctools/stream/ckafka.py,sha256=8zMTS6iCCvxi5Ez4z9mcaBoVX7tb4R5tfyjG-xlM1HQ,5907
|
|
59
|
-
ctools/stream/credis.py,sha256=Cd14--jl-kCEDPbHcv6UWlVK4lwXT3XbqVN7T-KWMEQ,4509
|
|
60
|
-
ctools/stream/mqtt_utils.py,sha256=0MUDjOBORR4Tbao4nsta3SJ_ZEDawzkwhXOoh9IMMcQ,10718
|
|
61
|
-
ctools/util/__init__.py,sha256=jJLxgj-rdTVIo_czMcN83-HQI9yyBYy1L5gw8ZAbmyc,98
|
|
62
|
-
ctools/util/cftp.py,sha256=SkHPDvKu58jnMnl68u5WxWEiFWsm2C0CGa5_GR_Obcw,2481
|
|
63
|
-
ctools/util/compile_util.py,sha256=Nybh3vnkurIKnPnubdYzigjnzFu4GaTMKPvqFdibxmE,510
|
|
64
|
-
ctools/util/html_soup.py,sha256=rnr8M3gn3gQGo-wNaNFXDjdzp8AAkv9o4yqfIIfO-zw,1567
|
|
65
|
-
ctools/util/http_util.py,sha256=8kt_9v9YwTmzvqNBBAWOfFGAurbjJIPeyEwg3X1Bpy8,768
|
|
66
|
-
ctools/util/image_process.py,sha256=TapXYCPqC7GesgrALecxxa_ApuT_dxUG5fqQIJF2bNY,670
|
|
67
|
-
ctools/util/snow_id.py,sha256=B26wzGOqV3cs5bC_z5ulXlDxPXWrHdwVPM7N4kjmZqI,2272
|
|
68
|
-
ctools/web/__init__.py,sha256=sMc0cAWWs3h1pAoapzE69DfvdfbA4P4JNkJRBy2qQhM,94
|
|
69
|
-
ctools/web/aio_web_server.py,sha256=cO0HRdsJ9iHSO1HCT--TwdFTSM5y26RTl8HwuEfVKBg,5413
|
|
70
|
-
ctools/web/api_result.py,sha256=UeQXI_zuZB-uY5qECTpz1fC7EGy82yGQqWMx20tyRTw,1572
|
|
71
|
-
ctools/web/bottle_web_base.py,sha256=GEz2D33pI5iGzooMn1ffoFw3Gc_gb433AFnYVcEFci8,6336
|
|
72
|
-
ctools/web/bottle_webserver.py,sha256=tJtMSZ7r6jiIk2NzrX4uSoRQnTqueM6AYdGKd9AhgOg,4676
|
|
73
|
-
ctools/web/bottle_websocket.py,sha256=zqCE1rGlMeC9oxFOULNd137IWIhdetq83Oq5OoH_zGI,1953
|
|
74
|
-
ctools/web/ctoken.py,sha256=CdHm6-ykBLh7Lv8ZRMunSW40qMTkRH0ITeMLuG9z1ts,883
|
|
75
|
-
ctools/web/download_util.py,sha256=EVN3fxwbUE5Q8nurAya5IYialIKBMoFtSOy0uPKyV-E,1951
|
|
76
|
-
ctools/web/params_util.py,sha256=2vAuwn8OPydv_7BPKypqk4zuerPZqOGcf95wV19H1Ks,824
|
|
77
|
-
ctools/web/upload_util.py,sha256=xH4Z-sz-s7EVDEz2gKXoP9OZTLc-er5yvsiLqhSDFm8,1076
|
|
78
|
-
gomyck_tools-1.4.1.dist-info/licenses/LICENSE,sha256=X25ypfH9E6VTht2hcO8k7LCSdHUcoG_ALQt80jdYZfY,547
|
|
79
|
-
gomyck_tools-1.4.1.dist-info/METADATA,sha256=CDdnfnwdeNZsLWRZqCrx7cneqAbQgwXraoYDbI4ahg0,1595
|
|
80
|
-
gomyck_tools-1.4.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
81
|
-
gomyck_tools-1.4.1.dist-info/top_level.txt,sha256=-MiIH9FYRVKp1i5_SVRkaI-71WmF1sZSRrNWFU9ls3s,7
|
|
82
|
-
gomyck_tools-1.4.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|