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.
- acceldata/__init__.py +7 -0
- acceldata/client/__init__.py +0 -0
- acceldata/client/adoc_client.py +666 -0
- acceldata/client/http_client.py +346 -0
- acceldata/client/transient_retry.py +142 -0
- acceldata/constants/__init__.py +1 -0
- acceldata/constants/constants.py +13 -0
- acceldata/exceptions/__init__.py +52 -0
- acceldata/exceptions/api_errors.py +85 -0
- acceldata/exceptions/exceptions.py +174 -0
- acceldata/exceptions/sdk_exceptions.py +98 -0
- acceldata/mappers/__init__.py +21 -0
- acceldata/mappers/catalog_executions.py +107 -0
- acceldata/models/__init__.py +0 -0
- acceldata/models/api/catalog/above_configs.py +99 -0
- acceldata/models/api/catalog/above_configs_success.py +138 -0
- acceldata/models/api/catalog/absolute_configs.py +197 -0
- acceldata/models/api/catalog/absolute_configs_fallback.py +101 -0
- acceldata/models/api/catalog/absolute_threshold_config.py +105 -0
- acceldata/models/api/catalog/analysis_job_context.py +102 -0
- acceldata/models/api/catalog/analytics_pipeline.py +385 -0
- acceldata/models/api/catalog/analytics_pipeline_endpoint.py +136 -0
- acceldata/models/api/catalog/anomaly_config.py +95 -0
- acceldata/models/api/catalog/anomaly_details.py +119 -0
- acceldata/models/api/catalog/anomaly_threshold_config.py +105 -0
- acceldata/models/api/catalog/artifact.py +92 -0
- acceldata/models/api/catalog/assembly.py +171 -0
- acceldata/models/api/catalog/asset.py +162 -0
- acceldata/models/api/catalog/asset_catalog_listing.py +159 -0
- acceldata/models/api/catalog/asset_catalog_listing_response.py +102 -0
- acceldata/models/api/catalog/asset_label_request.py +96 -0
- acceldata/models/api/catalog/asset_progress.py +96 -0
- acceldata/models/api/catalog/asset_progress_details.py +117 -0
- acceldata/models/api/catalog/asset_tag.py +124 -0
- acceldata/models/api/catalog/asset_tag_info.py +140 -0
- acceldata/models/api/catalog/asset_tag_request.py +95 -0
- acceldata/models/api/catalog/asset_tag_response.py +96 -0
- acceldata/models/api/catalog/asset_tags_response.py +102 -0
- acceldata/models/api/catalog/asset_type.py +96 -0
- acceldata/models/api/catalog/auto_anomaly_feature_analysis.py +160 -0
- acceldata/models/api/catalog/auto_anomaly_item_execution.py +133 -0
- acceldata/models/api/catalog/auto_anomaly_meta_data.py +162 -0
- acceldata/models/api/catalog/auto_anomaly_rule_execution.py +102 -0
- acceldata/models/api/catalog/auto_anomaly_summary.py +124 -0
- acceldata/models/api/catalog/backing_asset.py +126 -0
- acceldata/models/api/catalog/below_configs.py +99 -0
- acceldata/models/api/catalog/big_decimal.py +100 -0
- acceldata/models/api/catalog/big_integer.py +98 -0
- acceldata/models/api/catalog/bounds_date_time_marker_config.py +110 -0
- acceldata/models/api/catalog/bounds_file_event_marker_config.py +108 -0
- acceldata/models/api/catalog/bounds_id_marker_config.py +96 -0
- acceldata/models/api/catalog/catalog_asset_meta_data.py +128 -0
- acceldata/models/api/catalog/changes_by_config.py +105 -0
- acceldata/models/api/catalog/column_mapping.py +139 -0
- acceldata/models/api/catalog/column_metadata.py +90 -0
- acceldata/models/api/catalog/column_metric_with_anomaly_details.py +119 -0
- acceldata/models/api/catalog/column_variable.py +111 -0
- acceldata/models/api/catalog/composite_policy_execution.py +102 -0
- acceldata/models/api/catalog/composite_policy_item_execution.py +104 -0
- acceldata/models/api/catalog/connection.py +118 -0
- acceldata/models/api/catalog/connection_test_result.py +106 -0
- acceldata/models/api/catalog/connection_type.py +90 -0
- acceldata/models/api/catalog/connection_types_response.py +96 -0
- acceldata/models/api/catalog/crawler.py +88 -0
- acceldata/models/api/catalog/crawler_action_response.py +90 -0
- acceldata/models/api/catalog/crawler_execution.py +147 -0
- acceldata/models/api/catalog/crawler_execution_response.py +102 -0
- acceldata/models/api/catalog/crawler_status_response.py +90 -0
- acceldata/models/api/catalog/create_profile.py +194 -0
- acceldata/models/api/catalog/custom_sql_config.py +121 -0
- acceldata/models/api/catalog/data_bricks_spark_resource_config.py +104 -0
- acceldata/models/api/catalog/data_cadence_rule.py +236 -0
- acceldata/models/api/catalog/data_cadence_rule_details.py +125 -0
- acceldata/models/api/catalog/data_cadence_rule_execution.py +102 -0
- acceldata/models/api/catalog/data_cadence_rule_item.py +104 -0
- acceldata/models/api/catalog/data_cadence_rule_item_execution.py +158 -0
- acceldata/models/api/catalog/data_cadence_rule_response.py +98 -0
- acceldata/models/api/catalog/data_drift_execution.py +102 -0
- acceldata/models/api/catalog/data_drift_item_execution.py +121 -0
- acceldata/models/api/catalog/data_quality_engine.py +90 -0
- acceldata/models/api/catalog/data_quality_execution.py +106 -0
- acceldata/models/api/catalog/data_quality_rule.py +323 -0
- acceldata/models/api/catalog/data_quality_rule_details.py +186 -0
- acceldata/models/api/catalog/data_quality_rule_response.py +120 -0
- acceldata/models/api/catalog/data_quality_rules_response.py +102 -0
- acceldata/models/api/catalog/databricks_compute_config.py +113 -0
- acceldata/models/api/catalog/dataplane_engine.py +105 -0
- acceldata/models/api/catalog/dataplane_health_metrics.py +101 -0
- acceldata/models/api/catalog/dataplane_job.py +216 -0
- acceldata/models/api/catalog/dataplane_job_status.py +113 -0
- acceldata/models/api/catalog/dataplane_request.py +96 -0
- acceldata/models/api/catalog/dataproc_compute_config.py +106 -0
- acceldata/models/api/catalog/dataproc_spark_resource_config.py +104 -0
- acceldata/models/api/catalog/date_based_partition_marker_config.py +116 -0
- acceldata/models/api/catalog/date_partitioning_marker_config.py +113 -0
- acceldata/models/api/catalog/date_time_marker_config.py +109 -0
- acceldata/models/api/catalog/day_month_year_based_partition_marker_config.py +124 -0
- acceldata/models/api/catalog/decreased_by_config.py +105 -0
- acceldata/models/api/catalog/delete_artifact_response.py +88 -0
- acceldata/models/api/catalog/dq_rule_execution.py +248 -0
- acceldata/models/api/catalog/drift.py +121 -0
- acceldata/models/api/catalog/enable_rule_request.py +88 -0
- acceldata/models/api/catalog/engine.py +90 -0
- acceldata/models/api/catalog/execution_cancellation_response.py +92 -0
- acceldata/models/api/catalog/execution_response.py +144 -0
- acceldata/models/api/catalog/execution_result.py +126 -0
- acceldata/models/api/catalog/executions_response.py +102 -0
- acceldata/models/api/catalog/failed_asset_detail.py +90 -0
- acceldata/models/api/catalog/failed_summary.py +98 -0
- acceldata/models/api/catalog/file.py +94 -0
- acceldata/models/api/catalog/file_marker_config.py +99 -0
- acceldata/models/api/catalog/generic_config_fallback.py +101 -0
- acceldata/models/api/catalog/generic_execution.py +221 -0
- acceldata/models/api/catalog/generic_rule_execution.py +137 -0
- acceldata/models/api/catalog/global_storage_config_dto.py +172 -0
- acceldata/models/api/catalog/hosted_dp_deployment_response.py +98 -0
- acceldata/models/api/catalog/id_marker_config.py +94 -0
- acceldata/models/api/catalog/increased_by_config.py +105 -0
- acceldata/models/api/catalog/item.py +160 -0
- acceldata/models/api/catalog/item_execution.py +192 -0
- acceldata/models/api/catalog/item_segment.py +131 -0
- acceldata/models/api/catalog/job_schedule.py +118 -0
- acceldata/models/api/catalog/job_spec.py +96 -0
- acceldata/models/api/catalog/kubernetes_metrics.py +91 -0
- acceldata/models/api/catalog/label.py +97 -0
- acceldata/models/api/catalog/livy_compute_config.py +103 -0
- acceldata/models/api/catalog/livy_spark_resource_config.py +106 -0
- acceldata/models/api/catalog/look_back_config.py +90 -0
- acceldata/models/api/catalog/manual_tag_request.py +92 -0
- acceldata/models/api/catalog/mapping.py +97 -0
- acceldata/models/api/catalog/marker.py +88 -0
- acceldata/models/api/catalog/marker_config.py +349 -0
- acceldata/models/api/catalog/marker_config_fallback.py +101 -0
- acceldata/models/api/catalog/meta.py +92 -0
- acceldata/models/api/catalog/meta_data.py +92 -0
- acceldata/models/api/catalog/meta_data_item.py +94 -0
- acceldata/models/api/catalog/mini_profile_request.py +112 -0
- acceldata/models/api/catalog/notification_payload.py +114 -0
- acceldata/models/api/catalog/offset_based_marker_config.py +97 -0
- acceldata/models/api/catalog/operational_config.py +92 -0
- acceldata/models/api/catalog/pattern_configuration.py +90 -0
- acceldata/models/api/catalog/pipe_line_request.py +92 -0
- acceldata/models/api/catalog/pipeline_compute_config.py +110 -0
- acceldata/models/api/catalog/policy_execution_marker_config.py +94 -0
- acceldata/models/api/catalog/policy_execution_request.py +229 -0
- acceldata/models/api/catalog/policy_group.py +114 -0
- acceldata/models/api/catalog/policy_transform_udf.py +113 -0
- acceldata/models/api/catalog/process_metrics.py +91 -0
- acceldata/models/api/catalog/profile_anomaly_details_response.py +109 -0
- acceldata/models/api/catalog/profile_anomaly_item_execution.py +127 -0
- acceldata/models/api/catalog/profile_anomaly_rule_execution.py +102 -0
- acceldata/models/api/catalog/profile_anomaly_rule_item.py +109 -0
- acceldata/models/api/catalog/profile_cancellation_response.py +92 -0
- acceldata/models/api/catalog/profile_request.py +211 -0
- acceldata/models/api/catalog/profile_request_response.py +92 -0
- acceldata/models/api/catalog/property_template.py +178 -0
- acceldata/models/api/catalog/property_templates.py +123 -0
- acceldata/models/api/catalog/pub_sub_lookback_marker_config.py +96 -0
- acceldata/models/api/catalog/pub_sub_timestamp_marker_config.py +108 -0
- acceldata/models/api/catalog/quality_rule.py +381 -0
- acceldata/models/api/catalog/quality_rule_execution_metrics.py +114 -0
- acceldata/models/api/catalog/quality_rule_with_latest_execution.py +115 -0
- acceldata/models/api/catalog/range_configs.py +109 -0
- acceldata/models/api/catalog/reconciliation_item.py +102 -0
- acceldata/models/api/catalog/reconciliation_item_execution.py +157 -0
- acceldata/models/api/catalog/reconciliation_rule.py +339 -0
- acceldata/models/api/catalog/reconciliation_rule_details.py +225 -0
- acceldata/models/api/catalog/reconciliation_rule_execution.py +102 -0
- acceldata/models/api/catalog/reconciliation_rule_response.py +98 -0
- acceldata/models/api/catalog/reconciliation_rules_response.py +102 -0
- acceldata/models/api/catalog/relative_config.py +197 -0
- acceldata/models/api/catalog/relative_config_fallback.py +101 -0
- acceldata/models/api/catalog/relative_threshold_config.py +111 -0
- acceldata/models/api/catalog/root_cause_analysis.py +108 -0
- acceldata/models/api/catalog/rule_execution.py +327 -0
- acceldata/models/api/catalog/rule_execution_result.py +90 -0
- acceldata/models/api/catalog/rule_item_result.py +125 -0
- acceldata/models/api/catalog/rule_meta_data.py +94 -0
- acceldata/models/api/catalog/rule_spark_sql_dynamic_filter_variable_mapping.py +100 -0
- acceldata/models/api/catalog/rule_tag.py +101 -0
- acceldata/models/api/catalog/rule_threshold_configuration.py +236 -0
- acceldata/models/api/catalog/rule_threshold_configuration_fallback.py +101 -0
- acceldata/models/api/catalog/rules_with_latest_execution_response.py +102 -0
- acceldata/models/api/catalog/sample_data_api_response.py +122 -0
- acceldata/models/api/catalog/schema_drift_item_execution.py +131 -0
- acceldata/models/api/catalog/schema_drift_rule_execution.py +102 -0
- acceldata/models/api/catalog/secret_manager_configuration.py +90 -0
- acceldata/models/api/catalog/secret_manager_configuration_with_option.py +98 -0
- acceldata/models/api/catalog/security_config.py +90 -0
- acceldata/models/api/catalog/segment_metric_json.py +142 -0
- acceldata/models/api/catalog/segments_analysis.py +145 -0
- acceldata/models/api/catalog/short_segment.py +97 -0
- acceldata/models/api/catalog/simple_quality_rule_response.py +92 -0
- acceldata/models/api/catalog/snapshot_data.py +117 -0
- acceldata/models/api/catalog/source_model.py +90 -0
- acceldata/models/api/catalog/source_type.py +100 -0
- acceldata/models/api/catalog/source_types_response.py +102 -0
- acceldata/models/api/catalog/spark_job_status.py +113 -0
- acceldata/models/api/catalog/spark_resource_config.py +114 -0
- acceldata/models/api/catalog/standard_response_assembly.py +92 -0
- acceldata/models/api/catalog/standard_response_crawler_action_response.py +92 -0
- acceldata/models/api/catalog/standard_response_crawler_status_response.py +92 -0
- acceldata/models/api/catalog/standard_response_delete_artifact_response.py +92 -0
- acceldata/models/api/catalog/standard_response_list.py +96 -0
- acceldata/models/api/catalog/standard_response_map.py +88 -0
- acceldata/models/api/catalog/standard_response_meta_data.py +92 -0
- acceldata/models/api/catalog/standard_response_mini_profile_request.py +92 -0
- acceldata/models/api/catalog/standard_response_profile_request.py +92 -0
- acceldata/models/api/catalog/start_profiling_request.py +92 -0
- acceldata/models/api/catalog/tag_domain.py +116 -0
- acceldata/models/api/catalog/threshold_breach_details.py +101 -0
- acceldata/models/api/catalog/time_based_config.py +92 -0
- acceldata/models/api/catalog/time_based_threshold_config.py +105 -0
- acceldata/models/api/catalog/timestamp_based_marker_config.py +115 -0
- acceldata/models/api/catalog/udf_variable.py +97 -0
- acceldata/models/api/catalog/yunikorn_compute_config.py +133 -0
- acceldata/models/api/catalog/yunikorn_spark_resource_config.py +154 -0
- acceldata/models/api/pipeline/big_decimal.py +100 -0
- acceldata/models/api/pipeline/big_integer.py +98 -0
- acceldata/models/api/pipeline/child_span_response.py +96 -0
- acceldata/models/api/pipeline/create_span_event.py +109 -0
- acceldata/models/api/pipeline/edge.py +108 -0
- acceldata/models/api/pipeline/event_alert_object.py +95 -0
- acceldata/models/api/pipeline/generic_config_fallback.py +101 -0
- acceldata/models/api/pipeline/identifier.py +146 -0
- acceldata/models/api/pipeline/job_request.py +130 -0
- acceldata/models/api/pipeline/meta.py +107 -0
- acceldata/models/api/pipeline/meta_data.py +92 -0
- acceldata/models/api/pipeline/metric.py +103 -0
- acceldata/models/api/pipeline/node.py +201 -0
- acceldata/models/api/pipeline/node_response.py +92 -0
- acceldata/models/api/pipeline/notification_payload.py +114 -0
- acceldata/models/api/pipeline/pipeline.py +152 -0
- acceldata/models/api/pipeline/pipeline_baseline_metric.py +92 -0
- acceldata/models/api/pipeline/pipeline_details.py +118 -0
- acceldata/models/api/pipeline/pipeline_details_response.py +102 -0
- acceldata/models/api/pipeline/pipeline_input_request.py +92 -0
- acceldata/models/api/pipeline/pipeline_listing_info.py +118 -0
- acceldata/models/api/pipeline/pipeline_response.py +92 -0
- acceldata/models/api/pipeline/pipeline_run.py +136 -0
- acceldata/models/api/pipeline/pipeline_run_request.py +92 -0
- acceldata/models/api/pipeline/pipeline_runs_response.py +102 -0
- acceldata/models/api/pipeline/pipeline_summary.py +98 -0
- acceldata/models/api/pipeline/pipelines_listing_response.py +102 -0
- acceldata/models/api/pipeline/policy_summary.py +102 -0
- acceldata/models/api/pipeline/span.py +115 -0
- acceldata/models/api/pipeline/span_event.py +114 -0
- acceldata/models/api/pipeline/span_event_request.py +92 -0
- acceldata/models/api/pipeline/span_event_response.py +92 -0
- acceldata/models/api/pipeline/span_request.py +94 -0
- acceldata/models/api/pipeline/spans_response.py +96 -0
- acceldata/models/api/pipeline/tag.py +97 -0
- acceldata/models/sdk/__init__.py +0 -0
- acceldata/models/sdk/catalog/__init__.py +105 -0
- acceldata/models/sdk/catalog/asset_resource.py +112 -0
- acceldata/models/sdk/catalog/asset_source_type.py +59 -0
- acceldata/models/sdk/catalog/custom_asset_metadata.py +11 -0
- acceldata/models/sdk/catalog/datasource_resource.py +88 -0
- acceldata/models/sdk/catalog/executor.py +524 -0
- acceldata/models/sdk/catalog/policy_execution_request.py +114 -0
- acceldata/models/sdk/catalog/policy_execution_type.py +16 -0
- acceldata/models/sdk/catalog/policy_filter.py +94 -0
- acceldata/models/sdk/catalog/policy_rule_resources.py +388 -0
- acceldata/models/sdk/catalog/profile_request_resource.py +77 -0
- acceldata/models/sdk/catalog/profiling.py +82 -0
- acceldata/models/sdk/catalog/profiling_configuration_error.py +5 -0
- acceldata/models/sdk/pipeline/__init__.py +62 -0
- acceldata/models/sdk/pipeline/create_job_input.py +108 -0
- acceldata/models/sdk/pipeline/create_pipeline_input_request.py +72 -0
- acceldata/models/sdk/pipeline/events/__init__.py +5 -0
- acceldata/models/sdk/pipeline/events/generic_event.py +31 -0
- acceldata/models/sdk/pipeline/events/log_event.py +34 -0
- acceldata/models/sdk/pipeline/events/span_event.py +8 -0
- acceldata/models/sdk/pipeline/pipeline_resource.py +171 -0
- acceldata/models/sdk/pipeline/pipeline_run_input.py +84 -0
- acceldata/models/sdk/pipeline/pipeline_run_resource.py +208 -0
- acceldata/models/sdk/pipeline/pipeline_source_type.py +20 -0
- acceldata/models/sdk/pipeline/span_resource.py +327 -0
- acceldata/openapi_deserialization_patches.py +161 -0
- acceldata/openapi_repr_patches.py +62 -0
- acceldata/services/__init__.py +0 -0
- acceldata/services/api_timestamp.py +31 -0
- acceldata/services/asset_service.py +651 -0
- acceldata/services/datasource_service.py +120 -0
- acceldata/services/generic_service.py +132 -0
- acceldata/services/marker_config.py +232 -0
- acceldata/services/pipeline_big_decimal_api.py +102 -0
- acceldata/services/pipeline_response_parse.py +209 -0
- acceldata/services/pipeline_service.py +494 -0
- acceldata/services/rule_service.py +620 -0
- acceldata/urls/__init__.py +1 -0
- acceldata/urls/catalog_urls.py +137 -0
- acceldata/urls/pipeline_urls.py +55 -0
- acceldata/utils/__init__.py +6 -0
- acceldata/utils/datetime_utils.py +16 -0
- acceldata/utils/operation_ack.py +22 -0
- acceldata/utils/span_helpers.py +95 -0
- acceldata/utils/time_range_utils.py +90 -0
- acceldata_sdk_python-26.7.0.dist-info/METADATA +26 -0
- acceldata_sdk_python-26.7.0.dist-info/RECORD +303 -0
- acceldata_sdk_python-26.7.0.dist-info/WHEEL +5 -0
- acceldata_sdk_python-26.7.0.dist-info/licenses/LICENSE +22 -0
- 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,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
|
+
)
|