wedata-pre-code 1.0.15__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.
@@ -0,0 +1,232 @@
1
+ Metadata-Version: 2.3
2
+ Name: wedata-pre-code
3
+ Version: 1.0.15
4
+ Summary: WeData平台的预执行代码库,为机器学习实验提供与MLflow的深度集成
5
+ Author: WeData Team
6
+ Author-email: WeData Team <wedata@tencent.com>
7
+ License: MIT
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.8
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
17
+ Requires-Dist: feast==0.49.0
18
+ Requires-Dist: grpcio>=1.71.0
19
+ Requires-Dist: mlflow>=2.0.0
20
+ Requires-Dist: pydantic>=2.10.6
21
+ Requires-Dist: mlflow>=2.0.0,<3.0.0 ; extra == 'mlflow-v2'
22
+ Requires-Dist: wedata-mlflow-header-plugin>=0.1.2 ; extra == 'wedata-3'
23
+ Requires-Python: >=3.9
24
+ Project-URL: Homepage, https://wedata.tencent.com
25
+ Project-URL: Documentation, https://wedata.tencent.com/docs
26
+ Provides-Extra: mlflow-v2
27
+ Provides-Extra: wedata-3
28
+ Description-Content-Type: text/markdown
29
+
30
+ # WeData Pre-Code Library
31
+
32
+ WeData平台的预执行代码库,为机器学习实验提供与MLflow的深度集成和WeData平台的功能增强。
33
+
34
+ ## 项目概述
35
+
36
+ 本项目提供了两个版本的WeData客户端,用于在WeData平台上运行机器学习实验时提供以下功能:
37
+
38
+ - **MLflow集成增强**:自动注入WeData平台特定的标签和过滤条件
39
+ - **权限控制**:基于项目/工作空间的权限验证机制
40
+ - **URL生成**:自动生成实验和运行的查看链接
41
+ - **环境配置**:自动设置运行环境变量
42
+
43
+ ## 版本说明
44
+
45
+ ### Wedata2PreCodeClient (WeData 2.0版本)
46
+
47
+ 适用于WeData 2.0平台的客户端,主要特性:
48
+
49
+ - 基于项目ID进行权限控制
50
+ - 支持国内站和国际站URL模板
51
+ - 自动注入项目标签和机器学习类型标签
52
+ - 提供完整的MLflow客户端装饰器
53
+
54
+ ### Wedata3PreCodeClient (WeData 3.0版本)
55
+
56
+ 适用于WeData 3.0平台的客户端,主要特性:
57
+
58
+ - 基于工作空间ID进行权限控制
59
+ - 支持更灵活的配置选项
60
+ - 增强的标签注入和验证机制
61
+ - 支持机器学习和深度学习两种实验类型
62
+
63
+ ## 安装和使用
64
+
65
+ ### 安装依赖
66
+
67
+ ```bash
68
+ pip install mlflow
69
+ ```
70
+
71
+ ### 使用Wedata2PreCodeClient
72
+
73
+ ```python
74
+ from wedata_pre_code.wedata2.client import Wedata2PreCodeClient
75
+
76
+ # 初始化客户端
77
+ client = Wedata2PreCodeClient(
78
+ wedata_project_id="{{WEDATA_PROJECT_ID}}",
79
+ wedata_notebook_engine="{{WEDATA_NOTEBOOK_ENGINE}}",
80
+ qcloud_uin="{{QCLOUD_UIN}}",
81
+ qcloud_subuin="{{QCLOUD_SUBUIN}}",
82
+ wedata_default_feature_store_database="{{WEDATA_DEFAULT_FEATURE_STORE_DATABASE}}",
83
+ wedata_feature_store_databases="{{WEDATA_FEATURE_STORE_DATABASES}}",
84
+ qcloud_region="{{QCLOUD_REGION}}",
85
+ mlflow_tracking_uri="{{KERNEL_MLFLOW_TRACKING_URI}}",
86
+ feast_remote_address="{{KERNEL_FEAST_REMOTE_ADDRESS}}",
87
+ kernel_submit_form_workflow="{{KERNEL_SUBMIT_FORM_WORKFLOW}}",
88
+ kernel_task_name="{{KERNEL_TASK_NAME}}",
89
+ kernel_task_id="{{KERNEL_TASK_ID}}",
90
+ kernel_region="ap-chongqing",
91
+ kernel_is_international=bool("{{KERNEL_IS_INTERNATIONAL}}")
92
+ )
93
+
94
+ # 现在可以使用MLflow客户端,会自动应用WeData的增强功能
95
+ import mlflow
96
+ mlflow.start_run()
97
+ # ... 你的实验代码
98
+ ```
99
+
100
+ ### 使用Wedata3PreCodeClient
101
+
102
+ ```python
103
+ %pip install wedata-pre-code
104
+ from wedata_pre_code.wedata3.client import Wedata3PreCodeClient
105
+
106
+ # 初始化客户端
107
+ client = Wedata3PreCodeClient(
108
+ workspace_id="{{WorkspaceID}}",
109
+ base_url="{{BaseUrl}}",
110
+ region="{{Region}}",
111
+ ap_region_id=int("{{RegionId}}"),
112
+ mlflow_gateway_url="{{MlflowGatewayUrl}}",
113
+ feast_gateway_url="{{FeastGatewayUrl}}",
114
+ mlflow_proxy_ip="{{MlflowProxyIp}}",
115
+ mlflow_proxy_port="{{MlflowProxyPort}}",
116
+ feast_proxy_ip="{{FeastProxyIp}}",
117
+ feast_proxy_port="{{FeastProxyPort}}",
118
+ kernel_task_name="{{TaskName}}",
119
+ kernel_task_id="{{TaskId}}",
120
+ kernel_submit_form_workflow="{{SubmitFormWorkflow}}",
121
+ cloud_sdk_secret_id="{{CloudSdkSecretId}}",
122
+ cloud_sdk_secret_key="{{CloudSdkSecretKey}}",
123
+ cloud_sdk_secret_token="{{CloudSdkSecretToken}}",
124
+ qcloud_uin="{{QcloudUin}}",
125
+ qcloud_subuin="{{QcloudSubUin}}",
126
+ )
127
+
128
+ client.init()
129
+ ```
130
+
131
+ * 必传参数:
132
+ - workspace_id: 工作空间ID
133
+ - mlflow_tracking_uri: mlflow跟踪URI
134
+ - base_url: 基础URL
135
+ - mlflow_gateway_url: mlflow基础serverless网关地址
136
+ - feast_gateway_url: feast基础serverless网关地址
137
+ - mlflow_proxy_ip: mlflow转发地址
138
+ - mlflow_proxy_port: mlflow转发端口
139
+ - feast_proxy_ip: feast转发地址
140
+ - feast_proxy_port: feast转发端口
141
+ * 可选参数:
142
+ - region: 区域
143
+ - ap_region_id: 区域ID
144
+ - kernel_task_name: Notebook路径名
145
+ - kernel_task_id: Notebook文件ID
146
+ - kernel_submit_form_workflow: 任务提交表单工作流
147
+ - kernel_is_international: 是否国际站
148
+ - cloud_sdk_secret_id: 云SDK密钥ID
149
+ - cloud_sdk_secret_key: 云SDK密钥KEY
150
+ - cloud_sdk_secret_token: 云SDK密钥TOKEN
151
+ - qcloud_uin: 腾讯云uin
152
+ - qcloud_subuin: 腾讯云subuin
153
+ -
154
+ ## 功能特性
155
+
156
+ ### 自动标签注入
157
+
158
+ - 自动为实验、运行和模型注入WeData平台标签
159
+ - 包括项目ID、工作空间ID、机器学习类型等信息
160
+ - 确保数据在平台上的可追溯性
161
+
162
+ ### 权限验证
163
+
164
+ - 在执行敏感操作前验证权限
165
+ - 防止跨项目/工作空间的未授权操作
166
+ - 保护内置标签不被修改
167
+
168
+ ### URL生成
169
+
170
+ - 自动生成实验和运行的查看URL
171
+ - 在运行终止时显示访问链接
172
+ - 方便用户快速访问实验结果
173
+
174
+ ### 环境配置
175
+
176
+ - 自动设置MLflow跟踪URI
177
+ - 配置运行上下文环境变量
178
+ - 支持国际站和国内站的不同配置
179
+
180
+ ## 项目结构
181
+
182
+ ```
183
+ pre-execute/
184
+ ├── src/
185
+ │ └── wedata_pre_code/
186
+ │ ├── __init__.py
187
+ │ ├── client.py # 主客户端入口
188
+ │ ├── common/
189
+ │ │ ├── __init__.py
190
+ │ │ └── base_client.py # 基础客户端类
191
+ │ ├── wedata2/
192
+ │ │ ├── __init__.py
193
+ │ │ └── client.py # WeData 2.0客户端
194
+ │ └── wedata3/
195
+ │ ├── __init__.py
196
+ │ └── client.py # WeData 3.0客户端
197
+ ├── docs/ # 文档目录
198
+ ├── pyproject.toml # 项目配置
199
+ ├── requirement.txt # 依赖文件
200
+ └── README.md # 项目说明
201
+ ```
202
+
203
+ ## 开发指南
204
+
205
+ ### 添加新的装饰器
206
+
207
+ 要添加新的MLflow客户端方法装饰器,可以参考现有的实现模式:
208
+
209
+ 1. 在相应的客户端类中定义装饰器函数
210
+ 2. 使用`@wraps`保留原函数属性
211
+ 3. 在装饰器内部实现特定的逻辑
212
+ 4. 将装饰器应用到目标MLflow方法
213
+
214
+ ### 测试
215
+
216
+ 确保在修改代码后测试以下场景:
217
+
218
+ - 正常创建实验和运行
219
+ - 权限验证功能
220
+ - 标签注入的正确性
221
+ - URL生成的准确性
222
+
223
+ ## 注意事项
224
+
225
+ - 确保MLflow服务器配置正确
226
+ - 验证环境变量设置完整
227
+ - 注意不同版本客户端的参数差异
228
+ - 在生产环境使用前进行充分测试
229
+
230
+ ## 支持与反馈
231
+
232
+ 如有问题或建议,请联系WeData平台技术支持团队。
@@ -0,0 +1,203 @@
1
+ # WeData Pre-Code Library
2
+
3
+ WeData平台的预执行代码库,为机器学习实验提供与MLflow的深度集成和WeData平台的功能增强。
4
+
5
+ ## 项目概述
6
+
7
+ 本项目提供了两个版本的WeData客户端,用于在WeData平台上运行机器学习实验时提供以下功能:
8
+
9
+ - **MLflow集成增强**:自动注入WeData平台特定的标签和过滤条件
10
+ - **权限控制**:基于项目/工作空间的权限验证机制
11
+ - **URL生成**:自动生成实验和运行的查看链接
12
+ - **环境配置**:自动设置运行环境变量
13
+
14
+ ## 版本说明
15
+
16
+ ### Wedata2PreCodeClient (WeData 2.0版本)
17
+
18
+ 适用于WeData 2.0平台的客户端,主要特性:
19
+
20
+ - 基于项目ID进行权限控制
21
+ - 支持国内站和国际站URL模板
22
+ - 自动注入项目标签和机器学习类型标签
23
+ - 提供完整的MLflow客户端装饰器
24
+
25
+ ### Wedata3PreCodeClient (WeData 3.0版本)
26
+
27
+ 适用于WeData 3.0平台的客户端,主要特性:
28
+
29
+ - 基于工作空间ID进行权限控制
30
+ - 支持更灵活的配置选项
31
+ - 增强的标签注入和验证机制
32
+ - 支持机器学习和深度学习两种实验类型
33
+
34
+ ## 安装和使用
35
+
36
+ ### 安装依赖
37
+
38
+ ```bash
39
+ pip install mlflow
40
+ ```
41
+
42
+ ### 使用Wedata2PreCodeClient
43
+
44
+ ```python
45
+ from wedata_pre_code.wedata2.client import Wedata2PreCodeClient
46
+
47
+ # 初始化客户端
48
+ client = Wedata2PreCodeClient(
49
+ wedata_project_id="{{WEDATA_PROJECT_ID}}",
50
+ wedata_notebook_engine="{{WEDATA_NOTEBOOK_ENGINE}}",
51
+ qcloud_uin="{{QCLOUD_UIN}}",
52
+ qcloud_subuin="{{QCLOUD_SUBUIN}}",
53
+ wedata_default_feature_store_database="{{WEDATA_DEFAULT_FEATURE_STORE_DATABASE}}",
54
+ wedata_feature_store_databases="{{WEDATA_FEATURE_STORE_DATABASES}}",
55
+ qcloud_region="{{QCLOUD_REGION}}",
56
+ mlflow_tracking_uri="{{KERNEL_MLFLOW_TRACKING_URI}}",
57
+ feast_remote_address="{{KERNEL_FEAST_REMOTE_ADDRESS}}",
58
+ kernel_submit_form_workflow="{{KERNEL_SUBMIT_FORM_WORKFLOW}}",
59
+ kernel_task_name="{{KERNEL_TASK_NAME}}",
60
+ kernel_task_id="{{KERNEL_TASK_ID}}",
61
+ kernel_region="ap-chongqing",
62
+ kernel_is_international=bool("{{KERNEL_IS_INTERNATIONAL}}")
63
+ )
64
+
65
+ # 现在可以使用MLflow客户端,会自动应用WeData的增强功能
66
+ import mlflow
67
+ mlflow.start_run()
68
+ # ... 你的实验代码
69
+ ```
70
+
71
+ ### 使用Wedata3PreCodeClient
72
+
73
+ ```python
74
+ %pip install wedata-pre-code
75
+ from wedata_pre_code.wedata3.client import Wedata3PreCodeClient
76
+
77
+ # 初始化客户端
78
+ client = Wedata3PreCodeClient(
79
+ workspace_id="{{WorkspaceID}}",
80
+ base_url="{{BaseUrl}}",
81
+ region="{{Region}}",
82
+ ap_region_id=int("{{RegionId}}"),
83
+ mlflow_gateway_url="{{MlflowGatewayUrl}}",
84
+ feast_gateway_url="{{FeastGatewayUrl}}",
85
+ mlflow_proxy_ip="{{MlflowProxyIp}}",
86
+ mlflow_proxy_port="{{MlflowProxyPort}}",
87
+ feast_proxy_ip="{{FeastProxyIp}}",
88
+ feast_proxy_port="{{FeastProxyPort}}",
89
+ kernel_task_name="{{TaskName}}",
90
+ kernel_task_id="{{TaskId}}",
91
+ kernel_submit_form_workflow="{{SubmitFormWorkflow}}",
92
+ cloud_sdk_secret_id="{{CloudSdkSecretId}}",
93
+ cloud_sdk_secret_key="{{CloudSdkSecretKey}}",
94
+ cloud_sdk_secret_token="{{CloudSdkSecretToken}}",
95
+ qcloud_uin="{{QcloudUin}}",
96
+ qcloud_subuin="{{QcloudSubUin}}",
97
+ )
98
+
99
+ client.init()
100
+ ```
101
+
102
+ * 必传参数:
103
+ - workspace_id: 工作空间ID
104
+ - mlflow_tracking_uri: mlflow跟踪URI
105
+ - base_url: 基础URL
106
+ - mlflow_gateway_url: mlflow基础serverless网关地址
107
+ - feast_gateway_url: feast基础serverless网关地址
108
+ - mlflow_proxy_ip: mlflow转发地址
109
+ - mlflow_proxy_port: mlflow转发端口
110
+ - feast_proxy_ip: feast转发地址
111
+ - feast_proxy_port: feast转发端口
112
+ * 可选参数:
113
+ - region: 区域
114
+ - ap_region_id: 区域ID
115
+ - kernel_task_name: Notebook路径名
116
+ - kernel_task_id: Notebook文件ID
117
+ - kernel_submit_form_workflow: 任务提交表单工作流
118
+ - kernel_is_international: 是否国际站
119
+ - cloud_sdk_secret_id: 云SDK密钥ID
120
+ - cloud_sdk_secret_key: 云SDK密钥KEY
121
+ - cloud_sdk_secret_token: 云SDK密钥TOKEN
122
+ - qcloud_uin: 腾讯云uin
123
+ - qcloud_subuin: 腾讯云subuin
124
+ -
125
+ ## 功能特性
126
+
127
+ ### 自动标签注入
128
+
129
+ - 自动为实验、运行和模型注入WeData平台标签
130
+ - 包括项目ID、工作空间ID、机器学习类型等信息
131
+ - 确保数据在平台上的可追溯性
132
+
133
+ ### 权限验证
134
+
135
+ - 在执行敏感操作前验证权限
136
+ - 防止跨项目/工作空间的未授权操作
137
+ - 保护内置标签不被修改
138
+
139
+ ### URL生成
140
+
141
+ - 自动生成实验和运行的查看URL
142
+ - 在运行终止时显示访问链接
143
+ - 方便用户快速访问实验结果
144
+
145
+ ### 环境配置
146
+
147
+ - 自动设置MLflow跟踪URI
148
+ - 配置运行上下文环境变量
149
+ - 支持国际站和国内站的不同配置
150
+
151
+ ## 项目结构
152
+
153
+ ```
154
+ pre-execute/
155
+ ├── src/
156
+ │ └── wedata_pre_code/
157
+ │ ├── __init__.py
158
+ │ ├── client.py # 主客户端入口
159
+ │ ├── common/
160
+ │ │ ├── __init__.py
161
+ │ │ └── base_client.py # 基础客户端类
162
+ │ ├── wedata2/
163
+ │ │ ├── __init__.py
164
+ │ │ └── client.py # WeData 2.0客户端
165
+ │ └── wedata3/
166
+ │ ├── __init__.py
167
+ │ └── client.py # WeData 3.0客户端
168
+ ├── docs/ # 文档目录
169
+ ├── pyproject.toml # 项目配置
170
+ ├── requirement.txt # 依赖文件
171
+ └── README.md # 项目说明
172
+ ```
173
+
174
+ ## 开发指南
175
+
176
+ ### 添加新的装饰器
177
+
178
+ 要添加新的MLflow客户端方法装饰器,可以参考现有的实现模式:
179
+
180
+ 1. 在相应的客户端类中定义装饰器函数
181
+ 2. 使用`@wraps`保留原函数属性
182
+ 3. 在装饰器内部实现特定的逻辑
183
+ 4. 将装饰器应用到目标MLflow方法
184
+
185
+ ### 测试
186
+
187
+ 确保在修改代码后测试以下场景:
188
+
189
+ - 正常创建实验和运行
190
+ - 权限验证功能
191
+ - 标签注入的正确性
192
+ - URL生成的准确性
193
+
194
+ ## 注意事项
195
+
196
+ - 确保MLflow服务器配置正确
197
+ - 验证环境变量设置完整
198
+ - 注意不同版本客户端的参数差异
199
+ - 在生产环境使用前进行充分测试
200
+
201
+ ## 支持与反馈
202
+
203
+ 如有问题或建议,请联系WeData平台技术支持团队。
@@ -0,0 +1,49 @@
1
+ [project]
2
+ name = "wedata-pre-code"
3
+ version = "1.0.15"
4
+ description = "WeData平台的预执行代码库,为机器学习实验提供与MLflow的深度集成"
5
+ authors = [
6
+ {name = "WeData Team", email = "wedata@tencent.com"}
7
+ ]
8
+ readme = "README.md"
9
+ license = {text = "MIT"}
10
+ classifiers = [
11
+ "Development Status :: 4 - Beta",
12
+ "Intended Audience :: Developers",
13
+ "License :: OSI Approved :: MIT License",
14
+ "Programming Language :: Python :: 3",
15
+ "Programming Language :: Python :: 3.8",
16
+ "Programming Language :: Python :: 3.9",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
20
+ ]
21
+ requires-python = ">=3.9"
22
+ dependencies = [
23
+ "feast==0.49.0",
24
+ "grpcio>=1.71.0",
25
+ "mlflow>=2.0.0",
26
+ "pydantic>=2.10.6",
27
+ ]
28
+
29
+ [project.optional-dependencies]
30
+ mlflow-v2 = [
31
+ "mlflow>=2.0.0,<3.0.0",
32
+ ]
33
+ wedata-3 = [
34
+ "wedata-mlflow-header-plugin>=0.1.2",
35
+ ]
36
+
37
+
38
+ [project.urls]
39
+ Homepage = "https://wedata.tencent.com"
40
+ Documentation = "https://wedata.tencent.com/docs"
41
+
42
+ [build-system]
43
+ requires = ["uv_build >= 0.9.17, <0.10.0"]
44
+ build-backend = "uv_build"
45
+
46
+
47
+ [tool.setuptools.packages.find]
48
+ where = ["src"]
49
+ include = ["wedata_pre_code*"]
@@ -0,0 +1,10 @@
1
+ """WeData Pre-Code Library
2
+
3
+ WeData平台的预执行代码库,为机器学习实验提供与MLflow的深度集成和WeData平台的功能增强。
4
+ """
5
+
6
+ from .client import PreCodeClient
7
+
8
+ __all__ = ["PreCodeClient"]
9
+
10
+ __version__ = "1.0.15"
@@ -0,0 +1,37 @@
1
+ __doc__ = """
2
+ Wedata 预执行代码客户端
3
+ 如果要初始化Wedata2的预执行代码客户端,请使用init_wedata2_pre_code方法
4
+ 如果要初始化Wedata3的预执行代码客户端,请使用init_wedata3_pre_code方法
5
+ """
6
+
7
+
8
+ class PreCodeClient:
9
+ """
10
+ Wedata 预执行代码客户端
11
+ """
12
+
13
+ def init_wedata2_pre_code(self, **kwargs):
14
+ """
15
+ 初始化Wedata2的预执行代码客户端
16
+ :param kwargs: Wedata2的预执行代码客户端的参数
17
+ :return: Wedata2PreCodeClient实例
18
+ """
19
+ from wedata_pre_code.wedata2.client import Wedata2PreCodeClient
20
+
21
+ client = Wedata2PreCodeClient(**kwargs)
22
+ client.init()
23
+
24
+ return client
25
+
26
+ def init_wedata3_pre_code(self, **kwargs):
27
+ """
28
+ 初始化Wedata3的预执行代码客户端
29
+ :param kwargs: Wedata3的预执行代码客户端的参数
30
+ :return: Wedata3PreCodeClient实例
31
+ """
32
+ from wedata_pre_code.wedata3.client import Wedata3PreCodeClient
33
+
34
+ client = Wedata3PreCodeClient(**kwargs)
35
+ client.init()
36
+
37
+ return client
@@ -0,0 +1,16 @@
1
+ __doc__ = """
2
+ 基础客户端类
3
+ """
4
+
5
+ from abc import abstractmethod
6
+ from pydantic import BaseModel
7
+
8
+
9
+ class BaseClient(BaseModel):
10
+ """
11
+ 基础客户端类
12
+ """
13
+
14
+ @abstractmethod
15
+ def init(self):
16
+ pass