dataops-sdk 0.4.5__tar.gz → 0.5.0__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 (96) hide show
  1. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/PKG-INFO +1 -1
  2. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/__init__.py +1 -1
  3. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/data_table.py +3 -1
  4. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/data_table.py +1 -3
  5. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/ontology.py +8 -10
  6. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/workflow.py +12 -4
  7. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk.egg-info/PKG-INFO +1 -1
  8. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/README.md +0 -0
  9. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/pyproject.toml +0 -0
  10. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/setup.cfg +0 -0
  11. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/constants.py +0 -0
  12. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/exceptions.py +0 -0
  13. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/__init__.py +0 -0
  14. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/datasource_factory.py +0 -0
  15. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/__init__.py +0 -0
  16. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/config.py +0 -0
  17. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/constants.py +0 -0
  18. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/instance.py +0 -0
  19. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/nacos_exception.py +0 -0
  20. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/naming_param.py +0 -0
  21. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/naming_request.py +0 -0
  22. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/naming_response.py +0 -0
  23. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/preserved_metadata_key.py +0 -0
  24. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/schemas/nacos/service.py +0 -0
  25. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/__init__.py +0 -0
  26. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/common.py +0 -0
  27. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/dbConn_base.py +0 -0
  28. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/dbConn_sync.py +0 -0
  29. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/duckdb_manager.py +0 -0
  30. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/file_transfer_base.py +0 -0
  31. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/ftp_file_transfer.py +0 -0
  32. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/nacos.py +0 -0
  33. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/neo4j_sync.py +0 -0
  34. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/queue_base.py +0 -0
  35. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/queue_kafka.py +0 -0
  36. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/sftp_file_transfer.py +0 -0
  37. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/runner/utils/websocket_client.py +0 -0
  38. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/__init__.py +0 -0
  39. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/alarm.py +0 -0
  40. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/api.py +0 -0
  41. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/common.py +0 -0
  42. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/datasource.py +0 -0
  43. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/dict_.py +0 -0
  44. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/enums.py +0 -0
  45. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/group.py +0 -0
  46. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/hazard.py +0 -0
  47. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/meta.py +0 -0
  48. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/ontology.py +0 -0
  49. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/query.py +0 -0
  50. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/report.py +0 -0
  51. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/skill.py +0 -0
  52. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/table.py +0 -0
  53. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/tag.py +0 -0
  54. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/user.py +0 -0
  55. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/widget.py +0 -0
  56. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/schemas/workflow.py +0 -0
  57. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/__init__.py +0 -0
  58. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/alarm.py +0 -0
  59. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/api.py +0 -0
  60. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/auth.py +0 -0
  61. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/dataset.py +0 -0
  62. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/datasource.py +0 -0
  63. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/dict_.py +0 -0
  64. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/group.py +0 -0
  65. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/hazard.py +0 -0
  66. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/meta.py +0 -0
  67. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/metrics.py +0 -0
  68. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/ref.py +0 -0
  69. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/report.py +0 -0
  70. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/skill.py +0 -0
  71. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/table.py +0 -0
  72. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/tag.py +0 -0
  73. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/services/widget.py +0 -0
  74. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/session.py +0 -0
  75. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/__init__.py +0 -0
  76. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/builder.py +0 -0
  77. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/constants.py +0 -0
  78. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/markdown_parser.py +0 -0
  79. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/models.py +0 -0
  80. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/parse_utils.py +0 -0
  81. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/render_utils.py +0 -0
  82. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/renderers.py +0 -0
  83. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/tiptap/tool.py +0 -0
  84. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/utils/__init__.py +0 -0
  85. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/utils/common.py +0 -0
  86. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/utils/log.py +0 -0
  87. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk/utils/utils.py +0 -0
  88. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk.egg-info/SOURCES.txt +0 -0
  89. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk.egg-info/dependency_links.txt +0 -0
  90. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk.egg-info/requires.txt +0 -0
  91. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/src/dataops_sdk.egg-info/top_level.txt +0 -0
  92. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/tests/test_constants.py +0 -0
  93. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/tests/test_exceptions.py +0 -0
  94. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/tests/test_session.py +0 -0
  95. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/tests/test_utils.py +0 -0
  96. {dataops_sdk-0.4.5 → dataops_sdk-0.5.0}/tests/test_websocket_client.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataops-sdk
3
- Version: 0.4.5
3
+ Version: 0.5.0
4
4
  Summary: Python SDK for the DataOps platform.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -111,4 +111,4 @@ from .services import ( # noqa: F401
111
111
  )
112
112
  from .session import dataops_base_url_context, request_context
113
113
 
114
- __version__ = "0.4.5"
114
+ __version__ = "0.5.0"
@@ -469,7 +469,9 @@ class DataTableField(BaseModel):
469
469
  readonly: Annotated[bool | None, Field(description="是否只读")] = None
470
470
  join_key: Annotated[
471
471
  bool | None,
472
- Field(description="是否为附属表关联键", validation_alias=AliasChoices("joinKey", "join_key")),
472
+ Field(
473
+ description="是否为附属表关联键", validation_alias=AliasChoices("joinKey", "join_key")
474
+ ),
473
475
  ] = None
474
476
  maintain_permission: Annotated[
475
477
  str | None,
@@ -204,9 +204,7 @@ def service_get_data_table_data_ext_by_code(
204
204
  key = field.dbName or field.name
205
205
  return key.lower() if key else None
206
206
 
207
- field_name_map = {
208
- key: f.title for f in show_fields if (key := _field_db_key(f)) is not None
209
- }
207
+ field_name_map = {key: f.title for f in show_fields if (key := _field_db_key(f)) is not None}
210
208
  show_db_names = frozenset(field_name_map.keys())
211
209
 
212
210
  # 预处理字典字段映射(只执行一次过滤)
@@ -225,10 +225,7 @@ def strip_default_join(
225
225
  ) -> OntologyRelationJoin | None:
226
226
  """两侧均为 main 时返回 None(不落库)."""
227
227
  resolved = resolve_relation_join({"join": join} if join is not None else {})
228
- if (
229
- resolved["sourceTable"] == JOIN_TABLE_MAIN
230
- and resolved["targetTable"] == JOIN_TABLE_MAIN
231
- ):
228
+ if resolved["sourceTable"] == JOIN_TABLE_MAIN and resolved["targetTable"] == JOIN_TABLE_MAIN:
232
229
  return None
233
230
  return OntologyRelationJoin(
234
231
  sourceTable=resolved["sourceTable"],
@@ -348,8 +345,7 @@ def _normalize_relation(item: Any, index: int = 0) -> OntologyRelation:
348
345
  if not data.get("id"):
349
346
  data["id"] = _new_item_id(index)
350
347
  data["on"] = [
351
- _normalize_on_condition(c).model_dump(exclude_none=True)
352
- for c in (data.get("on") or [])
348
+ _normalize_on_condition(c).model_dump(exclude_none=True) for c in (data.get("on") or [])
353
349
  ]
354
350
  join = _normalize_join(data.get("join"))
355
351
  if join is None:
@@ -424,7 +420,10 @@ def validate_ontology_relations(relations: Sequence[OntologyRelation | Mapping[s
424
420
  # join 缺失不报错;存在时两侧须非空
425
421
  if relation.join is not None:
426
422
  resolved = resolve_relation_join(relation)
427
- if not (resolved["sourceTable"] or "").strip() or not (resolved["targetTable"] or "").strip():
423
+ if (
424
+ not (resolved["sourceTable"] or "").strip()
425
+ or not (resolved["targetTable"] or "").strip()
426
+ ):
428
427
  raise DataOpsError(f"关系「{code}」:JOIN 物理表不能为空")
429
428
  for cond in relation.on or []:
430
429
  if not cond.op:
@@ -438,9 +437,8 @@ def validate_ontology_relations(relations: Sequence[OntologyRelation | Mapping[s
438
437
  raise DataOpsError(f"关系「{code}」:ON 左操作数表侧不合法")
439
438
  if cond.left.type == ON_OPERAND_FIELD and not (cond.left.field or "").strip():
440
439
  raise DataOpsError(f"关系「{code}」:ON 左操作数字段不能为空")
441
- if (
442
- cond.left.type == ON_OPERAND_CONST
443
- and (cond.left.value == "" or cond.left.value is None)
440
+ if cond.left.type == ON_OPERAND_CONST and (
441
+ cond.left.value == "" or cond.left.value is None
444
442
  ):
445
443
  raise DataOpsError(f"关系「{code}」:ON 常量值不能为空")
446
444
  if (
@@ -109,11 +109,12 @@ def _post_workflow(url: str, body: dict) -> dict:
109
109
  raise AuthenticationError("认证失败,请先登录") from e
110
110
 
111
111
 
112
- def service_start_workflow(code: str, params: dict | None = None) -> dict:
112
+ def service_start_workflow(code: str, start_node_id: str, params: dict | None = None) -> dict:
113
113
  """同步启动工作流实例.
114
114
 
115
115
  Args:
116
116
  code: 工作流编码
117
+ start_node_id: 启动节点 ID(手动触发一般为 ``manually-trigger``)
117
118
  params: 启动参数(透传给流程节点的入参)
118
119
 
119
120
  Returns:
@@ -123,14 +124,18 @@ def service_start_workflow(code: str, params: dict | None = None) -> dict:
123
124
  DataOpsError: API 请求失败时
124
125
  AuthenticationError: 未认证或认证失败时
125
126
  """
126
- return _post_workflow("/workflow/start", {"code": code, "params": params or {}})
127
+ return _post_workflow(
128
+ f"/workflow/start?flowCode={code}&startNodeId={start_node_id}",
129
+ params or {},
130
+ )
127
131
 
128
132
 
129
- def service_start_workflow_async(code: str, params: dict | None = None) -> dict:
133
+ def service_start_workflow_async(code: str, start_node_id: str, params: dict | None = None) -> dict:
130
134
  """异步启动工作流实例.
131
135
 
132
136
  Args:
133
137
  code: 工作流编码
138
+ start_node_id: 启动节点 ID(手动触发一般为 ``manually-trigger``)
134
139
  params: 启动参数(透传给流程节点的入参)
135
140
 
136
141
  Returns:
@@ -140,4 +145,7 @@ def service_start_workflow_async(code: str, params: dict | None = None) -> dict:
140
145
  DataOpsError: API 请求失败时
141
146
  AuthenticationError: 未认证或认证失败时
142
147
  """
143
- return _post_workflow("/workflow/startAsync", {"code": code, "params": params or {}})
148
+ return _post_workflow(
149
+ f"/workflow/startAsync?flowCode={code}&startNodeId={start_node_id}",
150
+ params or {},
151
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataops-sdk
3
- Version: 0.4.5
3
+ Version: 0.5.0
4
4
  Summary: Python SDK for the DataOps platform.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
File without changes
File without changes
File without changes