pixelarraylib 1.1.2__tar.gz → 1.1.3__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.
Files changed (51) hide show
  1. pixelarraylib-1.1.3/PKG-INFO +209 -0
  2. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/README.md +45 -0
  3. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/__init__.py +1 -1
  4. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/__main__.py +22 -7
  5. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/decorators/decorators.py +36 -0
  6. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/gitlab/code_analyzer.py +44 -32
  7. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/gitlab/pypi_package_manager.py +32 -0
  8. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/monitor/feishu.py +68 -0
  9. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/scripts/__init__.py +4 -2
  10. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/scripts/collect_code_to_txt.py +10 -8
  11. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/scripts/remove_empty_lines.py +7 -5
  12. pixelarraylib-1.1.3/pixelarraylib/scripts/tson_convert.py +118 -0
  13. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/system/common.py +28 -16
  14. pixelarraylib-1.1.3/pixelarraylib/system/tson.py +520 -0
  15. pixelarraylib-1.1.3/pixelarraylib.egg-info/PKG-INFO +209 -0
  16. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib.egg-info/SOURCES.txt +3 -1
  17. pixelarraylib-1.1.3/pixelarraylib.egg-info/requires.txt +74 -0
  18. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pyproject.toml +59 -5
  19. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/requirements.txt +0 -3
  20. pixelarraylib-1.1.2/PKG-INFO +0 -121
  21. pixelarraylib-1.1.2/pixelarraylib.egg-info/PKG-INFO +0 -121
  22. pixelarraylib-1.1.2/pixelarraylib.egg-info/requires.txt +0 -25
  23. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/LICENSE +0 -0
  24. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/MANIFEST.in +0 -0
  25. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/__init__.py +0 -0
  26. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/acr.py +0 -0
  27. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/aliyun_email.py +0 -0
  28. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/billing.py +0 -0
  29. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/content_scanner.py +0 -0
  30. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/domain.py +0 -0
  31. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/eci.py +0 -0
  32. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/ecs.py +0 -0
  33. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/eip.py +0 -0
  34. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/fc.py +0 -0
  35. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/oss.py +0 -0
  36. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/sms.py +0 -0
  37. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/aliyun/sts.py +0 -0
  38. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/db_utils/mysql.py +0 -0
  39. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/db_utils/redis.py +0 -0
  40. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/decorators/__init__.py +0 -0
  41. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/gitlab/__init__.py +0 -0
  42. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/monitor/__init__.py +0 -0
  43. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/net/request.py +0 -0
  44. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/scripts/build_website.py +0 -0
  45. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/scripts/create_test_case_files.py +0 -0
  46. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/scripts/nginx_proxy_to_ecs.py +0 -0
  47. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib/system/__init__.py +0 -0
  48. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib.egg-info/dependency_links.txt +0 -0
  49. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib.egg-info/entry_points.txt +0 -0
  50. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/pixelarraylib.egg-info/top_level.txt +0 -0
  51. {pixelarraylib-1.1.2 → pixelarraylib-1.1.3}/setup.cfg +0 -0
@@ -0,0 +1,209 @@
1
+ Metadata-Version: 2.4
2
+ Name: pixelarraylib
3
+ Version: 1.1.3
4
+ Summary: PixelArray Python开发工具库 - 包含阿里云服务、数据库工具、装饰器、监控等功能
5
+ Author-email: Lu qi <qi.lu@pixelarrayai.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://gitlab.com/pixelarrayai/general_pythondevutils_lib
8
+ Project-URL: Bug Reports, https://gitlab.com/pixelarrayai/general_pythondevutils_lib/-/issues
9
+ Project-URL: Source, https://gitlab.com/pixelarrayai/general_pythondevutils_lib
10
+ Keywords: python,utils,aliyun,database,tools,pixelarray
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.8
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: Utilities
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Provides-Extra: aliyun
27
+ Requires-Dist: alibabacloud_tea_util; extra == "aliyun"
28
+ Requires-Dist: alibabacloud_cms20190101; extra == "aliyun"
29
+ Requires-Dist: alibabacloud_green20220302; extra == "aliyun"
30
+ Requires-Dist: alibabacloud_dm20151123; extra == "aliyun"
31
+ Requires-Dist: alibabacloud_fc20230330; extra == "aliyun"
32
+ Requires-Dist: alibabacloud_darabonba_stream; extra == "aliyun"
33
+ Requires-Dist: alibabacloud_dysmsapi20170525; extra == "aliyun"
34
+ Requires-Dist: alibabacloud_sts20150401; extra == "aliyun"
35
+ Requires-Dist: alibabacloud_alidns20150109; extra == "aliyun"
36
+ Requires-Dist: alibabacloud_eci20180808; extra == "aliyun"
37
+ Requires-Dist: alibabacloud_bssopenapi20171214; extra == "aliyun"
38
+ Requires-Dist: alibabacloud_cr20181201; extra == "aliyun"
39
+ Requires-Dist: alibabacloud_vpc20160428; extra == "aliyun"
40
+ Requires-Dist: alibabacloud_tea_openapi; extra == "aliyun"
41
+ Requires-Dist: alibabacloud_credentials; extra == "aliyun"
42
+ Requires-Dist: oss2; extra == "aliyun"
43
+ Requires-Dist: aiohttp; extra == "aliyun"
44
+ Requires-Dist: aiofiles; extra == "aliyun"
45
+ Requires-Dist: requests; extra == "aliyun"
46
+ Provides-Extra: mysql
47
+ Requires-Dist: pymysql; extra == "mysql"
48
+ Requires-Dist: aiomysql; extra == "mysql"
49
+ Requires-Dist: requests; extra == "mysql"
50
+ Provides-Extra: redis
51
+ Requires-Dist: redis; extra == "redis"
52
+ Requires-Dist: requests; extra == "redis"
53
+ Provides-Extra: monitor
54
+ Requires-Dist: requests; extra == "monitor"
55
+ Provides-Extra: net
56
+ Requires-Dist: requests; extra == "net"
57
+ Requires-Dist: aiohttp; extra == "net"
58
+ Provides-Extra: system
59
+ Requires-Dist: cryptography; extra == "system"
60
+ Requires-Dist: paramiko; extra == "system"
61
+ Requires-Dist: requests; extra == "system"
62
+ Provides-Extra: gitlab
63
+ Requires-Dist: requests; extra == "gitlab"
64
+ Requires-Dist: aiohttp; extra == "gitlab"
65
+ Requires-Dist: pandas; extra == "gitlab"
66
+ Provides-Extra: all
67
+ Requires-Dist: alibabacloud_tea_util; extra == "all"
68
+ Requires-Dist: alibabacloud_cms20190101; extra == "all"
69
+ Requires-Dist: alibabacloud_green20220302; extra == "all"
70
+ Requires-Dist: alibabacloud_dm20151123; extra == "all"
71
+ Requires-Dist: alibabacloud_fc20230330; extra == "all"
72
+ Requires-Dist: alibabacloud_darabonba_stream; extra == "all"
73
+ Requires-Dist: alibabacloud_dysmsapi20170525; extra == "all"
74
+ Requires-Dist: alibabacloud_sts20150401; extra == "all"
75
+ Requires-Dist: alibabacloud_alidns20150109; extra == "all"
76
+ Requires-Dist: alibabacloud_eci20180808; extra == "all"
77
+ Requires-Dist: alibabacloud_bssopenapi20171214; extra == "all"
78
+ Requires-Dist: alibabacloud_cr20181201; extra == "all"
79
+ Requires-Dist: alibabacloud_vpc20160428; extra == "all"
80
+ Requires-Dist: alibabacloud_tea_openapi; extra == "all"
81
+ Requires-Dist: alibabacloud_credentials; extra == "all"
82
+ Requires-Dist: oss2; extra == "all"
83
+ Requires-Dist: pymysql; extra == "all"
84
+ Requires-Dist: aiomysql; extra == "all"
85
+ Requires-Dist: redis; extra == "all"
86
+ Requires-Dist: cryptography; extra == "all"
87
+ Requires-Dist: paramiko; extra == "all"
88
+ Requires-Dist: requests; extra == "all"
89
+ Requires-Dist: aiohttp; extra == "all"
90
+ Requires-Dist: aiofiles; extra == "all"
91
+ Requires-Dist: pandas; extra == "all"
92
+ Dynamic: license-file
93
+
94
+ # PixelArrayLib - PixelArray Python开发工具库
95
+
96
+ PixelArrayLib是一个功能丰富的Python开发工具库,包含阿里云服务、数据库工具、装饰器、监控等功能,同时提供便捷的命令行工具。
97
+
98
+ ## 安装
99
+
100
+ ### 基础安装
101
+
102
+ ```bash
103
+ pip install pixelarraylib
104
+ ```
105
+
106
+ ### 可选依赖安装
107
+
108
+ 为了避免安装不必要的依赖,你可以按需安装特定模块的依赖:
109
+
110
+ ```bash
111
+ # 只安装阿里云服务相关依赖
112
+ pip install pixelarraylib[aliyun]
113
+
114
+ # 只安装MySQL工具相关依赖
115
+ pip install pixelarraylib[mysql]
116
+
117
+ # 只安装Redis工具相关依赖
118
+ pip install pixelarraylib[redis]
119
+
120
+ # 只安装监控工具相关依赖
121
+ pip install pixelarraylib[monitor]
122
+
123
+ # 只安装网络工具相关依赖
124
+ pip install pixelarraylib[net]
125
+
126
+ # 只安装系统工具相关依赖
127
+ pip install pixelarraylib[system]
128
+
129
+ # 只安装GitLab工具相关依赖
130
+ pip install pixelarraylib[gitlab]
131
+
132
+ # 安装所有可选依赖
133
+ pip install pixelarraylib[all]
134
+
135
+ # 组合安装多个模块
136
+ pip install pixelarraylib[mysql,redis]
137
+ ```
138
+
139
+ **可选依赖说明:**
140
+ - `aliyun`: 阿里云服务集成(OSS、SMS、FC、DM、ECS、ECI等)
141
+ - `mysql`: MySQL数据库工具(pymysql、aiomysql)
142
+ - `redis`: Redis数据库工具
143
+ - `monitor`: 监控告警工具(飞书通知等)
144
+ - `net`: 网络请求工具
145
+ - `system`: 系统工具(加密、SSH等)
146
+ - `gitlab`: GitLab工具(PyPI包管理、代码分析等)
147
+ - `all`: 所有可选依赖
148
+
149
+ ## 使用方法
150
+
151
+ ### 1. Python程序中使用
152
+
153
+ ```python
154
+ # 导入pixelarraylib模块
155
+ import pixelarraylib
156
+
157
+ # 使用各种功能模块
158
+ from pixelarraylib.aliyun import some_service
159
+ from pixelarraylib.db_utils import database_tools
160
+ from pixelarraylib.decorators import useful_decorators
161
+ ```
162
+
163
+ ### 2. 命令行工具使用
164
+
165
+ 安装后,你可以在命令行中直接使用 `pixelarraylib` 命令:
166
+
167
+ #### 创建测试用例文件
168
+ ```bash
169
+ # 一键创建所有测试用例文件
170
+ pixelarraylib create_test_case_files
171
+ ```
172
+
173
+ ## 功能特性
174
+
175
+ - **阿里云服务集成**: 包含CMS、Green、DM、FC、SMS、STS等服务
176
+ - **数据库工具**: MySQL、Redis等数据库操作工具
177
+ - **Web框架**: FastAPI集成
178
+ - **实用工具**: 二维码生成、加密解密、XML处理等
179
+ - **命令行工具**: 测试用例生成、代码统计等实用脚本
180
+
181
+ ## 开发
182
+
183
+ ### 本地开发安装
184
+
185
+ ```bash
186
+ # 克隆仓库
187
+ git clone https://gitlab.com/pixelarrayai/general_pythondevutils_lib.git
188
+ cd general_pythondevutils_lib
189
+
190
+ # 安装开发依赖
191
+ pip install -e .
192
+
193
+ # 测试命令行工具
194
+ pixelarraylib --help
195
+ ```
196
+
197
+ ### 添加新的命令行工具
198
+
199
+ 1. 在 `pixelarraylib/scripts/` 目录下创建新的脚本文件
200
+ 2. 在 `pixelarraylib/__main__.py` 中添加新的命令选项
201
+ 3. 更新 `pixelarraylib/scripts/__init__.py` 导出新功能
202
+
203
+ ## 许可证
204
+
205
+ MIT License
206
+
207
+ ## 作者
208
+
209
+ Lu qi (qi.lu@pixelarrayai.com)
@@ -4,10 +4,55 @@ PixelArrayLib是一个功能丰富的Python开发工具库,包含阿里云服
4
4
 
5
5
  ## 安装
6
6
 
7
+ ### 基础安装
8
+
7
9
  ```bash
8
10
  pip install pixelarraylib
9
11
  ```
10
12
 
13
+ ### 可选依赖安装
14
+
15
+ 为了避免安装不必要的依赖,你可以按需安装特定模块的依赖:
16
+
17
+ ```bash
18
+ # 只安装阿里云服务相关依赖
19
+ pip install pixelarraylib[aliyun]
20
+
21
+ # 只安装MySQL工具相关依赖
22
+ pip install pixelarraylib[mysql]
23
+
24
+ # 只安装Redis工具相关依赖
25
+ pip install pixelarraylib[redis]
26
+
27
+ # 只安装监控工具相关依赖
28
+ pip install pixelarraylib[monitor]
29
+
30
+ # 只安装网络工具相关依赖
31
+ pip install pixelarraylib[net]
32
+
33
+ # 只安装系统工具相关依赖
34
+ pip install pixelarraylib[system]
35
+
36
+ # 只安装GitLab工具相关依赖
37
+ pip install pixelarraylib[gitlab]
38
+
39
+ # 安装所有可选依赖
40
+ pip install pixelarraylib[all]
41
+
42
+ # 组合安装多个模块
43
+ pip install pixelarraylib[mysql,redis]
44
+ ```
45
+
46
+ **可选依赖说明:**
47
+ - `aliyun`: 阿里云服务集成(OSS、SMS、FC、DM、ECS、ECI等)
48
+ - `mysql`: MySQL数据库工具(pymysql、aiomysql)
49
+ - `redis`: Redis数据库工具
50
+ - `monitor`: 监控告警工具(飞书通知等)
51
+ - `net`: 网络请求工具
52
+ - `system`: 系统工具(加密、SSH等)
53
+ - `gitlab`: GitLab工具(PyPI包管理、代码分析等)
54
+ - `all`: 所有可选依赖
55
+
11
56
  ## 使用方法
12
57
 
13
58
  ### 1. Python程序中使用
@@ -20,7 +20,7 @@ PixelArray Python开发工具库
20
20
  from pixelarraylib.gitlab import pypi_package_manager
21
21
  """
22
22
 
23
- __version__ = "1.1.2"
23
+ __version__ = "1.1.3"
24
24
  __author__ = "PixelArray"
25
25
  __email__ = "qi.lu@pixelarrayai.com"
26
26
 
@@ -1,12 +1,13 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- ArrayLib 命令行工具入口点
3
+ PixelArrayLib 命令行工具入口点
4
4
  支持的命令:
5
5
  - pixelarraylib create_test_case_files
6
6
  - pixelarraylib collect_code_to_txt [options]
7
7
  - pixelarraylib nginx_proxy_to_ecs [options]
8
8
  - pixelarraylib remove_empty_lines <input_file> [output_file]
9
9
  - pixelarraylib build_website
10
+ - pixelarraylib tson_convert [options]
10
11
  """
11
12
 
12
13
  import sys
@@ -17,7 +18,7 @@ def main():
17
18
  # 检查是否有子命令
18
19
  if len(sys.argv) < 2:
19
20
  parser = argparse.ArgumentParser(
20
- description="ArrayLib 命令行工具",
21
+ description="PixelArrayLib 命令行工具",
21
22
  formatter_class=argparse.RawDescriptionHelpFormatter,
22
23
  epilog="""
23
24
  示例用法:
@@ -26,6 +27,7 @@ def main():
26
27
  pixelarraylib nginx_proxy_to_ecs --help # 查看Nginx反向代理到ECS工具帮助
27
28
  pixelarraylib remove_empty_lines --help # 查看去除空行工具帮助
28
29
  pixelarraylib build_website --help # 查看一键构建网站工具帮助
30
+ pixelarraylib tson_convert --help # 查看TSON转换工具帮助
29
31
  """,
30
32
  )
31
33
  parser.print_help()
@@ -50,7 +52,7 @@ def main():
50
52
  try:
51
53
  from pixelarraylib.scripts.collect_code_to_txt import main as collect_main
52
54
 
53
- # 修改sys.argv,移除第一个参数(arraylib),让collect_code_to_txt正确处理参数
55
+ # 修改sys.argv,移除第一个参数(pixelarraylib),让collect_code_to_txt正确处理参数
54
56
  original_argv = sys.argv
55
57
  sys.argv = [original_argv[0]] + original_argv[2:]
56
58
  collect_main()
@@ -66,7 +68,7 @@ def main():
66
68
  main as nginx_proxy_to_ecs,
67
69
  )
68
70
 
69
- # 修改sys.argv,移除第一个参数(arraylib),让nginx_proxy_to_ecs正确处理参数
71
+ # 修改sys.argv,移除第一个参数(pixelarraylib),让nginx_proxy_to_ecs正确处理参数
70
72
  original_argv = sys.argv
71
73
  sys.argv = [original_argv[0]] + original_argv[2:]
72
74
  nginx_proxy_to_ecs()
@@ -82,7 +84,7 @@ def main():
82
84
  main as remove_empty_lines_main,
83
85
  )
84
86
 
85
- # 修改sys.argv,移除第一个参数(arraylib),让remove_empty_lines正确处理参数
87
+ # 修改sys.argv,移除第一个参数(pixelarraylib),让remove_empty_lines正确处理参数
86
88
  original_argv = sys.argv
87
89
  sys.argv = [original_argv[0]] + original_argv[2:]
88
90
  remove_empty_lines_main()
@@ -103,9 +105,21 @@ def main():
103
105
  print(f"错误:无法导入 build_website 模块: {e}")
104
106
  sys.exit(1)
105
107
 
108
+ elif command == "tson_convert":
109
+ # 导入并执行TSON转换功能
110
+ try:
111
+ from pixelarraylib.scripts.tson_convert import main as tson_convert_main
112
+ original_argv = sys.argv
113
+ sys.argv = [original_argv[0]] + original_argv[2:]
114
+ tson_convert_main()
115
+ sys.argv = original_argv
116
+ except ImportError as e:
117
+ print(f"错误:无法导入 tson_convert 模块: {e}")
118
+ sys.exit(1)
119
+
106
120
  elif command in ["-h", "--help"]:
107
121
  parser = argparse.ArgumentParser(
108
- description="ArrayLib 命令行工具",
122
+ description="PixelArrayLib 命令行工具",
109
123
  formatter_class=argparse.RawDescriptionHelpFormatter,
110
124
  epilog="""
111
125
  示例用法:
@@ -114,13 +128,14 @@ def main():
114
128
  pixelarraylib nginx_proxy_to_ecs --help # 查看Nginx反向代理到ECS工具帮助
115
129
  pixelarraylib remove_empty_lines --help # 查看去除空行工具帮助
116
130
  pixelarraylib build_website --help # 查看一键构建网站工具帮助
131
+ pixelarraylib tson_convert --help # 查看TSON转换工具帮助
117
132
  """,
118
133
  )
119
134
  parser.print_help()
120
135
  else:
121
136
  print(f"错误:未知命令 '{command}'")
122
137
  print(
123
- "可用命令:create_test_case_files, collect_code_to_txt, nginx_proxy_to_ecs, remove_empty_lines, build_website"
138
+ "可用命令:create_test_case_files, collect_code_to_txt, nginx_proxy_to_ecs, remove_empty_lines, build_website, tson_convert"
124
139
  )
125
140
  print("使用 'pixelarraylib --help' 查看帮助")
126
141
  sys.exit(1)
@@ -18,6 +18,17 @@ def catch_exception(
18
18
  addtional_alert: str = "",
19
19
  alert_channel: str = "devtoolkit服务报警",
20
20
  ):
21
+ """
22
+ description:
23
+ 异常捕获装饰器,当函数执行失败时发送飞书告警
24
+ parameters:
25
+ exception_return(Any): 异常时返回的默认值
26
+ alert_params(bool): 是否在告警中包含函数参数
27
+ addtional_alert(str): 额外的告警信息
28
+ alert_channel(str): 飞书告警频道名称
29
+ return:
30
+ decorator(Callable): 装饰器函数
31
+ """
21
32
  feishu_alert = Feishu(alert_channel)
22
33
  def get_caller_function_name():
23
34
  """
@@ -65,6 +76,15 @@ def with_retry(
65
76
  retry_times: int = 3,
66
77
  retry_interval: int = 1,
67
78
  ) -> Callable:
79
+ """
80
+ description:
81
+ 重试装饰器,当函数执行失败时自动重试
82
+ parameters:
83
+ retry_times(int): 重试次数,默认为3
84
+ retry_interval(int): 重试间隔时间(秒),默认为1
85
+ return:
86
+ decorator(Callable): 装饰器函数
87
+ """
68
88
  def decorator(func: Callable) -> Callable:
69
89
  @functools.wraps(func)
70
90
  def wrapper(*args, **kwargs) -> Any:
@@ -85,6 +105,14 @@ def with_retry(
85
105
 
86
106
 
87
107
  def with_timeout(seconds):
108
+ """
109
+ description:
110
+ 超时装饰器,限制函数执行时间
111
+ parameters:
112
+ seconds(int): 超时时间(秒)
113
+ return:
114
+ decorator(Callable): 装饰器函数
115
+ """
88
116
  def decorator(func):
89
117
  @wraps(func)
90
118
  def wrapper(*args, **kwargs):
@@ -103,6 +131,14 @@ def with_timeout(seconds):
103
131
 
104
132
 
105
133
  def avoid_chinese_filename(func):
134
+ """
135
+ description:
136
+ 避免中文文件名的装饰器,自动处理包含中文的文件路径
137
+ parameters:
138
+ func(Callable): 被装饰的函数
139
+ return:
140
+ wrapper(Callable): 包装后的函数
141
+ """
106
142
  def contains_chinese(text):
107
143
  if not text:
108
144
  return False
@@ -34,11 +34,14 @@ class GitLabCodeAnalyzer:
34
34
  self.session = None
35
35
 
36
36
  async def get_project_id_name_list(self, group_id=None, owned_only=True):
37
- """获取项目的 ID 和名称列表
38
-
39
- Args:
40
- group_id: 组ID,如果指定则只获取该组的项目
41
- owned_only: 是否只获取用户拥有的项目,默认为True以提高速度
37
+ """
38
+ description:
39
+ 获取项目的 ID 和名称列表
40
+ parameters:
41
+ group_id(int): 组ID,如果指定则只获取该组的项目
42
+ owned_only(bool): 是否只获取用户拥有的项目,默认为True以提高速度
43
+ return:
44
+ project_list(list): 项目列表,每个元素为(id, name)元组
42
45
  """
43
46
  projects = await self.get_all_projects(
44
47
  group_id, owned_only=owned_only, membership_only=True
@@ -48,12 +51,15 @@ class GitLabCodeAnalyzer:
48
51
  async def get_all_projects(
49
52
  self, group_id=None, owned_only=True, membership_only=True
50
53
  ):
51
- """获取项目列表
52
-
53
- Args:
54
- group_id: 组ID,如果指定则只获取该组的项目
55
- owned_only: 是否只获取用户拥有的项目
56
- membership_only: 是否只获取用户有权限的项目
54
+ """
55
+ description:
56
+ 获取项目列表
57
+ parameters:
58
+ group_id(int): 组ID,如果指定则只获取该组的项目
59
+ owned_only(bool): 是否只获取用户拥有的项目
60
+ membership_only(bool): 是否只获取用户有权限的项目
61
+ return:
62
+ projects(list): 项目列表
57
63
  """
58
64
  if group_id:
59
65
  url = f"{self.gitlab_url}/api/v4/groups/{group_id}/projects"
@@ -107,12 +113,15 @@ class GitLabCodeAnalyzer:
107
113
  return projects
108
114
 
109
115
  async def get_project_code_stats(self, project_id, since=None, until=None):
110
- """获取项目的代码统计,包括每个贡献者的提交数和代码行数变化
111
-
112
- Args:
113
- project_id: 项目ID
114
- since: 开始日期,格式为YYYY-MM-DD
115
- until: 结束日期,格式为YYYY-MM-DD
116
+ """
117
+ description:
118
+ 获取项目的代码统计,包括每个贡献者的提交数和代码行数变化
119
+ parameters:
120
+ project_id(int): 项目ID
121
+ since(str): 开始日期,格式为YYYY-MM-DD
122
+ until(str): 结束日期,格式为YYYY-MM-DD
123
+ return:
124
+ stats(dict): 代码统计信息
116
125
  """
117
126
  session = await self._get_session()
118
127
 
@@ -257,12 +266,15 @@ class GitLabCodeAnalyzer:
257
266
  return None
258
267
 
259
268
  async def generate_code_report(self, group_id=None, since=None, until=None):
260
- """生成代码统计报告
261
-
262
- Args:
263
- group_id: 组ID,如果指定则只获取该组的项目
264
- since: 开始日期,格式为YYYY-MM-DD
265
- until: 结束日期,格式为YYYY-MM-DD
269
+ """
270
+ description:
271
+ 生成代码统计报告
272
+ parameters:
273
+ group_id(int): 组ID,如果指定则只获取该组的项目
274
+ since(str): 开始日期,格式为YYYY-MM-DD
275
+ until(str): 结束日期,格式为YYYY-MM-DD
276
+ return:
277
+ report_data(list): 代码统计报告数据
266
278
  """
267
279
  projects = await self.get_all_projects(group_id)
268
280
  report_data = []
@@ -316,15 +328,15 @@ class GitLabCodeAnalyzer:
316
328
  return project_data
317
329
 
318
330
  async def get_commit_details_report(self, project_id, since=None, until=None):
319
- """获取详细的提交信息报告
320
-
321
- Args:
322
- project_id: 项目ID
323
- since: 开始日期,格式为YYYY-MM-DD
324
- until: 结束日期,格式为YYYY-MM-DD
325
-
326
- Returns:
327
- List[Dict]: 包含所有提交详细信息的列表
331
+ """
332
+ description:
333
+ 获取详细的提交信息报告
334
+ parameters:
335
+ project_id(int): 项目ID
336
+ since(str): 开始日期,格式为YYYY-MM-DD
337
+ until(str): 结束日期,格式为YYYY-MM-DD
338
+ return:
339
+ commits(List[Dict]): 包含所有提交详细信息的列表
328
340
  """
329
341
  contributors = await self.get_project_code_stats(
330
342
  project_id, since=since, until=until
@@ -15,6 +15,15 @@ class GitLabPyPIPackageManager:
15
15
  }
16
16
 
17
17
  def _find_package_id(self, package_name: str, package_version: str) -> str:
18
+ """
19
+ description:
20
+ 查找包的ID
21
+ parameters:
22
+ package_name(str): 包名
23
+ package_version(str): 包版本
24
+ return:
25
+ str: 包ID
26
+ """
18
27
  url = f"{self.base_url}/packages"
19
28
  params = {
20
29
  "package_type": "pypi",
@@ -32,6 +41,12 @@ class GitLabPyPIPackageManager:
32
41
  return None
33
42
 
34
43
  def list_packages(self) -> List[str]:
44
+ """
45
+ description:
46
+ 列出所有包
47
+ return:
48
+ List[str]: 包列表
49
+ """
35
50
  url = f"{self.base_url}/packages"
36
51
  params = {"package_type": "pypi"}
37
52
  response = requests.get(url, headers=self.headers, params=params)
@@ -41,6 +56,14 @@ class GitLabPyPIPackageManager:
41
56
  return []
42
57
 
43
58
  def list_package_versions(self, package_name: str) -> List[str]:
59
+ """
60
+ description:
61
+ 列出包的版本
62
+ parameters:
63
+ package_name(str): 包名
64
+ return:
65
+ List[str]: 包版本列表
66
+ """
44
67
  url = f"{self.base_url}/packages"
45
68
  params = {"package_type": "pypi", "package_name": package_name}
46
69
  response = requests.get(url, headers=self.headers, params=params)
@@ -50,6 +73,15 @@ class GitLabPyPIPackageManager:
50
73
  return []
51
74
 
52
75
  def delete_package(self, package_name: str, package_version: str):
76
+ """
77
+ description:
78
+ 删除包
79
+ parameters:
80
+ package_name(str): 包名
81
+ package_version(str): 包版本
82
+ return:
83
+ bool: 是否删除成功
84
+ """
53
85
  package_id = self._find_package_id(package_name, package_version)
54
86
  if package_id is None:
55
87
  raise ValueError(f"Package {package_name} {package_version} not found")