dataops-sdk 0.3.5__tar.gz → 0.3.6__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.5 → dataops_sdk-0.3.6}/PKG-INFO +1 -1
  2. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/__init__.py +1 -3
  3. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/__init__.py +2 -0
  4. dataops_sdk-0.3.6/src/dataops_sdk/schemas/common.py +9 -0
  5. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/meta.py +8 -4
  6. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/query.py +5 -7
  7. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/skill.py +1 -0
  8. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/__init__.py +0 -2
  9. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/data_table.py +106 -166
  10. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/dict_.py +1 -3
  11. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/meta.py +32 -149
  12. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/table.py +167 -215
  13. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/widget.py +2 -2
  14. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/session.py +66 -6
  15. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/utils/utils.py +2 -2
  16. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk.egg-info/PKG-INFO +1 -1
  17. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk.egg-info/SOURCES.txt +1 -0
  18. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/pyproject.toml +0 -0
  19. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/setup.cfg +0 -0
  20. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/constants.py +0 -0
  21. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/exceptions.py +0 -0
  22. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/__init__.py +0 -0
  23. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/datasource_factory.py +0 -0
  24. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/__init__.py +0 -0
  25. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/config.py +0 -0
  26. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/constants.py +0 -0
  27. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/instance.py +0 -0
  28. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/nacos_exception.py +0 -0
  29. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/naming_param.py +0 -0
  30. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/naming_request.py +0 -0
  31. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/naming_response.py +0 -0
  32. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/preserved_metadata_key.py +0 -0
  33. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/schemas/nacos/service.py +0 -0
  34. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/__init__.py +0 -0
  35. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/common.py +0 -0
  36. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/dbConn_base.py +0 -0
  37. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/dbConn_sync.py +0 -0
  38. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/duckdb_manager.py +0 -0
  39. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/file_transfer_base.py +0 -0
  40. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/ftp_file_transfer.py +0 -0
  41. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/nacos.py +0 -0
  42. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/neo4j_sync.py +0 -0
  43. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/queue_base.py +0 -0
  44. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/queue_kafka.py +0 -0
  45. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/runner/utils/sftp_file_transfer.py +0 -0
  46. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/alarm.py +0 -0
  47. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/api.py +0 -0
  48. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/data_table.py +0 -0
  49. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/datasource.py +0 -0
  50. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/dict_.py +0 -0
  51. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/enums.py +0 -0
  52. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/group.py +0 -0
  53. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/hazard.py +0 -0
  54. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/report.py +0 -0
  55. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/table.py +0 -0
  56. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/user.py +0 -0
  57. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/widget.py +0 -0
  58. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/schemas/workflow.py +0 -0
  59. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/alarm.py +0 -0
  60. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/api.py +0 -0
  61. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/auth.py +0 -0
  62. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/dataset.py +0 -0
  63. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/datasource.py +0 -0
  64. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/hazard.py +0 -0
  65. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/metrics.py +0 -0
  66. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/ref.py +0 -0
  67. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/report.py +0 -0
  68. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/skill.py +0 -0
  69. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/services/workflow.py +0 -0
  70. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/__init__.py +0 -0
  71. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/builder.py +0 -0
  72. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/constants.py +0 -0
  73. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/markdown_parser.py +0 -0
  74. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/models.py +0 -0
  75. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/parse_utils.py +0 -0
  76. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/render_utils.py +0 -0
  77. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/renderers.py +0 -0
  78. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/tiptap/tool.py +0 -0
  79. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/utils/__init__.py +0 -0
  80. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/utils/common.py +0 -0
  81. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk/utils/log.py +0 -0
  82. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk.egg-info/dependency_links.txt +0 -0
  83. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk.egg-info/requires.txt +0 -0
  84. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/src/dataops_sdk.egg-info/top_level.txt +0 -0
  85. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/tests/test_constants.py +0 -0
  86. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/tests/test_exceptions.py +0 -0
  87. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/tests/test_session.py +0 -0
  88. {dataops_sdk-0.3.5 → dataops_sdk-0.3.6}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataops-sdk
3
- Version: 0.3.5
3
+ Version: 0.3.6
4
4
  Summary: Python SDK for the DataOps platform.
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: pydantic<3,>=2
@@ -67,9 +67,7 @@ from .services import ( # noqa: F401
67
67
  service_get_table_detail_by_code,
68
68
  service_get_table_detail_by_name,
69
69
  service_get_table_list_by_code,
70
- service_get_table_record_by_id,
71
70
  service_get_table_records_by_code,
72
- service_get_table_reference_list,
73
71
  service_get_table_total_by_code,
74
72
  service_get_widget_data_by_code,
75
73
  service_get_widget_detail_by_code,
@@ -109,4 +107,4 @@ from .services import ( # noqa: F401
109
107
  )
110
108
  from .session import dataops_base_url_context, request_context
111
109
 
112
- __version__ = "0.3.5"
110
+ __version__ = "0.3.6"
@@ -28,6 +28,7 @@ from .meta import (
28
28
  MetaCreate,
29
29
  MetaRef,
30
30
  MetaUpdate,
31
+ MetaPageData,
31
32
  )
32
33
  from .query import PageParam, SqlCondition, SqlQueryParam, SqlSort
33
34
  from .report import ReportMeta, ReportMetaData
@@ -43,3 +44,4 @@ from .table import (
43
44
  from .user import Application, UserInfo
44
45
  from .widget import WidgetMeta, WidgetMetaData
45
46
  from .workflow import DataWorkflow, MetaWorkflow
47
+ from .common import DataOpsResponse
@@ -0,0 +1,9 @@
1
+ from typing_extensions import Annotated, TypeVar, Generic
2
+ from pydantic import BaseModel, JsonValue, Field, NonNegativeInt
3
+
4
+ DataVar = TypeVar("DataVar", default=JsonValue | None)
5
+
6
+ class DataOpsResponse(BaseModel, Generic[DataVar]):
7
+ code: Annotated[NonNegativeInt, Field(description="响应码")]
8
+ msg: Annotated[str | None, Field(description="响应消息")]
9
+ data: Annotated[DataVar, Field(description="响应数据")]
@@ -127,10 +127,7 @@ class MetaBase(BaseModel):
127
127
  ] = None
128
128
  spaceName: Annotated[
129
129
  str | None,
130
- Field(
131
- description="空间名称",
132
- validate_alias=AliasChoices("spaceName", "space_name", "SPACE_NAME"),
133
- ),
130
+ Field(description="空间名称", validation_alias=AliasChoices("spaceName", "space_name", "SPACE_NAME")),
134
131
  ] = None
135
132
 
136
133
  subSystem: Annotated[
@@ -339,3 +336,10 @@ class MetaUpdate(BaseModel, Generic[META_DATA_TYPE]):
339
336
  data: Annotated[
340
337
  META_DATA_TYPE | None, Field(description="元数据", exclude_if=lambda x: x is None)
341
338
  ] = None
339
+
340
+
341
+ class MetaPageData(BaseModel):
342
+ total: Annotated[int, Field(description="总数")]
343
+ page_num: Annotated[int, Field(description="页码", validation_alias=AliasChoices("pageNum", "page_num"))]
344
+ page_size: Annotated[int, Field(description="页大小", validation_alias=AliasChoices("pageSize", "page_size"))]
345
+ records: list[MetaBase] = Field(default_factory=list, description="数据")
@@ -32,6 +32,7 @@ class SqlConditionBase(BaseModel):
32
32
 
33
33
  name: Annotated[str, Field(description="字段名")]
34
34
  value: Annotated[Any, Field(description="字段值")]
35
+ expression: Annotated[SqlExpression, Field(description="条件表达式")] = SqlExpression.EQ
35
36
 
36
37
 
37
38
  class SqlCondition(SqlConditionBase):
@@ -45,7 +46,6 @@ class SqlCondition(SqlConditionBase):
45
46
  """
46
47
 
47
48
  alias: Annotated[str | None, Field(description="表别名")] = None
48
- expression: Annotated[SqlExpression, Field(description="条件表达式")]
49
49
 
50
50
 
51
51
  class SqlSort(BaseModel):
@@ -85,7 +85,7 @@ class SqlFilter(BaseModel):
85
85
  Returns:
86
86
  SqlFilter: 对应的过滤器实例。
87
87
  """
88
- return cls(condition=SqlConditionBase(name=name, value=value))
88
+ return cls(condition=SqlConditionBase(name=name, value=value, expression=SqlExpression.EQ))
89
89
 
90
90
  @classmethod
91
91
  def ne(cls, name: str, value: Any):
@@ -222,11 +222,9 @@ class SqlQueryParam(BaseModel):
222
222
  """
223
223
 
224
224
  conjunction: Annotated[Literal["and", "or"], Field(description="条件连接符")] = "and"
225
- conditionList: Annotated[
226
- list[SqlCondition], Field(description="条件列表", default_factory=list)
227
- ]
228
- sorts: Annotated[list[SqlSort], Field(description="排序列表", default_factory=list)]
229
- varMap: Annotated[dict[str, JsonValue], Field(description="变量映射", default_factory=dict)]
225
+ conditionList: list[SqlCondition] = Field(description="条件列表", default_factory=list)
226
+ sorts: list[SqlSort] = Field(description="排序列表", default_factory=list)
227
+ varMap: dict[str, JsonValue] = Field(description="变量映射", default_factory=dict)
230
228
 
231
229
  def add(self, *condition: SqlCondition):
232
230
  """追加条件.
@@ -16,6 +16,7 @@ class MetaSkillSubType(StrEnum):
16
16
  LLM = "llm"
17
17
  API = "api"
18
18
  REPORT = "report"
19
+ FORM = "form"
19
20
 
20
21
 
21
22
  class MetaSkillFileSubType(StrEnum):
@@ -113,9 +113,7 @@ from .table import (
113
113
  service_get_table_detail_by_code,
114
114
  service_get_table_detail_by_name,
115
115
  service_get_table_list_by_code,
116
- service_get_table_record_by_id,
117
116
  service_get_table_records_by_code,
118
- service_get_table_reference_list,
119
117
  service_get_table_total_by_code,
120
118
  service_list_tables,
121
119
  service_update_table_record_by_id,
@@ -1,14 +1,13 @@
1
1
  """多维表格 (DataTable) 的 SDK 服务层.
2
-
3
- 纯 Python 接口,返回原始 Pydantic 模型,不依赖 typer/Rich。
4
2
  """
5
3
 
6
4
  from __future__ import annotations
7
5
 
8
- import warnings
9
6
  from collections.abc import Mapping, Sequence
7
+ from typing_extensions import cast
10
8
 
11
9
  from pydantic import JsonValue, TypeAdapter
10
+ from pydantic_core import to_json
12
11
 
13
12
  from dataops_sdk.schemas import (
14
13
  DataTableData,
@@ -23,18 +22,8 @@ from dataops_sdk.services.meta import (
23
22
  release_list_get_by_code,
24
23
  release_list_get_by_name,
25
24
  )
26
- from dataops_sdk.services.table import (
27
- service_create_table_record,
28
- service_delete_table_record_by_id,
29
- service_delete_table_record_by_id_list,
30
- service_get_table_list_by_code,
31
- service_get_table_record_by_id,
32
- service_get_table_records_by_code,
33
- service_get_table_reference_list,
34
- service_get_table_total_by_code,
35
- service_update_table_record_by_id,
36
- service_update_table_record_by_id_list,
37
- )
25
+ from dataops_sdk.session import get_headers, get_session, vaild_respone
26
+ from dataops_sdk.utils import encrypt_body
38
27
 
39
28
  __all__ = [
40
29
  "service_get_data_table_by_name",
@@ -53,15 +42,6 @@ __all__ = [
53
42
  ]
54
43
 
55
44
 
56
- def _warn_deprecated(old_name: str, new_name: str) -> None:
57
- """提示调用方迁移到 ``table`` SDK 的同等服务。"""
58
- warnings.warn(
59
- f"{old_name} 已弃用,请改用 dataops_sdk.services.table.{new_name}",
60
- DeprecationWarning,
61
- stacklevel=3,
62
- )
63
-
64
-
65
45
  def service_get_data_table_by_name(datasource: str, name: str) -> Meta[DataTableData]:
66
46
  """根据名称获取多维表格.
67
47
 
@@ -99,6 +79,26 @@ def service_get_data_table_by_code(code: str) -> Meta[DataTableData]:
99
79
  return release_list_get_by_code(MetaType.DATA_TABLE, code, _class=DataTableData)
100
80
 
101
81
 
82
+ def service_create_data_table(meta: MetaCreate[DataTableData]) -> Meta[DataTableData]:
83
+ """创建多维表格.
84
+
85
+ Args:
86
+ meta: 要创建的多维表格元数据对象.
87
+
88
+ Returns:
89
+ 后端返回的 ``data`` 字典.
90
+
91
+ Raises:
92
+ FailedToCreateError: 创建失败时.
93
+ DataOpsError: API 返回错误时.
94
+ AuthenticationError: 未认证或认证失败时.
95
+ """
96
+ return release_list_create(
97
+ meta,
98
+ _class=DataTableData,
99
+ )
100
+
101
+
102
102
  def service_get_data_table_data_by_code(
103
103
  code: str,
104
104
  page_param: PageParam | None = None,
@@ -107,7 +107,6 @@ def service_get_data_table_data_by_code(
107
107
  translate: bool = True,
108
108
  *,
109
109
  meta: Meta[DataTableData] | None = None,
110
- _warn: bool = True,
111
110
  ) -> list[Mapping[str, JsonValue]]:
112
111
  """根据编码获取多维表格的数据.
113
112
 
@@ -115,7 +114,6 @@ def service_get_data_table_data_by_code(
115
114
  code: 数据表编码
116
115
  page_param: 分页参数,默认为 PageParam()(第一页,每页 20 条)
117
116
  query_param: 查询过滤条件,默认为 SqlQueryParam()
118
- datasource: 数据源标识,指定从哪个子系统查询(可选)
119
117
  show_invisible: 是否显示未标记 visible 的字段,默认为 False
120
118
  translate: 是否对 DICT 类型字段进行值翻译,默认为 True
121
119
 
@@ -127,13 +125,8 @@ def service_get_data_table_data_by_code(
127
125
  DataOpsError: API 返回错误时
128
126
  AuthenticationError: 未认证或认证失败时
129
127
  """
130
- if _warn:
131
- _warn_deprecated(
132
- "service_get_data_table_data_by_code",
133
- "service_get_table_records_by_code"
134
- if translate
135
- else "service_get_table_list_by_code",
136
- )
128
+ url = f"/data/table/records/{code}" if translate else f"/data/table/list/{code}"
129
+
137
130
 
138
131
  if page_param is None:
139
132
  page_param = PageParam()
@@ -141,24 +134,19 @@ def service_get_data_table_data_by_code(
141
134
  query_param = SqlQueryParam()
142
135
 
143
136
  meta = meta or service_get_data_table_by_code(code)
137
+ assert meta.data, "元数据为空 is None"
138
+
139
+ with get_session(timeout=15, sub_system=meta.subSystem) as session:
140
+ resp = session.post(url, content=to_json(encrypt_body(dict(pageParam=page_param, queryParam=query_param, code=code))))
141
+ body = vaild_respone(resp, True)
144
142
 
145
143
  adapter = TypeAdapter(list[Mapping[str, JsonValue]])
146
144
 
147
145
  if translate:
148
- records_body = service_get_table_records_by_code(
149
- code,
150
- page_param=page_param,
151
- query_param=query_param,
152
- datasource=meta.subSystem,
153
- )
154
- datas = adapter.validate_python(records_body.get("list", []))
146
+ datas = adapter.validate_python(body.data.get("list", []))
155
147
  else:
156
- datas = service_get_table_list_by_code(
157
- code,
158
- page_param=page_param,
159
- query_param=query_param,
160
- datasource=meta.subSystem,
161
- )
148
+ datas = adapter.validate_python(body.data or [])
149
+
162
150
 
163
151
  # 过滤不需要显示的字段,建立字段名映射
164
152
  all_fields = meta.data.fields
@@ -170,13 +158,12 @@ def service_get_data_table_data_by_code(
170
158
  dict_fields_name: set[str] = set()
171
159
  dict_field_map: dict[str, dict[str, str]] = {}
172
160
  if translate:
173
- relations = records_body.get("relations", {})
161
+ relations = body.data.get("data", {}).get("relations", {})
174
162
  dict_fields = [f for f in all_fields if f.type == MetaType.DICT.value]
175
163
  if not isinstance(relations, Mapping):
176
164
  relations = {}
177
165
  for key, relation in relations.items():
178
166
  if key.startswith("dict"):
179
- # 查找匹配的字段(通过 ref.code 匹配)
180
167
  field = next(
181
168
  (f for f in dict_fields if f.type_ext.get("ref", {}).get("code")),
182
169
  None,
@@ -188,7 +175,7 @@ def service_get_data_table_data_by_code(
188
175
  }
189
176
  dict_fields_name.add(field.dbName)
190
177
 
191
- # 单次遍历完成所有转换: lowercase -> 过滤 -> 字典翻译 -> 字段名映射
178
+ # 单次遍历完成所有转换
192
179
  datas = [
193
180
  {
194
181
  field_name_map[k_lower]: (
@@ -213,9 +200,6 @@ def service_get_data_table_data_by_name(
213
200
  ):
214
201
  """按数据源与名称获取多维表格数据.
215
202
 
216
- 内部先按 ``datasource`` / ``name`` 获取 meta 对象,再委托给
217
- :func:`service_get_data_table_data_by_code` 完成实际查询并复用 meta 提升性能.
218
-
219
203
  Args:
220
204
  datasource: 数据源.
221
205
  name: 多维表格名称.
@@ -232,10 +216,6 @@ def service_get_data_table_data_by_name(
232
216
  DataOpsError: API 返回错误时.
233
217
  AuthenticationError: 未认证或认证失败时.
234
218
  """
235
- _warn_deprecated(
236
- "service_get_data_table_data_by_name",
237
- "service_get_table_records_by_code" if translate else "service_get_table_list_by_code",
238
- )
239
219
  meta = service_get_data_table_by_name(datasource, name)
240
220
  return service_get_data_table_data_by_code(
241
221
  meta.code,
@@ -244,67 +224,9 @@ def service_get_data_table_data_by_name(
244
224
  show_invisible=show_invisible,
245
225
  translate=translate,
246
226
  meta=meta,
247
- _warn=False,
248
- )
249
-
250
-
251
- def service_create_data_table(meta: MetaCreate[DataTableData]) -> dict:
252
- """创建多维表格.
253
-
254
- Args:
255
- meta: 要创建的多维表格元数据对象.
256
-
257
- Returns:
258
- 后端返回的 ``data`` 字典.
259
-
260
- Raises:
261
- FailedToCreateError: 创建失败时.
262
- DataOpsError: API 返回错误时.
263
- AuthenticationError: 未认证或认证失败时.
264
- """
265
- return release_list_create(
266
- meta,
267
- _class=DataTableData,
268
227
  )
269
228
 
270
229
 
271
- # def service_update_data_table(
272
- # code: str,
273
- # title: str,
274
- # data: dict,
275
- # *,
276
- # name: str | None = None,
277
- # cuid: str | None = None,
278
- # sub_type: str | None = None,
279
- # ) -> dict:
280
- # """更新多维表格.
281
-
282
- # Args:
283
- # code: 多维表格编码
284
- # title: 中文标题
285
- # data: meta.data 字典,结构参考 DataTableData
286
- # name: 名称 (默认为 code)
287
- # cuid: 元数据 CUID (更新时必传)
288
- # sub_type: 子类型 (可选)
289
-
290
- # Returns:
291
- # API 返回的 data 字典
292
-
293
- # Raises:
294
- # DataOpsError: API 返回错误时
295
- # AuthenticationError: 未认证或认证失败时
296
- # """
297
- # return release_list_update(
298
- # MetaType.DATA_TABLE,
299
- # code=code,
300
- # name=name or code,
301
- # title=title,
302
- # data=data,
303
- # cuid=cuid,
304
- # sub_type=sub_type,
305
- # )
306
-
307
-
308
230
  def service_get_data_table_total(
309
231
  code: str,
310
232
  query_param: SqlQueryParam | None = None,
@@ -325,22 +247,18 @@ def service_get_data_table_total(
325
247
  DataOpsError: API 返回错误时
326
248
  AuthenticationError: 未认证或认证失败时
327
249
  """
328
- _warn_deprecated(
329
- "service_get_data_table_total",
330
- "service_get_table_total_by_code",
331
- )
332
250
  meta = meta or service_get_data_table_by_code(code)
333
- return service_get_table_total_by_code(
334
- code,
335
- query_param=query_param,
336
- datasource=meta.subSystem,
337
- )
251
+ if query_param is None:
252
+ query_param = SqlQueryParam()
253
+ body = {
254
+ "queryParam": query_param,
255
+ }
256
+ with get_session(timeout=15, sub_system=meta.subSystem) as session:
257
+ resp = session.post(f"/data/table/total/{code}", content=to_json(encrypt_body(dict(queryParam=query_param))))
258
+ body = vaild_respone(resp, True)
259
+ return body.data or 0 # pyright: ignore[reportReturnType]
338
260
 
339
261
 
340
- @warnings.deprecated(
341
- "Use dataops_sdk.services.table.service_get_table_reference_list instead.",
342
- stacklevel=2,
343
- )
344
262
  def service_get_data_table_reference_list(
345
263
  code: str,
346
264
  subcode: str,
@@ -362,18 +280,17 @@ def service_get_data_table_reference_list(
362
280
  DataOpsError: API 返回错误时
363
281
  AuthenticationError: 未认证或认证失败时
364
282
  """
365
- return service_get_table_reference_list(
366
- code,
367
- subcode,
368
- page_param=page_param,
369
- query_param=query_param,
370
- )
283
+ meta = service_get_data_table_by_code(code)
284
+ body = {
285
+ "pageParam": page_param or PageParam(),
286
+ "queryParam": query_param or SqlQueryParam(),
287
+ }
288
+ with get_session(timeout=15, sub_system=meta.subSystem) as session:
289
+ resp = session.post(f"/data/table/referenceList/{code}/{subcode}", content=to_json(encrypt_body(body)))
290
+ body = vaild_respone(resp, True, _class=list[str])
291
+ return body.data or []
371
292
 
372
293
 
373
- @warnings.deprecated(
374
- "Use dataops_sdk.services.table.service_get_table_record_by_id instead.",
375
- stacklevel=2,
376
- )
377
294
  def service_get_data_table_record_by_id(code: str, id: str) -> dict[str, JsonValue]:
378
295
  """根据 ID 获取多维表格单条记录.
379
296
 
@@ -389,7 +306,10 @@ def service_get_data_table_record_by_id(code: str, id: str) -> dict[str, JsonVal
389
306
  DataOpsError: API 返回错误时
390
307
  AuthenticationError: 未认证或认证失败时
391
308
  """
392
- return service_get_table_record_by_id(code, id)
309
+ with get_session() as session:
310
+ resp = session.get(f"/data/table/getById/{code}/{id}")
311
+ body = vaild_respone(resp, True, _class=dict[str, JsonValue])
312
+ return body.data or {}
393
313
 
394
314
 
395
315
  def service_create_data_table_record(
@@ -412,23 +332,20 @@ def service_create_data_table_record(
412
332
  DataOpsError: API 返回错误时
413
333
  AuthenticationError: 未认证或认证失败时
414
334
  """
415
- _warn_deprecated(
416
- "service_create_data_table_record",
417
- "service_create_table_record",
418
- )
419
335
  if meta is None:
420
336
  meta = service_get_data_table_by_code(code)
421
- return service_create_table_record(code, data, datasource=meta.subSystem)
337
+ with get_session(sub_system=meta.subSystem) as session:
338
+ resp = session.post(f"/data/table/create/{code}", content=to_json(encrypt_body(dict(data))))
339
+ body = vaild_respone(resp, True)
340
+ return str(body.data) if body.data else ""
422
341
 
423
342
 
424
- @warnings.deprecated(
425
- "Use dataops_sdk.services.table.service_update_table_record_by_id instead.",
426
- stacklevel=2,
427
- )
428
343
  def service_update_data_table_record_by_id(
429
344
  code: str,
430
345
  id: str,
431
346
  data: Mapping[str, JsonValue],
347
+ *,
348
+ meta: Meta[DataTableData] | None = None,
432
349
  ) -> bool:
433
350
  """按 ID 更新多维表格记录.
434
351
 
@@ -436,6 +353,7 @@ def service_update_data_table_record_by_id(
436
353
  code: 数据表编码
437
354
  id: 主键 ID
438
355
  data: 要更新的字段数据
356
+ meta: 多维表格元数据对象(可选,用于获取 subSystem)
439
357
 
440
358
  Returns:
441
359
  更新是否成功
@@ -444,24 +362,28 @@ def service_update_data_table_record_by_id(
444
362
  DataOpsError: API 返回错误时
445
363
  AuthenticationError: 未认证或认证失败时
446
364
  """
447
- return service_update_table_record_by_id(code, id, data)
365
+ if meta is None:
366
+ meta = service_get_data_table_by_code(code)
367
+ with get_session(sub_system=meta.subSystem) as session:
368
+ resp = session.post(f"/data/table/updateById/{code}/{id}", content=to_json(encrypt_body(dict(data))))
369
+ body = vaild_respone(resp, True)
370
+ return cast(bool, body.data)
448
371
 
449
372
 
450
- @warnings.deprecated(
451
- "Use dataops_sdk.services.table.service_update_table_record_by_id_list instead.",
452
- stacklevel=2,
453
- )
454
373
  def service_update_data_table_record_by_id_list(
455
374
  code: str,
456
- id_list: Sequence[str],
375
+ ids: Sequence[str],
457
376
  data: Mapping[str, JsonValue],
377
+ *,
378
+ meta: Meta[DataTableData] | None = None,
458
379
  ) -> bool:
459
380
  """按 ID 列表批量更新多维表格记录.
460
381
 
461
382
  Args:
462
383
  code: 数据表编码
463
- id_list: 主键 ID 列表
384
+ ids: 主键 ID 列表
464
385
  data: 要更新的字段数据
386
+ meta: 多维表格元数据对象(可选,用于获取 subSystem)
465
387
 
466
388
  Returns:
467
389
  更新是否成功
@@ -470,19 +392,27 @@ def service_update_data_table_record_by_id_list(
470
392
  DataOpsError: API 返回错误时
471
393
  AuthenticationError: 未认证或认证失败时
472
394
  """
473
- return service_update_table_record_by_id_list(code, id_list, data)
395
+ if meta is None:
396
+ meta = service_get_data_table_by_code(code)
397
+ body = {"idList": ids, "data": data}
398
+ with get_session(sub_system=meta.subSystem) as session:
399
+ resp = session.post(f"/data/table/updateByIdList/{code}", content=to_json(encrypt_body(dict(body))))
400
+ body = vaild_respone(resp, True)
401
+ return cast(bool, body.data)
474
402
 
475
403
 
476
- @warnings.deprecated(
477
- "Use dataops_sdk.services.table.service_delete_table_record_by_id instead.",
478
- stacklevel=2,
479
- )
480
- def service_delete_data_table_record_by_id(code: str, id: str) -> bool:
404
+ def service_delete_data_table_record_by_id(
405
+ code: str,
406
+ id: str,
407
+ *,
408
+ meta: Meta[DataTableData] | None = None,
409
+ ) -> bool:
481
410
  """按 ID 删除多维表格单条记录.
482
411
 
483
412
  Args:
484
413
  code: 数据表编码
485
414
  id: 主键 ID
415
+ meta: 多维表格元数据对象(可选,用于获取 subSystem)
486
416
 
487
417
  Returns:
488
418
  删除是否成功
@@ -491,22 +421,26 @@ def service_delete_data_table_record_by_id(code: str, id: str) -> bool:
491
421
  DataOpsError: API 返回错误时
492
422
  AuthenticationError: 未认证或认证失败时
493
423
  """
494
- return service_delete_table_record_by_id(code, id)
424
+ if meta is None:
425
+ meta = service_get_data_table_by_code(code)
426
+ with get_session(sub_system=meta.subSystem) as session:
427
+ resp = session.post(f"/data/table/deleteById/{code}/{id}")
428
+ body = vaild_respone(resp, True)
429
+ return cast(bool, body.data)
495
430
 
496
431
 
497
- @warnings.deprecated(
498
- "Use dataops_sdk.services.table.service_delete_table_record_by_id_list instead.",
499
- stacklevel=2,
500
- )
501
432
  def service_delete_data_table_record_by_id_list(
502
433
  code: str,
503
434
  id_list: Sequence[str],
435
+ *,
436
+ meta: Meta[DataTableData] | None = None,
504
437
  ) -> bool:
505
438
  """按 ID 列表批量删除多维表格记录.
506
439
 
507
440
  Args:
508
441
  code: 数据表编码
509
442
  id_list: 主键 ID 列表
443
+ meta: 多维表格元数据对象(可选,用于获取 subSystem)
510
444
 
511
445
  Returns:
512
446
  删除是否成功
@@ -515,4 +449,10 @@ def service_delete_data_table_record_by_id_list(
515
449
  DataOpsError: API 返回错误时
516
450
  AuthenticationError: 未认证或认证失败时
517
451
  """
518
- return service_delete_table_record_by_id_list(code, id_list)
452
+ if meta is None:
453
+ meta = service_get_data_table_by_code(code)
454
+ body = dict(idList=id_list)
455
+ with get_session(sub_system=meta.subSystem) as session:
456
+ resp = session.post(f"/data/table/deleteByIdList/{code}", content=to_json(encrypt_body(body)))
457
+ body = vaild_respone(resp, True)
458
+ return cast(bool, body.data)
@@ -30,9 +30,7 @@ def service_list_dicts(datasource: str) -> list[MetaBase]:
30
30
  DataOpsError: API 请求失败时
31
31
  AuthenticationError: 未认证时
32
32
  """
33
- headers = {"x-sub-system": datasource}
34
- filters = (SqlQueryParam().add_eq("sub_system", datasource, "mrl"),)
35
- return release_list_list(MetaType.DICT, filters=filters, headers=headers)
33
+ return release_list_list(MetaType.DICT, datasource=datasource)
36
34
 
37
35
 
38
36
  def service_get_dict_detail_by_name(datasource: str, name: str) -> Meta[DataDict]: