dataops-sdk 0.3.2__tar.gz → 0.3.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 (88) hide show
  1. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/PKG-INFO +1 -1
  2. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/__init__.py +4 -2
  3. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/__init__.py +2 -2
  4. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/datasource_factory.py +3 -1
  5. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/dbConn_sync.py +3 -1
  6. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/duckdb_manager.py +1 -0
  7. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/query.py +12 -0
  8. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/skill.py +31 -10
  9. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/__init__.py +7 -1
  10. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/meta.py +59 -6
  11. dataops_sdk-0.3.3/src/dataops_sdk/services/skill.py +536 -0
  12. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/table.py +10 -9
  13. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/session.py +5 -4
  14. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/markdown_parser.py +29 -8
  15. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/render_utils.py +3 -1
  16. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/utils/__init__.py +15 -0
  17. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/utils/log.py +3 -1
  18. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/utils/utils.py +8 -0
  19. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk.egg-info/PKG-INFO +1 -1
  20. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/tests/test_constants.py +1 -1
  21. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/tests/test_exceptions.py +1 -1
  22. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/tests/test_session.py +81 -60
  23. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/tests/test_utils.py +7 -0
  24. dataops_sdk-0.3.2/src/dataops_sdk/services/skill.py +0 -293
  25. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/pyproject.toml +0 -0
  26. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/setup.cfg +0 -0
  27. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/constants.py +0 -0
  28. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/exceptions.py +0 -0
  29. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/__init__.py +0 -0
  30. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/config.py +0 -0
  31. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/constants.py +0 -0
  32. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/instance.py +0 -0
  33. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/nacos_exception.py +0 -0
  34. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/naming_param.py +0 -0
  35. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/naming_request.py +0 -0
  36. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/naming_response.py +0 -0
  37. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/preserved_metadata_key.py +0 -0
  38. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/schemas/nacos/service.py +0 -0
  39. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/__init__.py +0 -0
  40. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/common.py +0 -0
  41. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/dbConn_base.py +0 -0
  42. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/file_transfer_base.py +0 -0
  43. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/ftp_file_transfer.py +0 -0
  44. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/nacos.py +0 -0
  45. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/neo4j_sync.py +0 -0
  46. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/queue_base.py +0 -0
  47. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/queue_kafka.py +0 -0
  48. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/runner/utils/sftp_file_transfer.py +0 -0
  49. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/__init__.py +0 -0
  50. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/alarm.py +0 -0
  51. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/api.py +0 -0
  52. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/data_table.py +0 -0
  53. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/datasource.py +0 -0
  54. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/dict_.py +0 -0
  55. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/enums.py +0 -0
  56. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/group.py +0 -0
  57. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/hazard.py +0 -0
  58. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/meta.py +0 -0
  59. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/report.py +0 -0
  60. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/table.py +0 -0
  61. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/user.py +0 -0
  62. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/widget.py +0 -0
  63. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/schemas/workflow.py +0 -0
  64. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/alarm.py +0 -0
  65. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/api.py +0 -0
  66. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/auth.py +0 -0
  67. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/data_table.py +0 -0
  68. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/dataset.py +0 -0
  69. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/datasource.py +0 -0
  70. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/dict_.py +0 -0
  71. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/hazard.py +0 -0
  72. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/metrics.py +0 -0
  73. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/ref.py +0 -0
  74. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/report.py +0 -0
  75. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/widget.py +0 -0
  76. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/services/workflow.py +0 -0
  77. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/__init__.py +0 -0
  78. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/builder.py +0 -0
  79. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/constants.py +0 -0
  80. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/models.py +0 -0
  81. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/parse_utils.py +0 -0
  82. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/renderers.py +0 -0
  83. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/tiptap/tool.py +0 -0
  84. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk/utils/common.py +0 -0
  85. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk.egg-info/SOURCES.txt +0 -0
  86. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk.egg-info/dependency_links.txt +0 -0
  87. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk.egg-info/requires.txt +0 -0
  88. {dataops_sdk-0.3.2 → dataops_sdk-0.3.3}/src/dataops_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataops-sdk
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Python SDK for the DataOps platform.
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: pydantic<3,>=2
@@ -6,6 +6,7 @@ Nacos 集成能力,未安装时仍可独立导入本包核心功能。
6
6
  """
7
7
 
8
8
  from . import runner, schemas, utils
9
+ from .runner import service_get_datasource_instent
9
10
  from .services import ( # noqa: F401
10
11
  release_list_create,
11
12
  release_list_get_by_code,
@@ -83,11 +84,12 @@ from .services import ( # noqa: F401
83
84
  service_list_workflows,
84
85
  service_login,
85
86
  service_logout,
87
+ service_pack_skill_zip,
86
88
  service_ref_backward,
87
89
  service_ref_forward,
88
90
  service_set_application,
89
91
  service_skill_call_by_code,
90
- service_skill_import,
92
+ service_skill_upload,
91
93
  service_skill_upload_sub_file,
92
94
  service_start_workflow,
93
95
  service_start_workflow_async,
@@ -96,4 +98,4 @@ from .services import ( # noqa: F401
96
98
  service_update_data_table_record_by_id_list,
97
99
  )
98
100
 
99
- __version__ = "0.3.2"
101
+ __version__ = "0.3.3"
@@ -11,7 +11,7 @@ Example:
11
11
  >>> from dataops_sdk.runner import DatabaseConn, getLogger
12
12
  """
13
13
 
14
- from .datasource_factory import get_datasource_instent
14
+ from .datasource_factory import service_get_datasource_instent
15
15
  from .schemas.nacos import NacosSettings
16
16
  from .utils import (
17
17
  DatabaseConn,
@@ -40,5 +40,5 @@ __all__ = [
40
40
  "parse_args",
41
41
  "NacosSettings",
42
42
  "get_service_instance",
43
- "get_datasource_instent",
43
+ "service_get_datasource_instent",
44
44
  ]
@@ -6,7 +6,7 @@
6
6
  from dataops_sdk.services.datasource import service_get_datasource_by_name
7
7
 
8
8
 
9
- def get_datasource_instent(datasource: str, log_sql: bool | None = None):
9
+ def service_get_datasource_instent(datasource: str, log_sql: bool | None = None, **kwargs):
10
10
  """
11
11
  根据数据源名称获取对应的连接实例。
12
12
 
@@ -80,3 +80,5 @@ def get_datasource_instent(datasource: str, log_sql: bool | None = None):
80
80
  log_sql=log_sql,
81
81
  name=meta.title,
82
82
  )
83
+ else:
84
+ raise NotImplementedError(f"Category {meta.data.category} is not supported")
@@ -464,7 +464,9 @@ class DatabaseConn(DatabaseConnBase):
464
464
  >>> conn.commit() # 或者 conn.rollback()
465
465
  """
466
466
  if self._session is not None:
467
- raise RuntimeError("Transaction already active. Commit or rollback before starting a new one.")
467
+ raise RuntimeError(
468
+ "Transaction already active. Commit or rollback before starting a new one."
469
+ )
468
470
  self._logger.debug("beginning transaction")
469
471
  self._session = self.session_factory()
470
472
  self._session.begin().__enter__()
@@ -19,6 +19,7 @@ from uuid import uuid4
19
19
 
20
20
  import duckdb
21
21
  import pandas as pd
22
+
22
23
  from dataops_sdk.utils.log import getLogger
23
24
 
24
25
  from .dbConn_sync import DatabaseConn
@@ -228,6 +228,18 @@ class SqlQueryParam(BaseModel):
228
228
  sorts: Annotated[list[SqlSort], Field(description="排序列表", default_factory=list)]
229
229
  varMap: Annotated[dict[str, JsonValue], Field(description="变量映射", default_factory=dict)]
230
230
 
231
+ def add(self, *condition: SqlCondition):
232
+ """追加条件.
233
+
234
+ Args:
235
+ condition: 条件。
236
+
237
+ Returns:
238
+ SqlQueryParam: ``self``,便于链式调用。
239
+ """
240
+ self.conditionList.extend(condition)
241
+ return self
242
+
231
243
  def add_eq(self, name: str, value: Any, alias: str | None = None):
232
244
  """追加 ``=`` 等值条件.
233
245
 
@@ -5,6 +5,7 @@
5
5
  """
6
6
 
7
7
  from collections.abc import Mapping
8
+ from enum import StrEnum
8
9
  from typing import Annotated, Any
9
10
 
10
11
  from pydantic import AliasChoices, BaseModel, Field, JsonValue
@@ -12,33 +13,53 @@ from pydantic import AliasChoices, BaseModel, Field, JsonValue
12
13
  from dataops_sdk.schemas.meta import Meta
13
14
 
14
15
 
16
+ class MetaSkillSubType(StrEnum):
17
+ LLM = "llm"
18
+ API = "api"
19
+ REPORT = "report"
20
+
21
+
22
+ class MetaSkillFileSubType(StrEnum):
23
+ DOC = "doc"
24
+ CODE = "code"
25
+ IMAGE = "image"
26
+
27
+
15
28
  class DataSkill(BaseModel):
16
29
  """技能实体 rawData 私有字段.
17
30
 
18
31
  字段命名参考前端 ``SkillFile.vue`` 与后端 ``SkillService`` 的约定:
19
- - ``markdown``: SKILL.md 的 Markdown 正文(用于 LLM 子类型技能)
20
32
  - ``editor``: TipTap JSON 文档结构(用于编辑器渲染)
21
33
  - ``args``: 技能对外入参定义列表
22
- - ``input_json_schema``: JSON Schema 格式的入参约束
23
34
 
24
35
  Attributes:
25
36
  markdown: SKILL.md Markdown 内容。
26
37
  editor: TipTap JSON 文档结构。
27
38
  args: 技能对外入参定义。
28
- input_json_schema: JSON Schema 入参约束。
29
39
  """
30
40
 
31
- markdown: Annotated[str | None, Field(description="SKILL.md Markdown 内容")] = None
32
- editor: Annotated[Mapping[str, JsonValue] | None, Field(description="TipTap JSON 文档结构")] = (
33
- None
34
- )
41
+ editor: Annotated[Mapping[str, JsonValue], Field(description="TipTap JSON 文档结构")]
35
42
  args: Annotated[
36
43
  list[Mapping[str, JsonValue]] | None,
37
44
  Field(description="技能对外入参定义"),
38
45
  ] = None
39
- input_json_schema: Annotated[
40
- Mapping[str, JsonValue] | None, Field(description="JSON Schema 入参约束")
41
- ] = None
46
+
47
+
48
+ class DataSkillSubFileDoc(BaseModel):
49
+ mimetype: Annotated[str, Field(description="文件 MIME 类型")]
50
+ editor: Annotated[Mapping[str, JsonValue], Field(description="TipTap JSON 文档结构")]
51
+
52
+
53
+ class DataSkillSubFileCode(BaseModel):
54
+ mimetype: Annotated[str, Field(description="文件 MIME 类型")]
55
+ content: Annotated[str, Field(description="文件内容")]
56
+ language: Annotated[str, Field(description="编程语言")]
57
+
58
+
59
+ class DataSkillSubFileImage(BaseModel):
60
+ mimetype: Annotated[str, Field(description="文件 MIME 类型")]
61
+ content: Annotated[str, Field(description="文件内容")]
62
+ language: Annotated[str, Field(description="编程语言")]
42
63
 
43
64
 
44
65
  class MetaSkill(Meta[DataSkill]):
@@ -65,6 +65,7 @@ from .meta import (
65
65
  release_list_get_by_code,
66
66
  release_list_get_by_name,
67
67
  release_list_list,
68
+ release_list_list_by_parent_id,
68
69
  release_list_page,
69
70
  release_list_total,
70
71
  release_list_update,
@@ -75,14 +76,19 @@ from .metrics import service_get_metrics, service_list_metrics
75
76
  from .ref import service_ref_backward, service_ref_forward
76
77
  from .report import service_get_report, service_list_reports
77
78
  from .skill import (
79
+ SkillPackValidationError,
78
80
  service_delete_skill,
79
81
  service_get_skill_by_code,
80
82
  service_get_skill_by_name,
81
83
  service_list_skill_files,
82
84
  service_list_skills,
85
+ service_pack_skill_zip,
83
86
  service_skill_call_by_code,
87
+ service_skill_call_by_name,
84
88
  service_skill_delete_sub_file,
85
- service_skill_import,
89
+ service_skill_get_subfile_by_code,
90
+ service_skill_get_subfile_by_name,
91
+ service_skill_upload,
86
92
  service_skill_upload_sub_file,
87
93
  )
88
94
  from .table import (
@@ -26,18 +26,73 @@ from dataops_sdk.schemas import (
26
26
  MetaRelease,
27
27
  MetaType,
28
28
  PageParam,
29
+ SqlCondition,
29
30
  SqlQueryParam,
30
31
  )
31
32
  from dataops_sdk.session import get_session
32
33
  from dataops_sdk.utils import encrypt_body
33
34
 
34
35
 
36
+ def release_list_list_by_parent_id(
37
+ meta_type: MetaType | InnerMetaType | str,
38
+ parent_id: str,
39
+ datasource: str | None = None,
40
+ ) -> list[MetaRelease]:
41
+ """获取 Meta Release 列表.
42
+
43
+ Args:
44
+ meta_type: 元数据类型(MetaType 枚举或字符串).
45
+ filters: SQL 查询过滤条件列表.
46
+ headers: 额外的请求头.
47
+ datasource: 数据源;非空时写入 ``x-sub-system`` 头.
48
+ extra_conditions: 额外的 SQL 查询条件.
49
+
50
+ Returns:
51
+ MetaRelease 对象列表
52
+
53
+ Raises:
54
+ DataOpsError: API 返回错误时
55
+ AuthenticationError: 未认证或认证失败时
56
+ """
57
+ type_str = meta_type.value if isinstance(meta_type, (MetaType, InnerMetaType)) else meta_type
58
+ url = "/meta/release/list/list"
59
+
60
+ sql_query_param = (
61
+ SqlQueryParam().add_eq("type", type_str, "mrl").add_eq("parent_id", parent_id, "mrl")
62
+ )
63
+
64
+ body = {
65
+ "pageParam": PageParam(limit=-1),
66
+ "queryParam": sql_query_param,
67
+ }
68
+
69
+ if datasource:
70
+ body["subSystem"] = datasource
71
+
72
+ try:
73
+ with get_session() as session:
74
+ resp = session.post(url, content=to_json(encrypt_body(body)))
75
+ resp_body = resp.json()
76
+ if resp.status_code == 401:
77
+ raise AuthenticationError("认证失败,请先登录")
78
+ if resp.status_code != 200:
79
+ raise DataOpsError(
80
+ resp_body.get("msg", f"HTTP {resp.status_code}"), resp.status_code
81
+ )
82
+ group_nodes = TypeAdapter(
83
+ list[MetaRelease], config=ConfigDict(str_to_lower=True)
84
+ ).validate_python(resp_body["data"])
85
+ return group_nodes
86
+ except SystemExit as e:
87
+ raise AuthenticationError("认证失败,请先登录") from e
88
+
89
+
35
90
  def release_list_list(
36
91
  meta_type: MetaType | InnerMetaType | str,
37
92
  filters: Sequence[dict] | None = None,
38
93
  headers: dict[str, str] | None = None,
39
94
  datasource: str | None = None,
40
- extra_conditions: Sequence[dict] | None = None,
95
+ extra_conditions: Sequence[SqlCondition] | None = None,
41
96
  ) -> list[MetaRelease]:
42
97
  """获取 Meta Release 列表.
43
98
 
@@ -46,9 +101,7 @@ def release_list_list(
46
101
  filters: SQL 查询过滤条件列表.
47
102
  headers: 额外的请求头.
48
103
  datasource: 数据源;非空时写入 ``x-sub-system`` 头.
49
- extra_conditions: 在默认 ``type=meta_type`` 之上追加等值条件列表,每项形如
50
- ``{"name": "parent_id", "value": "xxx", "alias": "mrl"}``. 主要用于按
51
- parent_id 等辅助字段过滤。
104
+ extra_conditions: 额外的 SQL 查询条件.
52
105
 
53
106
  Returns:
54
107
  MetaRelease 对象列表
@@ -61,8 +114,8 @@ def release_list_list(
61
114
  url = "/meta/release/list/list"
62
115
 
63
116
  sql_query_param = SqlQueryParam().add_eq("type", type_str, "mrl")
64
- for cond in extra_conditions or []:
65
- sql_query_param.add_eq(cond["name"], cond["value"], cond.get("alias", "mrl"))
117
+ if extra_conditions:
118
+ sql_query_param.add(extra_conditions)
66
119
 
67
120
  headers = headers or {}
68
121
  if datasource: