dataops-sdk 0.3.6__tar.gz → 0.4.1__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.
- dataops_sdk-0.4.1/PKG-INFO +113 -0
- dataops_sdk-0.4.1/README.md +85 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/pyproject.toml +1 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/__init__.py +1 -1
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/__init__.py +9 -1
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/__init__.py +14 -5
- dataops_sdk-0.4.1/src/dataops_sdk/schemas/common.py +11 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/data_table.py +4 -2
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/enums.py +77 -14
- dataops_sdk-0.4.1/src/dataops_sdk/schemas/group.py +66 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/meta.py +10 -3
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/query.py +35 -27
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/report.py +11 -12
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/skill.py +1 -25
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/table.py +49 -5
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/user.py +2 -2
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/widget.py +242 -160
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/workflow.py +1 -5
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/__init__.py +18 -7
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/auth.py +1 -1
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/data_table.py +26 -14
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/dict_.py +1 -1
- dataops_sdk-0.4.1/src/dataops_sdk/services/group.py +69 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/meta.py +101 -120
- dataops_sdk-0.4.1/src/dataops_sdk/services/metrics.py +87 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/report.py +19 -2
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/skill.py +20 -9
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/table.py +9 -6
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/widget.py +46 -10
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/session.py +40 -36
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/utils/utils.py +5 -17
- dataops_sdk-0.4.1/src/dataops_sdk.egg-info/PKG-INFO +113 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk.egg-info/SOURCES.txt +2 -0
- dataops_sdk-0.3.6/PKG-INFO +0 -26
- dataops_sdk-0.3.6/src/dataops_sdk/schemas/common.py +0 -9
- dataops_sdk-0.3.6/src/dataops_sdk/schemas/group.py +0 -46
- dataops_sdk-0.3.6/src/dataops_sdk/services/metrics.py +0 -53
- dataops_sdk-0.3.6/src/dataops_sdk.egg-info/PKG-INFO +0 -26
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/setup.cfg +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/constants.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/exceptions.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/__init__.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/datasource_factory.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/__init__.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/config.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/constants.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/instance.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/nacos_exception.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/naming_param.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/naming_request.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/naming_response.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/preserved_metadata_key.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/schemas/nacos/service.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/common.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/dbConn_base.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/dbConn_sync.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/duckdb_manager.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/file_transfer_base.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/ftp_file_transfer.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/nacos.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/neo4j_sync.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/queue_base.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/queue_kafka.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/runner/utils/sftp_file_transfer.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/alarm.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/api.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/datasource.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/dict_.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/schemas/hazard.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/alarm.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/api.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/dataset.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/datasource.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/hazard.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/ref.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/services/workflow.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/__init__.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/builder.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/constants.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/markdown_parser.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/models.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/parse_utils.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/render_utils.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/renderers.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/tiptap/tool.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/utils/__init__.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/utils/common.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk/utils/log.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk.egg-info/dependency_links.txt +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk.egg-info/requires.txt +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/src/dataops_sdk.egg-info/top_level.txt +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/tests/test_constants.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/tests/test_exceptions.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/tests/test_session.py +0 -0
- {dataops_sdk-0.3.6 → dataops_sdk-0.4.1}/tests/test_utils.py +0 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dataops-sdk
|
|
3
|
+
Version: 0.4.1
|
|
4
|
+
Summary: Python SDK for the DataOps platform.
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: pydantic<3,>=2
|
|
8
|
+
Requires-Dist: pydantic-core
|
|
9
|
+
Requires-Dist: pydantic-settings>=2.14.2
|
|
10
|
+
Requires-Dist: httpx2>=2.5.0
|
|
11
|
+
Requires-Dist: jinja2>=3.1.6
|
|
12
|
+
Requires-Dist: markdown-it-py[plugins]
|
|
13
|
+
Requires-Dist: cryptography>=49.0.0
|
|
14
|
+
Requires-Dist: PyYaml
|
|
15
|
+
Provides-Extra: runner
|
|
16
|
+
Requires-Dist: paramiko>4; extra == "runner"
|
|
17
|
+
Requires-Dist: pandas; extra == "runner"
|
|
18
|
+
Requires-Dist: sqlalchemy; extra == "runner"
|
|
19
|
+
Requires-Dist: pymysql; extra == "runner"
|
|
20
|
+
Requires-Dist: doris-python>=1.0.3; extra == "runner"
|
|
21
|
+
Requires-Dist: oracledb~=4.0.1; extra == "runner"
|
|
22
|
+
Requires-Dist: neo4j; extra == "runner"
|
|
23
|
+
Requires-Dist: kafka-python>3; extra == "runner"
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-mock; extra == "dev"
|
|
27
|
+
Requires-Dist: ruff; extra == "dev"
|
|
28
|
+
|
|
29
|
+
# dataops-sdk
|
|
30
|
+
|
|
31
|
+
Python SDK for the DataOps platform.
|
|
32
|
+
|
|
33
|
+
## 安装
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 基础安装
|
|
37
|
+
pip install dataops_sdk
|
|
38
|
+
|
|
39
|
+
# 含数据库驱动
|
|
40
|
+
pip install "dataops_sdk[runner]"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 快速开始
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from dataops_sdk.session import configure
|
|
47
|
+
from dataops_sdk.services import service_list_tables, service_get_table_data_by_code
|
|
48
|
+
|
|
49
|
+
# 配置认证
|
|
50
|
+
configure(base_url="https://your-platform.com", api_key="your-api-key")
|
|
51
|
+
|
|
52
|
+
# 查询数据表
|
|
53
|
+
tables = service_list_tables("doris")
|
|
54
|
+
print(tables)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 核心模块
|
|
58
|
+
|
|
59
|
+
### session — 认证配置
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
from dataops_sdk.session import configure, get_session
|
|
63
|
+
|
|
64
|
+
configure(base_url, api_key) # 设置全局会话
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### schemas — 数据模型
|
|
68
|
+
|
|
69
|
+
| 模块 | 说明 |
|
|
70
|
+
|------|------|
|
|
71
|
+
| `MetaType` | 元数据类型枚举 |
|
|
72
|
+
| `SqlQueryParam` | SQL 查询参数 |
|
|
73
|
+
| `Meta` | 元数据通用模型 |
|
|
74
|
+
| `Datasource` | 数据源模型 |
|
|
75
|
+
| `DataTable` | 数据表模型 |
|
|
76
|
+
| `Dataset` | 数据集模型 |
|
|
77
|
+
| `Metrics` | 指标模型 |
|
|
78
|
+
| `Report` | 报表模型 |
|
|
79
|
+
| `Widget` | 组件模型 |
|
|
80
|
+
| `Workflow` | 工作流模型 |
|
|
81
|
+
| `Alarm` | 告警模型 |
|
|
82
|
+
| `Hazard` | 隐患模型 |
|
|
83
|
+
| `Api` | API 模型 |
|
|
84
|
+
| `Dict` | 字典模型 |
|
|
85
|
+
| `Skill` | 技能模型 |
|
|
86
|
+
| `Ref` | 引用模型 |
|
|
87
|
+
|
|
88
|
+
### services — 平台操作
|
|
89
|
+
|
|
90
|
+
每个服务模块对应一类实体的操作,提供 `list`、`detail` 等通用接口:
|
|
91
|
+
|
|
92
|
+
- `service_*_list` — 列表查询
|
|
93
|
+
- `service_*_detail` — 详情查询
|
|
94
|
+
- `service_*_create` — 创建
|
|
95
|
+
- `service_*_update` — 更新
|
|
96
|
+
- `service_*_delete` — 删除
|
|
97
|
+
|
|
98
|
+
## 依赖
|
|
99
|
+
|
|
100
|
+
- Python >= 3.11
|
|
101
|
+
- pydantic >= 2
|
|
102
|
+
- httpx2 >= 2.5.0
|
|
103
|
+
- pydantic-settings >= 2.14.2
|
|
104
|
+
- jinja2 >= 3.1.6
|
|
105
|
+
- cryptography >= 49.0.0
|
|
106
|
+
|
|
107
|
+
## 可选依赖 (runner)
|
|
108
|
+
|
|
109
|
+
- paramiko > 4 — 文件传输
|
|
110
|
+
- pandas — 数据分析
|
|
111
|
+
- sqlalchemy / pymysql / doris-python / oracledb — 关系数据库
|
|
112
|
+
- neo4j — 图数据库
|
|
113
|
+
- kafka-python > 3 — 队列驱动
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# dataops-sdk
|
|
2
|
+
|
|
3
|
+
Python SDK for the DataOps platform.
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 基础安装
|
|
9
|
+
pip install dataops_sdk
|
|
10
|
+
|
|
11
|
+
# 含数据库驱动
|
|
12
|
+
pip install "dataops_sdk[runner]"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 快速开始
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
from dataops_sdk.session import configure
|
|
19
|
+
from dataops_sdk.services import service_list_tables, service_get_table_data_by_code
|
|
20
|
+
|
|
21
|
+
# 配置认证
|
|
22
|
+
configure(base_url="https://your-platform.com", api_key="your-api-key")
|
|
23
|
+
|
|
24
|
+
# 查询数据表
|
|
25
|
+
tables = service_list_tables("doris")
|
|
26
|
+
print(tables)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 核心模块
|
|
30
|
+
|
|
31
|
+
### session — 认证配置
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from dataops_sdk.session import configure, get_session
|
|
35
|
+
|
|
36
|
+
configure(base_url, api_key) # 设置全局会话
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### schemas — 数据模型
|
|
40
|
+
|
|
41
|
+
| 模块 | 说明 |
|
|
42
|
+
|------|------|
|
|
43
|
+
| `MetaType` | 元数据类型枚举 |
|
|
44
|
+
| `SqlQueryParam` | SQL 查询参数 |
|
|
45
|
+
| `Meta` | 元数据通用模型 |
|
|
46
|
+
| `Datasource` | 数据源模型 |
|
|
47
|
+
| `DataTable` | 数据表模型 |
|
|
48
|
+
| `Dataset` | 数据集模型 |
|
|
49
|
+
| `Metrics` | 指标模型 |
|
|
50
|
+
| `Report` | 报表模型 |
|
|
51
|
+
| `Widget` | 组件模型 |
|
|
52
|
+
| `Workflow` | 工作流模型 |
|
|
53
|
+
| `Alarm` | 告警模型 |
|
|
54
|
+
| `Hazard` | 隐患模型 |
|
|
55
|
+
| `Api` | API 模型 |
|
|
56
|
+
| `Dict` | 字典模型 |
|
|
57
|
+
| `Skill` | 技能模型 |
|
|
58
|
+
| `Ref` | 引用模型 |
|
|
59
|
+
|
|
60
|
+
### services — 平台操作
|
|
61
|
+
|
|
62
|
+
每个服务模块对应一类实体的操作,提供 `list`、`detail` 等通用接口:
|
|
63
|
+
|
|
64
|
+
- `service_*_list` — 列表查询
|
|
65
|
+
- `service_*_detail` — 详情查询
|
|
66
|
+
- `service_*_create` — 创建
|
|
67
|
+
- `service_*_update` — 更新
|
|
68
|
+
- `service_*_delete` — 删除
|
|
69
|
+
|
|
70
|
+
## 依赖
|
|
71
|
+
|
|
72
|
+
- Python >= 3.11
|
|
73
|
+
- pydantic >= 2
|
|
74
|
+
- httpx2 >= 2.5.0
|
|
75
|
+
- pydantic-settings >= 2.14.2
|
|
76
|
+
- jinja2 >= 3.1.6
|
|
77
|
+
- cryptography >= 49.0.0
|
|
78
|
+
|
|
79
|
+
## 可选依赖 (runner)
|
|
80
|
+
|
|
81
|
+
- paramiko > 4 — 文件传输
|
|
82
|
+
- pandas — 数据分析
|
|
83
|
+
- sqlalchemy / pymysql / doris-python / oracledb — 关系数据库
|
|
84
|
+
- neo4j — 图数据库
|
|
85
|
+
- kafka-python > 3 — 队列驱动
|
|
@@ -19,7 +19,14 @@ Example:
|
|
|
19
19
|
>>> from dataops_sdk.runner.utils import DatabaseConn, encrypt_body
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
from .common import
|
|
22
|
+
from .common import (
|
|
23
|
+
decrypt_body,
|
|
24
|
+
encrypt_body,
|
|
25
|
+
generate_uuid,
|
|
26
|
+
parse_args,
|
|
27
|
+
parse_trigger_time,
|
|
28
|
+
print_json,
|
|
29
|
+
)
|
|
23
30
|
from .dbConn_sync import DatabaseConn
|
|
24
31
|
from .ftp_file_transfer import FTPFileTransfer
|
|
25
32
|
from .nacos import get_service_instance
|
|
@@ -39,4 +46,5 @@ __all__ = [
|
|
|
39
46
|
"FTPFileTransfer",
|
|
40
47
|
"SFTPFileTransfer",
|
|
41
48
|
"parse_args",
|
|
49
|
+
"parse_trigger_time",
|
|
42
50
|
]
|
|
@@ -14,11 +14,21 @@ from .alarm import (
|
|
|
14
14
|
AlarmSpecItem,
|
|
15
15
|
)
|
|
16
16
|
from .api import ApiMeta, HttpInterfaceData
|
|
17
|
+
from .common import DataOpsResponse
|
|
17
18
|
from .data_table import DataTableData, MetaDataTable
|
|
18
19
|
from .datasource import DataDataSource
|
|
19
20
|
from .dict_ import DataDict, DictItem
|
|
20
|
-
from .enums import
|
|
21
|
-
|
|
21
|
+
from .enums import (
|
|
22
|
+
GroupNodeRefType,
|
|
23
|
+
InnerMetaType,
|
|
24
|
+
MetaReportSubType,
|
|
25
|
+
MetaSkillFileSubType,
|
|
26
|
+
MetaSkillSubType,
|
|
27
|
+
MetaTemplateSubType,
|
|
28
|
+
MetaType,
|
|
29
|
+
MetaWidgetSubType,
|
|
30
|
+
)
|
|
31
|
+
from .group import GroupNode, GroupTree
|
|
22
32
|
from .hazard import HazardRecordDTO, HazardTaskDTO
|
|
23
33
|
from .meta import (
|
|
24
34
|
DEFAULT_META_DATA_TYPE,
|
|
@@ -26,11 +36,11 @@ from .meta import (
|
|
|
26
36
|
Meta,
|
|
27
37
|
MetaBase,
|
|
28
38
|
MetaCreate,
|
|
39
|
+
MetaPageData,
|
|
29
40
|
MetaRef,
|
|
30
41
|
MetaUpdate,
|
|
31
|
-
MetaPageData,
|
|
32
42
|
)
|
|
33
|
-
from .query import PageParam, SqlCondition, SqlQueryParam, SqlSort
|
|
43
|
+
from .query import PageParam, SqlCondition, SqlFilter, SqlQueryParam, SqlSort
|
|
34
44
|
from .report import ReportMeta, ReportMetaData
|
|
35
45
|
from .skill import DataSkill, DataSkillSubFile, MetaSkill, SkillCallResult
|
|
36
46
|
from .table import (
|
|
@@ -44,4 +54,3 @@ from .table import (
|
|
|
44
54
|
from .user import Application, UserInfo
|
|
45
55
|
from .widget import WidgetMeta, WidgetMetaData
|
|
46
56
|
from .workflow import DataWorkflow, MetaWorkflow
|
|
47
|
-
from .common import DataOpsResponse
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from typing import Annotated, Generic, TypeVar
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field, JsonValue, NonNegativeInt
|
|
4
|
+
|
|
5
|
+
DataVar = TypeVar("DataVar")
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DataOpsResponse(BaseModel, Generic[DataVar]):
|
|
9
|
+
code: Annotated[NonNegativeInt, Field(description="响应码")]
|
|
10
|
+
msg: Annotated[str | None, Field(description="响应消息")]
|
|
11
|
+
data: Annotated[DataVar, Field(description="响应数据")]
|
|
@@ -410,7 +410,7 @@ class DataTableField(BaseModel):
|
|
|
410
410
|
|
|
411
411
|
title: Annotated[str | None, Field(description="显示标题")]
|
|
412
412
|
name: Annotated[str, Field(description="字段名称/列名 (前端显示的名称)")]
|
|
413
|
-
type: Annotated[str, Field(description="字段类型")]
|
|
413
|
+
type: Annotated[str | None, Field(description="字段类型")] = None
|
|
414
414
|
|
|
415
415
|
# 数据属性
|
|
416
416
|
pk: Annotated[bool, Field(description="是否主键")] = False
|
|
@@ -608,7 +608,7 @@ class DataTableData(BaseModel):
|
|
|
608
608
|
"""
|
|
609
609
|
|
|
610
610
|
# 模型配置
|
|
611
|
-
model: Annotated[DataTableModel, Field(description="数据源模型配置")]
|
|
611
|
+
model: Annotated[DataTableModel | None, Field(description="数据源模型配置")] = None
|
|
612
612
|
|
|
613
613
|
# 字段定义
|
|
614
614
|
fields: Annotated[list[DataTableField], Field(description="字段列表", default_factory=list)] = (
|
|
@@ -641,6 +641,8 @@ class DataTableData(BaseModel):
|
|
|
641
641
|
querys: Annotated[list[QueryCondition] | None, Field(description="查询条件列表")] = None
|
|
642
642
|
query_form: Annotated[QueryForm | None, Field(description="查询表单配置")] = None
|
|
643
643
|
|
|
644
|
+
model_config = ConfigDict(extra="allow")
|
|
645
|
+
|
|
644
646
|
|
|
645
647
|
# ---------------------------------------------------------------------------
|
|
646
648
|
# MetaDataTable
|
|
@@ -7,6 +7,14 @@
|
|
|
7
7
|
from enum import StrEnum
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
class GroupNodeRefType(StrEnum):
|
|
11
|
+
"""分组节点引用类型枚举."""
|
|
12
|
+
|
|
13
|
+
INNER = "inner"
|
|
14
|
+
BEFORE = "before"
|
|
15
|
+
AFTER = "after"
|
|
16
|
+
|
|
17
|
+
|
|
10
18
|
class InnerMetaType(StrEnum):
|
|
11
19
|
"""SDK 内部使用的 Meta 类型枚举.
|
|
12
20
|
|
|
@@ -16,8 +24,11 @@ class InnerMetaType(StrEnum):
|
|
|
16
24
|
DATASOURCE: 数据源类型 meta。
|
|
17
25
|
"""
|
|
18
26
|
|
|
27
|
+
GROUP = "group"
|
|
28
|
+
"""分组"""
|
|
29
|
+
|
|
19
30
|
DATASOURCE = "datasource"
|
|
20
|
-
"""数据源类型
|
|
31
|
+
"""数据源类型"""
|
|
21
32
|
|
|
22
33
|
def __repr__(self):
|
|
23
34
|
return self.value
|
|
@@ -76,17 +87,17 @@ class SqlExpression(StrEnum):
|
|
|
76
87
|
用于查询条件构造,对应后端 ``SqlExpression``。
|
|
77
88
|
"""
|
|
78
89
|
|
|
79
|
-
EQ = "
|
|
90
|
+
EQ = "eq"
|
|
80
91
|
"""相等 (=)。"""
|
|
81
|
-
NE = "
|
|
92
|
+
NE = "ne"
|
|
82
93
|
"""不相等 (!=)。"""
|
|
83
|
-
GT = "
|
|
94
|
+
GT = "gt"
|
|
84
95
|
"""大于 (>)。"""
|
|
85
|
-
GE = "
|
|
96
|
+
GE = "ge"
|
|
86
97
|
"""大于等于 (>=)。"""
|
|
87
|
-
LT = "
|
|
98
|
+
LT = "lt"
|
|
88
99
|
"""小于 (<)。"""
|
|
89
|
-
LE = "
|
|
100
|
+
LE = "le"
|
|
90
101
|
"""小于等于 (<=)。"""
|
|
91
102
|
IN = "in"
|
|
92
103
|
"""属于 (IN)。"""
|
|
@@ -116,16 +127,16 @@ class SqlExpression(StrEnum):
|
|
|
116
127
|
Returns:
|
|
117
128
|
str: 中文标题,例如 ``"相等"``、``"属于"`` 等。
|
|
118
129
|
"""
|
|
119
|
-
return _EXPRESSION_TITLES[self]
|
|
130
|
+
return _EXPRESSION_TITLES[self.value]
|
|
120
131
|
|
|
121
132
|
|
|
122
133
|
_EXPRESSION_TITLES: dict[str, str] = {
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
"
|
|
128
|
-
"
|
|
134
|
+
"eq": "相等",
|
|
135
|
+
"ne": "不相等",
|
|
136
|
+
"gt": "大于",
|
|
137
|
+
"ge": "大于等于",
|
|
138
|
+
"lt": "小于",
|
|
139
|
+
"le": "小于等于",
|
|
129
140
|
"in": "属于",
|
|
130
141
|
"notin": "不属于",
|
|
131
142
|
"like": "匹配",
|
|
@@ -209,3 +220,55 @@ class ColumnType(StrEnum):
|
|
|
209
220
|
"""子表类型。"""
|
|
210
221
|
STRING = "string"
|
|
211
222
|
"""字符串类型。"""
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
class MetaWidgetSubType(StrEnum):
|
|
226
|
+
"""卡片子类型枚举."""
|
|
227
|
+
|
|
228
|
+
CHART = "chart"
|
|
229
|
+
TABLE = "table"
|
|
230
|
+
DETAIL = "detail"
|
|
231
|
+
STATISTIC = "statistic"
|
|
232
|
+
STATISTIC_V2 = "statistic-v2"
|
|
233
|
+
GIS = "gis"
|
|
234
|
+
METRIC = "metric"
|
|
235
|
+
TOPOLOGY = "topology"
|
|
236
|
+
AMIS = "amis"
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class MetaTemplateSubType(StrEnum):
|
|
240
|
+
"""模板子类型枚举."""
|
|
241
|
+
|
|
242
|
+
REPORT = "report"
|
|
243
|
+
PYTHON = "python"
|
|
244
|
+
JAVASCRIPT = "javascript"
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
class MetaSkillSubType(StrEnum):
|
|
248
|
+
"""技能子类型枚举."""
|
|
249
|
+
|
|
250
|
+
LLM = "llm"
|
|
251
|
+
API = "api"
|
|
252
|
+
REPORT = "report"
|
|
253
|
+
FORM_SAVE = "form-save"
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
class MetaSkillFileSubType(StrEnum):
|
|
257
|
+
"""技能子文件类型枚举."""
|
|
258
|
+
|
|
259
|
+
DOC = "doc"
|
|
260
|
+
CODE = "code"
|
|
261
|
+
IMAGE = "image"
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
class MetaReportSubType(StrEnum):
|
|
265
|
+
"""文档子类型枚举."""
|
|
266
|
+
|
|
267
|
+
# 文档
|
|
268
|
+
DOC = "doc"
|
|
269
|
+
# 本体
|
|
270
|
+
ONTOLOGY = "ontology"
|
|
271
|
+
# 看板
|
|
272
|
+
DASHBOARD = "dashboard"
|
|
273
|
+
# # 废弃
|
|
274
|
+
# SKILL = "skill"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""分组节点 (GroupNode) Schema 定义.
|
|
2
|
+
|
|
3
|
+
用于表示数据源目录树中的分组节点,包含节点的基本信息
|
|
4
|
+
和层级关系。
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import Annotated
|
|
8
|
+
|
|
9
|
+
from pydantic import AliasChoices, BaseModel, Field, JsonValue
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class GroupTree(BaseModel):
|
|
13
|
+
prodCode: Annotated[
|
|
14
|
+
str,
|
|
15
|
+
Field(
|
|
16
|
+
description="产品编码",
|
|
17
|
+
validation_alias=AliasChoices("prodCode", "prod_code", "PROD_CODE"),
|
|
18
|
+
),
|
|
19
|
+
]
|
|
20
|
+
release: Annotated[
|
|
21
|
+
str | None, Field(description="版本", validation_alias=AliasChoices("release", "RELEASE"))
|
|
22
|
+
] = None
|
|
23
|
+
|
|
24
|
+
name: Annotated[str, Field(description="名称", validation_alias=AliasChoices("name", "NAME"))]
|
|
25
|
+
title: Annotated[
|
|
26
|
+
str, Field(description="中文名称", validation_alias=AliasChoices("title", "TITLE"))
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
data: list["GroupNode"] = Field(default_factory=list, description="数据")
|
|
30
|
+
nodeMap: dict[str, dict[str, JsonValue]] = Field(default_factory=dict, description="节点映射")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class GroupNode(BaseModel):
|
|
34
|
+
id: Annotated[
|
|
35
|
+
str, Field(description="元数据ID", validation_alias=AliasChoices("id", "cuid", "CUID"))
|
|
36
|
+
]
|
|
37
|
+
pid: Annotated[str | None, Field(description="父ID")]
|
|
38
|
+
parentId: Annotated[
|
|
39
|
+
str | None,
|
|
40
|
+
Field(
|
|
41
|
+
description="父ID", validation_alias=AliasChoices("parentId", "parent_id", "PARENT_ID")
|
|
42
|
+
),
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
type: Annotated[str, Field(description="类型", validation_alias=AliasChoices("type", "TYPE"))]
|
|
46
|
+
subType: Annotated[
|
|
47
|
+
str | None,
|
|
48
|
+
Field(
|
|
49
|
+
description="子类型", validation_alias=AliasChoices("subType", "sub_type", "SUB_TYPE")
|
|
50
|
+
),
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
name: Annotated[str, Field(description="名称", validation_alias=AliasChoices("name", "NAME"))]
|
|
54
|
+
title: Annotated[
|
|
55
|
+
str, Field(description="中文名称", validation_alias=AliasChoices("label", "title", "TITLE"))
|
|
56
|
+
]
|
|
57
|
+
digest: Annotated[
|
|
58
|
+
str | None, Field(description="摘要", validation_alias=AliasChoices("digest", "DIGEST"))
|
|
59
|
+
]
|
|
60
|
+
remark: Annotated[
|
|
61
|
+
str | None, Field(description="备注", validation_alias=AliasChoices("remark", "REMARK"))
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
attrs: Annotated[dict[str, JsonValue] | None, Field(description="扩展属性")] = None
|
|
65
|
+
params: Annotated[dict[str, JsonValue] | None, Field(description="参数")] = None
|
|
66
|
+
children: Annotated[list["GroupNode"] | None, Field(description="子节点")] = None
|
|
@@ -127,7 +127,10 @@ class MetaBase(BaseModel):
|
|
|
127
127
|
] = None
|
|
128
128
|
spaceName: Annotated[
|
|
129
129
|
str | None,
|
|
130
|
-
Field(
|
|
130
|
+
Field(
|
|
131
|
+
description="空间名称",
|
|
132
|
+
validation_alias=AliasChoices("spaceName", "space_name", "SPACE_NAME"),
|
|
133
|
+
),
|
|
131
134
|
] = None
|
|
132
135
|
|
|
133
136
|
subSystem: Annotated[
|
|
@@ -340,6 +343,10 @@ class MetaUpdate(BaseModel, Generic[META_DATA_TYPE]):
|
|
|
340
343
|
|
|
341
344
|
class MetaPageData(BaseModel):
|
|
342
345
|
total: Annotated[int, Field(description="总数")]
|
|
343
|
-
page_num: Annotated[
|
|
344
|
-
|
|
346
|
+
page_num: Annotated[
|
|
347
|
+
int, Field(description="页码", validation_alias=AliasChoices("pageNum", "page_num"))
|
|
348
|
+
]
|
|
349
|
+
page_size: Annotated[
|
|
350
|
+
int, Field(description="页大小", validation_alias=AliasChoices("pageSize", "page_size"))
|
|
351
|
+
]
|
|
345
352
|
records: list[MetaBase] = Field(default_factory=list, description="数据")
|