acceldata-sdk-python 26.7.0__py3-none-any.whl

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 (303) hide show
  1. acceldata/__init__.py +7 -0
  2. acceldata/client/__init__.py +0 -0
  3. acceldata/client/adoc_client.py +666 -0
  4. acceldata/client/http_client.py +346 -0
  5. acceldata/client/transient_retry.py +142 -0
  6. acceldata/constants/__init__.py +1 -0
  7. acceldata/constants/constants.py +13 -0
  8. acceldata/exceptions/__init__.py +52 -0
  9. acceldata/exceptions/api_errors.py +85 -0
  10. acceldata/exceptions/exceptions.py +174 -0
  11. acceldata/exceptions/sdk_exceptions.py +98 -0
  12. acceldata/mappers/__init__.py +21 -0
  13. acceldata/mappers/catalog_executions.py +107 -0
  14. acceldata/models/__init__.py +0 -0
  15. acceldata/models/api/catalog/above_configs.py +99 -0
  16. acceldata/models/api/catalog/above_configs_success.py +138 -0
  17. acceldata/models/api/catalog/absolute_configs.py +197 -0
  18. acceldata/models/api/catalog/absolute_configs_fallback.py +101 -0
  19. acceldata/models/api/catalog/absolute_threshold_config.py +105 -0
  20. acceldata/models/api/catalog/analysis_job_context.py +102 -0
  21. acceldata/models/api/catalog/analytics_pipeline.py +385 -0
  22. acceldata/models/api/catalog/analytics_pipeline_endpoint.py +136 -0
  23. acceldata/models/api/catalog/anomaly_config.py +95 -0
  24. acceldata/models/api/catalog/anomaly_details.py +119 -0
  25. acceldata/models/api/catalog/anomaly_threshold_config.py +105 -0
  26. acceldata/models/api/catalog/artifact.py +92 -0
  27. acceldata/models/api/catalog/assembly.py +171 -0
  28. acceldata/models/api/catalog/asset.py +162 -0
  29. acceldata/models/api/catalog/asset_catalog_listing.py +159 -0
  30. acceldata/models/api/catalog/asset_catalog_listing_response.py +102 -0
  31. acceldata/models/api/catalog/asset_label_request.py +96 -0
  32. acceldata/models/api/catalog/asset_progress.py +96 -0
  33. acceldata/models/api/catalog/asset_progress_details.py +117 -0
  34. acceldata/models/api/catalog/asset_tag.py +124 -0
  35. acceldata/models/api/catalog/asset_tag_info.py +140 -0
  36. acceldata/models/api/catalog/asset_tag_request.py +95 -0
  37. acceldata/models/api/catalog/asset_tag_response.py +96 -0
  38. acceldata/models/api/catalog/asset_tags_response.py +102 -0
  39. acceldata/models/api/catalog/asset_type.py +96 -0
  40. acceldata/models/api/catalog/auto_anomaly_feature_analysis.py +160 -0
  41. acceldata/models/api/catalog/auto_anomaly_item_execution.py +133 -0
  42. acceldata/models/api/catalog/auto_anomaly_meta_data.py +162 -0
  43. acceldata/models/api/catalog/auto_anomaly_rule_execution.py +102 -0
  44. acceldata/models/api/catalog/auto_anomaly_summary.py +124 -0
  45. acceldata/models/api/catalog/backing_asset.py +126 -0
  46. acceldata/models/api/catalog/below_configs.py +99 -0
  47. acceldata/models/api/catalog/big_decimal.py +100 -0
  48. acceldata/models/api/catalog/big_integer.py +98 -0
  49. acceldata/models/api/catalog/bounds_date_time_marker_config.py +110 -0
  50. acceldata/models/api/catalog/bounds_file_event_marker_config.py +108 -0
  51. acceldata/models/api/catalog/bounds_id_marker_config.py +96 -0
  52. acceldata/models/api/catalog/catalog_asset_meta_data.py +128 -0
  53. acceldata/models/api/catalog/changes_by_config.py +105 -0
  54. acceldata/models/api/catalog/column_mapping.py +139 -0
  55. acceldata/models/api/catalog/column_metadata.py +90 -0
  56. acceldata/models/api/catalog/column_metric_with_anomaly_details.py +119 -0
  57. acceldata/models/api/catalog/column_variable.py +111 -0
  58. acceldata/models/api/catalog/composite_policy_execution.py +102 -0
  59. acceldata/models/api/catalog/composite_policy_item_execution.py +104 -0
  60. acceldata/models/api/catalog/connection.py +118 -0
  61. acceldata/models/api/catalog/connection_test_result.py +106 -0
  62. acceldata/models/api/catalog/connection_type.py +90 -0
  63. acceldata/models/api/catalog/connection_types_response.py +96 -0
  64. acceldata/models/api/catalog/crawler.py +88 -0
  65. acceldata/models/api/catalog/crawler_action_response.py +90 -0
  66. acceldata/models/api/catalog/crawler_execution.py +147 -0
  67. acceldata/models/api/catalog/crawler_execution_response.py +102 -0
  68. acceldata/models/api/catalog/crawler_status_response.py +90 -0
  69. acceldata/models/api/catalog/create_profile.py +194 -0
  70. acceldata/models/api/catalog/custom_sql_config.py +121 -0
  71. acceldata/models/api/catalog/data_bricks_spark_resource_config.py +104 -0
  72. acceldata/models/api/catalog/data_cadence_rule.py +236 -0
  73. acceldata/models/api/catalog/data_cadence_rule_details.py +125 -0
  74. acceldata/models/api/catalog/data_cadence_rule_execution.py +102 -0
  75. acceldata/models/api/catalog/data_cadence_rule_item.py +104 -0
  76. acceldata/models/api/catalog/data_cadence_rule_item_execution.py +158 -0
  77. acceldata/models/api/catalog/data_cadence_rule_response.py +98 -0
  78. acceldata/models/api/catalog/data_drift_execution.py +102 -0
  79. acceldata/models/api/catalog/data_drift_item_execution.py +121 -0
  80. acceldata/models/api/catalog/data_quality_engine.py +90 -0
  81. acceldata/models/api/catalog/data_quality_execution.py +106 -0
  82. acceldata/models/api/catalog/data_quality_rule.py +323 -0
  83. acceldata/models/api/catalog/data_quality_rule_details.py +186 -0
  84. acceldata/models/api/catalog/data_quality_rule_response.py +120 -0
  85. acceldata/models/api/catalog/data_quality_rules_response.py +102 -0
  86. acceldata/models/api/catalog/databricks_compute_config.py +113 -0
  87. acceldata/models/api/catalog/dataplane_engine.py +105 -0
  88. acceldata/models/api/catalog/dataplane_health_metrics.py +101 -0
  89. acceldata/models/api/catalog/dataplane_job.py +216 -0
  90. acceldata/models/api/catalog/dataplane_job_status.py +113 -0
  91. acceldata/models/api/catalog/dataplane_request.py +96 -0
  92. acceldata/models/api/catalog/dataproc_compute_config.py +106 -0
  93. acceldata/models/api/catalog/dataproc_spark_resource_config.py +104 -0
  94. acceldata/models/api/catalog/date_based_partition_marker_config.py +116 -0
  95. acceldata/models/api/catalog/date_partitioning_marker_config.py +113 -0
  96. acceldata/models/api/catalog/date_time_marker_config.py +109 -0
  97. acceldata/models/api/catalog/day_month_year_based_partition_marker_config.py +124 -0
  98. acceldata/models/api/catalog/decreased_by_config.py +105 -0
  99. acceldata/models/api/catalog/delete_artifact_response.py +88 -0
  100. acceldata/models/api/catalog/dq_rule_execution.py +248 -0
  101. acceldata/models/api/catalog/drift.py +121 -0
  102. acceldata/models/api/catalog/enable_rule_request.py +88 -0
  103. acceldata/models/api/catalog/engine.py +90 -0
  104. acceldata/models/api/catalog/execution_cancellation_response.py +92 -0
  105. acceldata/models/api/catalog/execution_response.py +144 -0
  106. acceldata/models/api/catalog/execution_result.py +126 -0
  107. acceldata/models/api/catalog/executions_response.py +102 -0
  108. acceldata/models/api/catalog/failed_asset_detail.py +90 -0
  109. acceldata/models/api/catalog/failed_summary.py +98 -0
  110. acceldata/models/api/catalog/file.py +94 -0
  111. acceldata/models/api/catalog/file_marker_config.py +99 -0
  112. acceldata/models/api/catalog/generic_config_fallback.py +101 -0
  113. acceldata/models/api/catalog/generic_execution.py +221 -0
  114. acceldata/models/api/catalog/generic_rule_execution.py +137 -0
  115. acceldata/models/api/catalog/global_storage_config_dto.py +172 -0
  116. acceldata/models/api/catalog/hosted_dp_deployment_response.py +98 -0
  117. acceldata/models/api/catalog/id_marker_config.py +94 -0
  118. acceldata/models/api/catalog/increased_by_config.py +105 -0
  119. acceldata/models/api/catalog/item.py +160 -0
  120. acceldata/models/api/catalog/item_execution.py +192 -0
  121. acceldata/models/api/catalog/item_segment.py +131 -0
  122. acceldata/models/api/catalog/job_schedule.py +118 -0
  123. acceldata/models/api/catalog/job_spec.py +96 -0
  124. acceldata/models/api/catalog/kubernetes_metrics.py +91 -0
  125. acceldata/models/api/catalog/label.py +97 -0
  126. acceldata/models/api/catalog/livy_compute_config.py +103 -0
  127. acceldata/models/api/catalog/livy_spark_resource_config.py +106 -0
  128. acceldata/models/api/catalog/look_back_config.py +90 -0
  129. acceldata/models/api/catalog/manual_tag_request.py +92 -0
  130. acceldata/models/api/catalog/mapping.py +97 -0
  131. acceldata/models/api/catalog/marker.py +88 -0
  132. acceldata/models/api/catalog/marker_config.py +349 -0
  133. acceldata/models/api/catalog/marker_config_fallback.py +101 -0
  134. acceldata/models/api/catalog/meta.py +92 -0
  135. acceldata/models/api/catalog/meta_data.py +92 -0
  136. acceldata/models/api/catalog/meta_data_item.py +94 -0
  137. acceldata/models/api/catalog/mini_profile_request.py +112 -0
  138. acceldata/models/api/catalog/notification_payload.py +114 -0
  139. acceldata/models/api/catalog/offset_based_marker_config.py +97 -0
  140. acceldata/models/api/catalog/operational_config.py +92 -0
  141. acceldata/models/api/catalog/pattern_configuration.py +90 -0
  142. acceldata/models/api/catalog/pipe_line_request.py +92 -0
  143. acceldata/models/api/catalog/pipeline_compute_config.py +110 -0
  144. acceldata/models/api/catalog/policy_execution_marker_config.py +94 -0
  145. acceldata/models/api/catalog/policy_execution_request.py +229 -0
  146. acceldata/models/api/catalog/policy_group.py +114 -0
  147. acceldata/models/api/catalog/policy_transform_udf.py +113 -0
  148. acceldata/models/api/catalog/process_metrics.py +91 -0
  149. acceldata/models/api/catalog/profile_anomaly_details_response.py +109 -0
  150. acceldata/models/api/catalog/profile_anomaly_item_execution.py +127 -0
  151. acceldata/models/api/catalog/profile_anomaly_rule_execution.py +102 -0
  152. acceldata/models/api/catalog/profile_anomaly_rule_item.py +109 -0
  153. acceldata/models/api/catalog/profile_cancellation_response.py +92 -0
  154. acceldata/models/api/catalog/profile_request.py +211 -0
  155. acceldata/models/api/catalog/profile_request_response.py +92 -0
  156. acceldata/models/api/catalog/property_template.py +178 -0
  157. acceldata/models/api/catalog/property_templates.py +123 -0
  158. acceldata/models/api/catalog/pub_sub_lookback_marker_config.py +96 -0
  159. acceldata/models/api/catalog/pub_sub_timestamp_marker_config.py +108 -0
  160. acceldata/models/api/catalog/quality_rule.py +381 -0
  161. acceldata/models/api/catalog/quality_rule_execution_metrics.py +114 -0
  162. acceldata/models/api/catalog/quality_rule_with_latest_execution.py +115 -0
  163. acceldata/models/api/catalog/range_configs.py +109 -0
  164. acceldata/models/api/catalog/reconciliation_item.py +102 -0
  165. acceldata/models/api/catalog/reconciliation_item_execution.py +157 -0
  166. acceldata/models/api/catalog/reconciliation_rule.py +339 -0
  167. acceldata/models/api/catalog/reconciliation_rule_details.py +225 -0
  168. acceldata/models/api/catalog/reconciliation_rule_execution.py +102 -0
  169. acceldata/models/api/catalog/reconciliation_rule_response.py +98 -0
  170. acceldata/models/api/catalog/reconciliation_rules_response.py +102 -0
  171. acceldata/models/api/catalog/relative_config.py +197 -0
  172. acceldata/models/api/catalog/relative_config_fallback.py +101 -0
  173. acceldata/models/api/catalog/relative_threshold_config.py +111 -0
  174. acceldata/models/api/catalog/root_cause_analysis.py +108 -0
  175. acceldata/models/api/catalog/rule_execution.py +327 -0
  176. acceldata/models/api/catalog/rule_execution_result.py +90 -0
  177. acceldata/models/api/catalog/rule_item_result.py +125 -0
  178. acceldata/models/api/catalog/rule_meta_data.py +94 -0
  179. acceldata/models/api/catalog/rule_spark_sql_dynamic_filter_variable_mapping.py +100 -0
  180. acceldata/models/api/catalog/rule_tag.py +101 -0
  181. acceldata/models/api/catalog/rule_threshold_configuration.py +236 -0
  182. acceldata/models/api/catalog/rule_threshold_configuration_fallback.py +101 -0
  183. acceldata/models/api/catalog/rules_with_latest_execution_response.py +102 -0
  184. acceldata/models/api/catalog/sample_data_api_response.py +122 -0
  185. acceldata/models/api/catalog/schema_drift_item_execution.py +131 -0
  186. acceldata/models/api/catalog/schema_drift_rule_execution.py +102 -0
  187. acceldata/models/api/catalog/secret_manager_configuration.py +90 -0
  188. acceldata/models/api/catalog/secret_manager_configuration_with_option.py +98 -0
  189. acceldata/models/api/catalog/security_config.py +90 -0
  190. acceldata/models/api/catalog/segment_metric_json.py +142 -0
  191. acceldata/models/api/catalog/segments_analysis.py +145 -0
  192. acceldata/models/api/catalog/short_segment.py +97 -0
  193. acceldata/models/api/catalog/simple_quality_rule_response.py +92 -0
  194. acceldata/models/api/catalog/snapshot_data.py +117 -0
  195. acceldata/models/api/catalog/source_model.py +90 -0
  196. acceldata/models/api/catalog/source_type.py +100 -0
  197. acceldata/models/api/catalog/source_types_response.py +102 -0
  198. acceldata/models/api/catalog/spark_job_status.py +113 -0
  199. acceldata/models/api/catalog/spark_resource_config.py +114 -0
  200. acceldata/models/api/catalog/standard_response_assembly.py +92 -0
  201. acceldata/models/api/catalog/standard_response_crawler_action_response.py +92 -0
  202. acceldata/models/api/catalog/standard_response_crawler_status_response.py +92 -0
  203. acceldata/models/api/catalog/standard_response_delete_artifact_response.py +92 -0
  204. acceldata/models/api/catalog/standard_response_list.py +96 -0
  205. acceldata/models/api/catalog/standard_response_map.py +88 -0
  206. acceldata/models/api/catalog/standard_response_meta_data.py +92 -0
  207. acceldata/models/api/catalog/standard_response_mini_profile_request.py +92 -0
  208. acceldata/models/api/catalog/standard_response_profile_request.py +92 -0
  209. acceldata/models/api/catalog/start_profiling_request.py +92 -0
  210. acceldata/models/api/catalog/tag_domain.py +116 -0
  211. acceldata/models/api/catalog/threshold_breach_details.py +101 -0
  212. acceldata/models/api/catalog/time_based_config.py +92 -0
  213. acceldata/models/api/catalog/time_based_threshold_config.py +105 -0
  214. acceldata/models/api/catalog/timestamp_based_marker_config.py +115 -0
  215. acceldata/models/api/catalog/udf_variable.py +97 -0
  216. acceldata/models/api/catalog/yunikorn_compute_config.py +133 -0
  217. acceldata/models/api/catalog/yunikorn_spark_resource_config.py +154 -0
  218. acceldata/models/api/pipeline/big_decimal.py +100 -0
  219. acceldata/models/api/pipeline/big_integer.py +98 -0
  220. acceldata/models/api/pipeline/child_span_response.py +96 -0
  221. acceldata/models/api/pipeline/create_span_event.py +109 -0
  222. acceldata/models/api/pipeline/edge.py +108 -0
  223. acceldata/models/api/pipeline/event_alert_object.py +95 -0
  224. acceldata/models/api/pipeline/generic_config_fallback.py +101 -0
  225. acceldata/models/api/pipeline/identifier.py +146 -0
  226. acceldata/models/api/pipeline/job_request.py +130 -0
  227. acceldata/models/api/pipeline/meta.py +107 -0
  228. acceldata/models/api/pipeline/meta_data.py +92 -0
  229. acceldata/models/api/pipeline/metric.py +103 -0
  230. acceldata/models/api/pipeline/node.py +201 -0
  231. acceldata/models/api/pipeline/node_response.py +92 -0
  232. acceldata/models/api/pipeline/notification_payload.py +114 -0
  233. acceldata/models/api/pipeline/pipeline.py +152 -0
  234. acceldata/models/api/pipeline/pipeline_baseline_metric.py +92 -0
  235. acceldata/models/api/pipeline/pipeline_details.py +118 -0
  236. acceldata/models/api/pipeline/pipeline_details_response.py +102 -0
  237. acceldata/models/api/pipeline/pipeline_input_request.py +92 -0
  238. acceldata/models/api/pipeline/pipeline_listing_info.py +118 -0
  239. acceldata/models/api/pipeline/pipeline_response.py +92 -0
  240. acceldata/models/api/pipeline/pipeline_run.py +136 -0
  241. acceldata/models/api/pipeline/pipeline_run_request.py +92 -0
  242. acceldata/models/api/pipeline/pipeline_runs_response.py +102 -0
  243. acceldata/models/api/pipeline/pipeline_summary.py +98 -0
  244. acceldata/models/api/pipeline/pipelines_listing_response.py +102 -0
  245. acceldata/models/api/pipeline/policy_summary.py +102 -0
  246. acceldata/models/api/pipeline/span.py +115 -0
  247. acceldata/models/api/pipeline/span_event.py +114 -0
  248. acceldata/models/api/pipeline/span_event_request.py +92 -0
  249. acceldata/models/api/pipeline/span_event_response.py +92 -0
  250. acceldata/models/api/pipeline/span_request.py +94 -0
  251. acceldata/models/api/pipeline/spans_response.py +96 -0
  252. acceldata/models/api/pipeline/tag.py +97 -0
  253. acceldata/models/sdk/__init__.py +0 -0
  254. acceldata/models/sdk/catalog/__init__.py +105 -0
  255. acceldata/models/sdk/catalog/asset_resource.py +112 -0
  256. acceldata/models/sdk/catalog/asset_source_type.py +59 -0
  257. acceldata/models/sdk/catalog/custom_asset_metadata.py +11 -0
  258. acceldata/models/sdk/catalog/datasource_resource.py +88 -0
  259. acceldata/models/sdk/catalog/executor.py +524 -0
  260. acceldata/models/sdk/catalog/policy_execution_request.py +114 -0
  261. acceldata/models/sdk/catalog/policy_execution_type.py +16 -0
  262. acceldata/models/sdk/catalog/policy_filter.py +94 -0
  263. acceldata/models/sdk/catalog/policy_rule_resources.py +388 -0
  264. acceldata/models/sdk/catalog/profile_request_resource.py +77 -0
  265. acceldata/models/sdk/catalog/profiling.py +82 -0
  266. acceldata/models/sdk/catalog/profiling_configuration_error.py +5 -0
  267. acceldata/models/sdk/pipeline/__init__.py +62 -0
  268. acceldata/models/sdk/pipeline/create_job_input.py +108 -0
  269. acceldata/models/sdk/pipeline/create_pipeline_input_request.py +72 -0
  270. acceldata/models/sdk/pipeline/events/__init__.py +5 -0
  271. acceldata/models/sdk/pipeline/events/generic_event.py +31 -0
  272. acceldata/models/sdk/pipeline/events/log_event.py +34 -0
  273. acceldata/models/sdk/pipeline/events/span_event.py +8 -0
  274. acceldata/models/sdk/pipeline/pipeline_resource.py +171 -0
  275. acceldata/models/sdk/pipeline/pipeline_run_input.py +84 -0
  276. acceldata/models/sdk/pipeline/pipeline_run_resource.py +208 -0
  277. acceldata/models/sdk/pipeline/pipeline_source_type.py +20 -0
  278. acceldata/models/sdk/pipeline/span_resource.py +327 -0
  279. acceldata/openapi_deserialization_patches.py +161 -0
  280. acceldata/openapi_repr_patches.py +62 -0
  281. acceldata/services/__init__.py +0 -0
  282. acceldata/services/api_timestamp.py +31 -0
  283. acceldata/services/asset_service.py +651 -0
  284. acceldata/services/datasource_service.py +120 -0
  285. acceldata/services/generic_service.py +132 -0
  286. acceldata/services/marker_config.py +232 -0
  287. acceldata/services/pipeline_big_decimal_api.py +102 -0
  288. acceldata/services/pipeline_response_parse.py +209 -0
  289. acceldata/services/pipeline_service.py +494 -0
  290. acceldata/services/rule_service.py +620 -0
  291. acceldata/urls/__init__.py +1 -0
  292. acceldata/urls/catalog_urls.py +137 -0
  293. acceldata/urls/pipeline_urls.py +55 -0
  294. acceldata/utils/__init__.py +6 -0
  295. acceldata/utils/datetime_utils.py +16 -0
  296. acceldata/utils/operation_ack.py +22 -0
  297. acceldata/utils/span_helpers.py +95 -0
  298. acceldata/utils/time_range_utils.py +90 -0
  299. acceldata_sdk_python-26.7.0.dist-info/METADATA +26 -0
  300. acceldata_sdk_python-26.7.0.dist-info/RECORD +303 -0
  301. acceldata_sdk_python-26.7.0.dist-info/WHEEL +5 -0
  302. acceldata_sdk_python-26.7.0.dist-info/licenses/LICENSE +22 -0
  303. acceldata_sdk_python-26.7.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,112 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional
5
+
6
+ from acceldata.models.api.catalog.asset import Asset
7
+ from acceldata.models.api.catalog.asset_label_request import AssetLabelRequest
8
+ from acceldata.models.api.catalog.asset_tag_info import AssetTagInfo
9
+ from acceldata.models.api.catalog.asset_tag_request import AssetTagRequest
10
+ from acceldata.models.api.catalog.catalog_asset_meta_data import CatalogAssetMetaData
11
+ from acceldata.models.api.catalog.label import Label
12
+ from acceldata.models.api.catalog.mini_profile_request import MiniProfileRequest
13
+ from acceldata.models.sdk.catalog.custom_asset_metadata import CustomAssetMetadata
14
+ from acceldata.models.sdk.catalog.profile_request_resource import ProfileRequestResource
15
+ from acceldata.client.transient_retry import RetryConfig
16
+ from acceldata.models.sdk.catalog.profiling import AssetProfilingParams
17
+
18
+ if TYPE_CHECKING:
19
+ from acceldata.services.asset_service import AssetService
20
+
21
+ logger = logging.getLogger("asset_resource")
22
+
23
+
24
+ class AssetResource:
25
+ """
26
+ SDK wrapper around the generated :class:`~acceldata.models.api.catalog.asset.Asset`
27
+ for catalog operations scoped to an asset; HTTP is delegated to
28
+ :class:`~acceldata.services.asset_service.AssetService`.
29
+ """
30
+
31
+ def __init__(self, asset_service: AssetService, model: Asset) -> None:
32
+ self._asset_service = asset_service
33
+ self._model = model
34
+
35
+ @property
36
+ def asset_service(self) -> AssetService:
37
+ return self._asset_service
38
+
39
+ @property
40
+ def asset(self) -> Asset:
41
+ return self._model
42
+
43
+ def to_dict(self) -> Dict[str, Any]:
44
+ return self._model.to_dict()
45
+
46
+ @property
47
+ def id(self) -> int:
48
+ if self._model.id is None:
49
+ raise ValueError("Asset id is required for this operation")
50
+ return int(self._model.id)
51
+
52
+ def __repr__(self) -> str:
53
+ return f"AssetResource(model={self._model!r})"
54
+
55
+ def get_metadata(self) -> CatalogAssetMetaData:
56
+ return self._asset_service.get_asset_metadata(self.id)
57
+
58
+ def add_custom_metadata(
59
+ self, custom_metadata: List[CustomAssetMetadata]
60
+ ) -> CatalogAssetMetaData:
61
+ """Merge key/value pairs and POST them as JSON object (string values)."""
62
+ merged: dict[str, str] = {}
63
+ for item in custom_metadata:
64
+ merged[item.key] = item.value
65
+ return self._asset_service.add_custom_metadata(self.id, merged)
66
+
67
+ def start_profile(
68
+ self,
69
+ profiling_params: Optional[AssetProfilingParams] = None,
70
+ *,
71
+ sync: bool = False,
72
+ transient_retry: RetryConfig | None = None,
73
+ ) -> ProfileRequestResource:
74
+ """Start profiling for this asset.
75
+
76
+ ``sync=False`` (default) triggers profiling asynchronously and returns
77
+ immediately. ``sync=True`` polls by request id until profiling reaches a
78
+ terminal status.
79
+ """
80
+ if profiling_params is None:
81
+ raise TypeError("profiling_params is required for start_profile")
82
+ logger.debug(
83
+ "Invoked start_profile on AssetResource: profiling_type=%s marker_config=%s",
84
+ profiling_params.profiling_type,
85
+ profiling_params.marker_config,
86
+ )
87
+ return self._asset_service.profile_asset(
88
+ self.id,
89
+ profiling_params,
90
+ sync=sync,
91
+ transient_retry=transient_retry,
92
+ )
93
+
94
+ def get_latest_profile_status(self) -> MiniProfileRequest:
95
+ """GET latest profile status for this asset (``GET .../assets/{id}/profile``)."""
96
+ return self._asset_service.get_latest_profile_status(self.id)
97
+
98
+ def sample_data(self, *, sync: bool = True):
99
+ return self._asset_service.sample_data(self.id, sync=sync)
100
+
101
+ def get_asset_tags(self) -> list[AssetTagInfo]:
102
+ return self._asset_service.get_asset_tags(self.id)
103
+
104
+ def add_asset_tag(self, payload: AssetTagRequest) -> AssetTagInfo:
105
+ return self._asset_service.add_asset_tag(self.id, payload)
106
+
107
+ def get_asset_labels(self) -> list[Label]:
108
+ return self._asset_service.get_asset_labels(self.id)
109
+
110
+ def add_asset_labels(self, payload: AssetLabelRequest) -> list[Label]:
111
+ return self._asset_service.add_asset_labels(self.id, payload)
112
+
@@ -0,0 +1,59 @@
1
+ from __future__ import annotations
2
+
3
+ from enum import Enum
4
+
5
+
6
+ class AssetSourceType(str, Enum):
7
+ """Catalog datasource / assembly source type (wire values match the catalog API)."""
8
+
9
+ BIGQUERY = "BIGQUERY"
10
+ AZURE_COSMOSDB_CASSANDRA = "AZURE_COSMOSDB_CASSANDRA"
11
+ CASSANDRA = "CASSANDRA"
12
+ REDSHIFT = "REDSHIFT"
13
+ SNOWFLAKE = "SNOWFLAKE"
14
+ TERADATA = "TERADATA"
15
+ HIVE = "HIVE"
16
+ HBASE = "HBASE"
17
+ ADF = "ADF"
18
+ AZURE_MSSQL = "AZURE_MSSQL"
19
+ AZURE_BLOB = "AZURE_BLOB"
20
+ AZURE_COSMOSDB_NOSQL = "AZURE_COSMOSDB_NOSQL"
21
+ AZURE_COSMOSDB_POSTGRESQL = "AZURE_COSMOSDB_POSTGRESQL"
22
+ AMAZON_RDS_POSTGRESQL = "AMAZON_RDS_POSTGRESQL"
23
+ AMAZON_AURORA_POSTGRESQL = "AMAZON_AURORA_POSTGRESQL"
24
+ AZURE_DATALAKE = "AZURE_DATALAKE"
25
+ AWS_GLUE = "AWS_GLUE"
26
+ AWS_S3 = "AWS_S3"
27
+ HDFS = "HDFS"
28
+ GCS = "GCS"
29
+ ICEBERG = "ICEBERG"
30
+ KAFKA = "KAFKA"
31
+ PUBSUB = "PUBSUB"
32
+ MYSQL = "MYSQL"
33
+ MARIADB = "MARIADB"
34
+ MEMSQL = "MEMSQL"
35
+ POSTGRESQL = "POSTGRESQL"
36
+ POWERBI = "POWERBI"
37
+ TABLEAU = "TABLEAU"
38
+ ORACLE = "ORACLE"
39
+ AWS_ATHENA = "AWS_ATHENA"
40
+ DATABRICKS = "DATABRICKS"
41
+ MONGO = "MONGO"
42
+ MODEL_BAG = "MODEL_BAG"
43
+ FEATURE_BAG = "FEATURE_BAG"
44
+ PRESTO = "PRESTO"
45
+ TRINO = "TRINO"
46
+ DB2 = "DB2"
47
+ CLICKHOUSE = "CLICKHOUSE"
48
+ SFTP = "SFTP"
49
+ SAP_HANA = "SAP_HANA"
50
+ AMAZON_RDS_MYSQL = "AMAZON_RDS_MYSQL"
51
+ AMAZON_AURORA_MYSQL = "AMAZON_AURORA_MYSQL"
52
+ AMAZON_RDS_MARIADB = "AMAZON_RDS_MARIADB"
53
+ AZURE_SYNAPSE_ANALYTICS = "AZURE_SYNAPSE_ANALYTICS"
54
+ VIRTUAL_DATASOURCE = "VIRTUAL_DATASOURCE"
55
+ AUTOSYS = "AUTOSYS"
56
+ DBT_CLOUD = "DBT_CLOUD"
57
+ FIVETRAN = "FIVETRAN"
58
+ SNAPLOGIC = "SNAPLOGIC"
59
+ SALESFORCE = "SALESFORCE"
@@ -0,0 +1,11 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+
5
+
6
+ @dataclass
7
+ class CustomAssetMetadata:
8
+ """Key/value pair for custom asset metadata."""
9
+
10
+ key: str
11
+ value: str
@@ -0,0 +1,88 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Any, Dict
4
+
5
+ from acceldata.client.transient_retry import RetryConfig
6
+ from acceldata.models.api.catalog.assembly import Assembly
7
+ from acceldata.models.api.catalog.crawler_action_response import CrawlerActionResponse
8
+ from acceldata.models.api.catalog.crawler_status_response import CrawlerStatusResponse
9
+ from acceldata.models.api.catalog.source_type import SourceType
10
+
11
+ if TYPE_CHECKING:
12
+ from acceldata.services.datasource_service import DataSourceService
13
+
14
+
15
+ class DatasourceResource:
16
+ """
17
+ SDK wrapper around catalog :class:`~acceldata.models.api.catalog.assembly.Assembly`
18
+ (a datasource / assembly) for crawler and reload operations.
19
+
20
+ Catalog GET helpers (:meth:`~acceldata.client.adoc_client.AdocClient.get_datasource`,
21
+ :meth:`~acceldata.client.adoc_client.AdocClient.get_datasources`, …) return this type.
22
+ You can also build a resource from a bare :class:`~acceldata.models.api.catalog.assembly.Assembly`
23
+ via :meth:`~acceldata.client.adoc_client.AdocClient.datasource_resource`.
24
+ Use :meth:`to_dict` for a wire view; the wrapped :class:`~acceldata.models.api.catalog.assembly.Assembly` is :attr:`assembly`.
25
+ """
26
+
27
+ def __init__(self, datasource_service: DataSourceService, model: Assembly) -> None:
28
+ self._datasource_service = datasource_service
29
+ self._model = model
30
+
31
+ @property
32
+ def datasource_service(self) -> DataSourceService:
33
+ return self._datasource_service
34
+
35
+ def to_dict(self) -> Dict[str, Any]:
36
+ return self._model.to_dict()
37
+
38
+ @property
39
+ def assembly(self) -> Assembly:
40
+ return self._model
41
+
42
+ @property
43
+ def id(self) -> int | None:
44
+ return self._model.id
45
+
46
+ @property
47
+ def name(self) -> str:
48
+ return self._model.name
49
+
50
+ @property
51
+ def source_type(self) -> SourceType:
52
+ return self._model.source_type
53
+
54
+ def __repr__(self) -> str:
55
+ return f"DatasourceResource(model={self._model!r})"
56
+
57
+ def _require_name(self) -> str:
58
+ n = self._model.name
59
+ if not n:
60
+ raise ValueError("Datasource name is required for this operation")
61
+ return str(n)
62
+
63
+ def refresh(self, *, properties: bool = False) -> DatasourceResource:
64
+ """Reload this assembly from the catalog (by current id or name)."""
65
+ ident: str | int = self._model.id if self._model.id is not None else self._require_name()
66
+ fetched = self._datasource_service.get_datasource(ident, properties=properties)
67
+ self._model = Assembly.model_validate(fetched.to_dict())
68
+ return self
69
+
70
+ def start_crawler(
71
+ self,
72
+ *,
73
+ transient_retry: RetryConfig | None = None,
74
+ ) -> CrawlerActionResponse:
75
+ return self._datasource_service.start_crawler(
76
+ self._require_name(),
77
+ transient_retry=transient_retry,
78
+ )
79
+
80
+ def get_crawler_status(
81
+ self,
82
+ *,
83
+ transient_retry: RetryConfig | None = None,
84
+ ) -> CrawlerStatusResponse:
85
+ return self._datasource_service.get_crawler_status(
86
+ self._require_name(),
87
+ transient_retry=transient_retry,
88
+ )