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,96 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Catalog Control Plane API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 1.0
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
|
+
from typing import Optional, Set
|
|
23
|
+
from typing_extensions import Self
|
|
24
|
+
from pydantic_core import to_jsonable_python
|
|
25
|
+
|
|
26
|
+
class PubSubLookbackMarkerConfig(BaseModel):
|
|
27
|
+
"""
|
|
28
|
+
PubSubLookbackMarkerConfig
|
|
29
|
+
""" # noqa: E501
|
|
30
|
+
base_asset_id: Optional[StrictInt] = Field(default=None, alias="baseAssetId")
|
|
31
|
+
lookback_unit: StrictStr = Field(description="Allowed values at generation time: MINUTES, HOURS.", alias="lookbackUnit")
|
|
32
|
+
lookback_value: StrictInt = Field(alias="lookbackValue")
|
|
33
|
+
time_zone_id: StrictStr = Field(alias="timeZoneId")
|
|
34
|
+
type: StrictStr
|
|
35
|
+
__properties: ClassVar[List[str]] = ["baseAssetId", "lookbackUnit", "lookbackValue", "timeZoneId", "type"]
|
|
36
|
+
|
|
37
|
+
model_config = ConfigDict(
|
|
38
|
+
validate_by_name=True,
|
|
39
|
+
validate_by_alias=True,
|
|
40
|
+
validate_assignment=True,
|
|
41
|
+
protected_namespaces=(),
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def to_str(self) -> str:
|
|
46
|
+
"""Returns the string representation of the model using alias"""
|
|
47
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
48
|
+
|
|
49
|
+
def to_json(self) -> str:
|
|
50
|
+
"""Returns the JSON representation of the model using alias"""
|
|
51
|
+
return json.dumps(to_jsonable_python(self.to_dict()))
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
55
|
+
"""Create an instance of PubSubLookbackMarkerConfig from a JSON string"""
|
|
56
|
+
return cls.from_dict(json.loads(json_str))
|
|
57
|
+
|
|
58
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
59
|
+
"""Return the dictionary representation of the model using alias.
|
|
60
|
+
|
|
61
|
+
This has the following differences from calling pydantic's
|
|
62
|
+
`self.model_dump(by_alias=True)`:
|
|
63
|
+
|
|
64
|
+
* `None` is only added to the output dict for nullable fields that
|
|
65
|
+
were set at model initialization. Other fields with value `None`
|
|
66
|
+
are ignored.
|
|
67
|
+
"""
|
|
68
|
+
excluded_fields: Set[str] = set([
|
|
69
|
+
])
|
|
70
|
+
|
|
71
|
+
_dict = self.model_dump(
|
|
72
|
+
by_alias=True,
|
|
73
|
+
exclude=excluded_fields,
|
|
74
|
+
exclude_none=True,
|
|
75
|
+
)
|
|
76
|
+
return _dict
|
|
77
|
+
|
|
78
|
+
@classmethod
|
|
79
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
80
|
+
"""Create an instance of PubSubLookbackMarkerConfig from a dict"""
|
|
81
|
+
if obj is None:
|
|
82
|
+
return None
|
|
83
|
+
|
|
84
|
+
if not isinstance(obj, dict):
|
|
85
|
+
return cls.model_validate(obj)
|
|
86
|
+
|
|
87
|
+
_obj = cls.model_validate({
|
|
88
|
+
"baseAssetId": obj.get("baseAssetId"),
|
|
89
|
+
"lookbackUnit": obj.get("lookbackUnit"),
|
|
90
|
+
"lookbackValue": obj.get("lookbackValue"),
|
|
91
|
+
"timeZoneId": obj.get("timeZoneId"),
|
|
92
|
+
"type": obj.get("type")
|
|
93
|
+
})
|
|
94
|
+
return _obj
|
|
95
|
+
|
|
96
|
+
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Catalog Control Plane API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 1.0
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
|
+
from typing import Optional, Set
|
|
23
|
+
from typing_extensions import Self
|
|
24
|
+
from pydantic_core import to_jsonable_python
|
|
25
|
+
|
|
26
|
+
class PubSubTimestampMarkerConfig(BaseModel):
|
|
27
|
+
"""
|
|
28
|
+
PubSubTimestampMarkerConfig
|
|
29
|
+
""" # noqa: E501
|
|
30
|
+
base_asset_id: Optional[StrictInt] = Field(default=None, alias="baseAssetId")
|
|
31
|
+
format: StrictStr
|
|
32
|
+
from_timestamp: Optional[StrictStr] = Field(default=None, alias="fromTimestamp")
|
|
33
|
+
time_zone_id: StrictStr = Field(alias="timeZoneId")
|
|
34
|
+
to_timestamp: Optional[StrictStr] = Field(default=None, alias="toTimestamp")
|
|
35
|
+
type: StrictStr
|
|
36
|
+
__properties: ClassVar[List[str]] = ["baseAssetId", "format", "fromTimestamp", "timeZoneId", "toTimestamp", "type"]
|
|
37
|
+
|
|
38
|
+
model_config = ConfigDict(
|
|
39
|
+
validate_by_name=True,
|
|
40
|
+
validate_by_alias=True,
|
|
41
|
+
validate_assignment=True,
|
|
42
|
+
protected_namespaces=(),
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def to_str(self) -> str:
|
|
47
|
+
"""Returns the string representation of the model using alias"""
|
|
48
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
49
|
+
|
|
50
|
+
def to_json(self) -> str:
|
|
51
|
+
"""Returns the JSON representation of the model using alias"""
|
|
52
|
+
return json.dumps(to_jsonable_python(self.to_dict()))
|
|
53
|
+
|
|
54
|
+
@classmethod
|
|
55
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
56
|
+
"""Create an instance of PubSubTimestampMarkerConfig from a JSON string"""
|
|
57
|
+
return cls.from_dict(json.loads(json_str))
|
|
58
|
+
|
|
59
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
60
|
+
"""Return the dictionary representation of the model using alias.
|
|
61
|
+
|
|
62
|
+
This has the following differences from calling pydantic's
|
|
63
|
+
`self.model_dump(by_alias=True)`:
|
|
64
|
+
|
|
65
|
+
* `None` is only added to the output dict for nullable fields that
|
|
66
|
+
were set at model initialization. Other fields with value `None`
|
|
67
|
+
are ignored.
|
|
68
|
+
"""
|
|
69
|
+
excluded_fields: Set[str] = set([
|
|
70
|
+
])
|
|
71
|
+
|
|
72
|
+
_dict = self.model_dump(
|
|
73
|
+
by_alias=True,
|
|
74
|
+
exclude=excluded_fields,
|
|
75
|
+
exclude_none=True,
|
|
76
|
+
)
|
|
77
|
+
# set to None if from_timestamp (nullable) is None
|
|
78
|
+
# and model_fields_set contains the field
|
|
79
|
+
if self.from_timestamp is None and "from_timestamp" in self.model_fields_set:
|
|
80
|
+
_dict['fromTimestamp'] = None
|
|
81
|
+
|
|
82
|
+
# set to None if to_timestamp (nullable) is None
|
|
83
|
+
# and model_fields_set contains the field
|
|
84
|
+
if self.to_timestamp is None and "to_timestamp" in self.model_fields_set:
|
|
85
|
+
_dict['toTimestamp'] = None
|
|
86
|
+
|
|
87
|
+
return _dict
|
|
88
|
+
|
|
89
|
+
@classmethod
|
|
90
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
91
|
+
"""Create an instance of PubSubTimestampMarkerConfig from a dict"""
|
|
92
|
+
if obj is None:
|
|
93
|
+
return None
|
|
94
|
+
|
|
95
|
+
if not isinstance(obj, dict):
|
|
96
|
+
return cls.model_validate(obj)
|
|
97
|
+
|
|
98
|
+
_obj = cls.model_validate({
|
|
99
|
+
"baseAssetId": obj.get("baseAssetId"),
|
|
100
|
+
"format": obj.get("format"),
|
|
101
|
+
"fromTimestamp": obj.get("fromTimestamp"),
|
|
102
|
+
"timeZoneId": obj.get("timeZoneId"),
|
|
103
|
+
"toTimestamp": obj.get("toTimestamp"),
|
|
104
|
+
"type": obj.get("type")
|
|
105
|
+
})
|
|
106
|
+
return _obj
|
|
107
|
+
|
|
108
|
+
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Catalog Control Plane API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 1.0
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from datetime import datetime
|
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
|
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
23
|
+
from acceldata.models.api.catalog.backing_asset import BackingAsset
|
|
24
|
+
from acceldata.models.api.catalog.custom_sql_config import CustomSqlConfig
|
|
25
|
+
from acceldata.models.api.catalog.job_schedule import JobSchedule
|
|
26
|
+
from acceldata.models.api.catalog.label import Label
|
|
27
|
+
from acceldata.models.api.catalog.notification_payload import NotificationPayload
|
|
28
|
+
from acceldata.models.api.catalog.policy_group import PolicyGroup
|
|
29
|
+
from acceldata.models.api.catalog.policy_transform_udf import PolicyTransformUDF
|
|
30
|
+
from acceldata.models.api.catalog.rule_spark_sql_dynamic_filter_variable_mapping import RuleSparkSQLDynamicFilterVariableMapping
|
|
31
|
+
from acceldata.models.api.catalog.rule_tag import RuleTag
|
|
32
|
+
from acceldata.models.api.catalog.rule_threshold_configuration import RuleThresholdConfiguration
|
|
33
|
+
from acceldata.models.api.catalog.short_segment import ShortSegment
|
|
34
|
+
from acceldata.models.api.catalog.spark_resource_config import SparkResourceConfig
|
|
35
|
+
from typing import Optional, Set
|
|
36
|
+
from typing_extensions import Self
|
|
37
|
+
from pydantic_core import to_jsonable_python
|
|
38
|
+
|
|
39
|
+
class QualityRule(BaseModel):
|
|
40
|
+
"""
|
|
41
|
+
QualityRule
|
|
42
|
+
""" # noqa: E501
|
|
43
|
+
additional_persisted_columns: List[StrictStr] = Field(alias="additionalPersistedColumns")
|
|
44
|
+
analytics_pipeline_id: Optional[StrictInt] = Field(default=None, alias="analyticsPipelineId")
|
|
45
|
+
anomaly_strength_threshold: Optional[StrictStr] = Field(default=None, description="Allowed values at generation time: HIGH, MEDIUM, LOW.", alias="anomalyStrengthThreshold")
|
|
46
|
+
archival_reason: Optional[StrictStr] = Field(default=None, alias="archivalReason")
|
|
47
|
+
archived: StrictBool
|
|
48
|
+
auto_created: Optional[StrictBool] = Field(default=None, alias="autoCreated")
|
|
49
|
+
auto_retries: Optional[StrictInt] = Field(default=None, alias="autoRetries")
|
|
50
|
+
auto_retry_enabled: Optional[StrictBool] = Field(default=None, alias="autoRetryEnabled")
|
|
51
|
+
backing_assets: List[BackingAsset] = Field(alias="backingAssets")
|
|
52
|
+
continue_execution_on_failure: StrictBool = Field(alias="continueExecutionOnFailure")
|
|
53
|
+
created_at: datetime = Field(alias="createdAt")
|
|
54
|
+
created_by: Optional[StrictStr] = Field(default=None, alias="createdBy")
|
|
55
|
+
description: Optional[StrictStr] = None
|
|
56
|
+
enabled: StrictBool
|
|
57
|
+
engine_type: Optional[StrictStr] = Field(default=None, description="Allowed values at generation time: SPARK, JDBC_SQL, POD.", alias="engineType")
|
|
58
|
+
execution_sequence: StrictInt = Field(alias="executionSequence")
|
|
59
|
+
execution_timeout_in_minutes: Optional[StrictInt] = Field(default=None, alias="executionTimeoutInMinutes")
|
|
60
|
+
filter: Optional[StrictStr] = None
|
|
61
|
+
id: Optional[StrictInt] = None
|
|
62
|
+
include_in_quality_score: StrictBool = Field(alias="includeInQualityScore")
|
|
63
|
+
is_composite_rule: StrictBool = Field(alias="isCompositeRule")
|
|
64
|
+
is_protected_resource: StrictBool = Field(alias="isProtectedResource")
|
|
65
|
+
job_schedule: Optional[JobSchedule] = Field(default=None, alias="jobSchedule")
|
|
66
|
+
labels: Optional[List[Label]] = None
|
|
67
|
+
last_updated_by: Optional[StrictStr] = Field(default=None, alias="lastUpdatedBy")
|
|
68
|
+
left_custom_sql_config: Optional[CustomSqlConfig] = Field(default=None, alias="leftCustomSqlConfig")
|
|
69
|
+
name: StrictStr
|
|
70
|
+
notification_channels: Optional[NotificationPayload] = Field(default=None, alias="notificationChannels")
|
|
71
|
+
parent_id: Optional[StrictInt] = Field(default=None, alias="parentId")
|
|
72
|
+
policy_groups: Optional[List[PolicyGroup]] = Field(default=None, alias="policyGroups")
|
|
73
|
+
policy_score_strategy: StrictStr = Field(description="Allowed values at generation time: CUSTOM, WEIGHTAGE, RULES.", alias="policyScoreStrategy")
|
|
74
|
+
policy_transform_udfs: List[PolicyTransformUDF] = Field(alias="policyTransformUDFS")
|
|
75
|
+
resource_strategy_type: Optional[StrictStr] = Field(default=None, description="Allowed values at generation time: INVENTORY, CUSTOM.", alias="resourceStrategyType")
|
|
76
|
+
right_custom_sql_config: Optional[CustomSqlConfig] = Field(default=None, alias="rightCustomSqlConfig")
|
|
77
|
+
right_engine_type: Optional[StrictStr] = Field(default=None, description="Allowed values at generation time: SPARK, JDBC_SQL, POD.", alias="rightEngineType")
|
|
78
|
+
right_filter: Optional[StrictStr] = Field(default=None, alias="rightFilter")
|
|
79
|
+
right_spark_filter_selected_columns: Optional[List[StrictStr]] = Field(default=None, alias="rightSparkFilterSelectedColumns")
|
|
80
|
+
right_spark_sql_dynamic_filter_variable_mapping: Optional[RuleSparkSQLDynamicFilterVariableMapping] = Field(default=None, alias="rightSparkSQLDynamicFilterVariableMapping")
|
|
81
|
+
right_spark_sql_filter_type: StrictStr = Field(description="Allowed values at generation time: STATIC, DYNAMIC.", alias="rightSparkSQLFilterType")
|
|
82
|
+
rule_set_id: Optional[StrictInt] = Field(default=None, alias="ruleSetId")
|
|
83
|
+
schedule: Optional[StrictStr] = None
|
|
84
|
+
scheduled: StrictBool
|
|
85
|
+
segments: Optional[List[ShortSegment]] = None
|
|
86
|
+
selected_resource_inventory: Optional[StrictStr] = Field(default=None, alias="selectedResourceInventory")
|
|
87
|
+
spark_filter_selected_columns: Optional[List[StrictStr]] = Field(default=None, alias="sparkFilterSelectedColumns")
|
|
88
|
+
spark_resource_config: Optional[SparkResourceConfig] = Field(default=None, alias="sparkResourceConfig")
|
|
89
|
+
spark_sql_dynamic_filter_variable_mapping: Optional[RuleSparkSQLDynamicFilterVariableMapping] = Field(default=None, alias="sparkSQLDynamicFilterVariableMapping")
|
|
90
|
+
spark_sql_filter_type: StrictStr = Field(description="Allowed values at generation time: STATIC, DYNAMIC.", alias="sparkSQLFilterType")
|
|
91
|
+
sub_type: Optional[StrictStr] = Field(default=None, description="Allowed values at generation time: ASSET, SQL.", alias="subType")
|
|
92
|
+
tags: Optional[List[RuleTag]] = None
|
|
93
|
+
tenant_id: Optional[StrictStr] = Field(default=None, alias="tenantId")
|
|
94
|
+
threshold_level: RuleThresholdConfiguration = Field(alias="thresholdLevel")
|
|
95
|
+
time_zone: StrictStr = Field(alias="timeZone")
|
|
96
|
+
total_execution_timeout_in_minutes: Optional[StrictInt] = Field(default=None, alias="totalExecutionTimeoutInMinutes")
|
|
97
|
+
treat_zero_rows_as_success: StrictBool = Field(alias="treatZeroRowsAsSuccess")
|
|
98
|
+
type: StrictStr = Field(description="Allowed values at generation time: DATA_QUALITY, RECONCILIATION, EQUALITY, DATA_DRIFT, SCHEMA_DRIFT, DATA_CADENCE, PROFILE_ANOMALY, AUTO_ANOMALY.")
|
|
99
|
+
updated_at: datetime = Field(alias="updatedAt")
|
|
100
|
+
version: StrictInt
|
|
101
|
+
__properties: ClassVar[List[str]] = ["additionalPersistedColumns", "analyticsPipelineId", "anomalyStrengthThreshold", "archivalReason", "archived", "autoCreated", "autoRetries", "autoRetryEnabled", "backingAssets", "continueExecutionOnFailure", "createdAt", "createdBy", "description", "enabled", "engineType", "executionSequence", "executionTimeoutInMinutes", "filter", "id", "includeInQualityScore", "isCompositeRule", "isProtectedResource", "jobSchedule", "labels", "lastUpdatedBy", "leftCustomSqlConfig", "name", "notificationChannels", "parentId", "policyGroups", "policyScoreStrategy", "policyTransformUDFS", "resourceStrategyType", "rightCustomSqlConfig", "rightEngineType", "rightFilter", "rightSparkFilterSelectedColumns", "rightSparkSQLDynamicFilterVariableMapping", "rightSparkSQLFilterType", "ruleSetId", "schedule", "scheduled", "segments", "selectedResourceInventory", "sparkFilterSelectedColumns", "sparkResourceConfig", "sparkSQLDynamicFilterVariableMapping", "sparkSQLFilterType", "subType", "tags", "tenantId", "thresholdLevel", "timeZone", "totalExecutionTimeoutInMinutes", "treatZeroRowsAsSuccess", "type", "updatedAt", "version"]
|
|
102
|
+
|
|
103
|
+
model_config = ConfigDict(
|
|
104
|
+
validate_by_name=True,
|
|
105
|
+
validate_by_alias=True,
|
|
106
|
+
validate_assignment=True,
|
|
107
|
+
protected_namespaces=(),
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def to_str(self) -> str:
|
|
112
|
+
"""Returns the string representation of the model using alias"""
|
|
113
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
114
|
+
|
|
115
|
+
def to_json(self) -> str:
|
|
116
|
+
"""Returns the JSON representation of the model using alias"""
|
|
117
|
+
return json.dumps(to_jsonable_python(self.to_dict()))
|
|
118
|
+
|
|
119
|
+
@classmethod
|
|
120
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
121
|
+
"""Create an instance of QualityRule from a JSON string"""
|
|
122
|
+
return cls.from_dict(json.loads(json_str))
|
|
123
|
+
|
|
124
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
125
|
+
"""Return the dictionary representation of the model using alias.
|
|
126
|
+
|
|
127
|
+
This has the following differences from calling pydantic's
|
|
128
|
+
`self.model_dump(by_alias=True)`:
|
|
129
|
+
|
|
130
|
+
* `None` is only added to the output dict for nullable fields that
|
|
131
|
+
were set at model initialization. Other fields with value `None`
|
|
132
|
+
are ignored.
|
|
133
|
+
"""
|
|
134
|
+
excluded_fields: Set[str] = set([
|
|
135
|
+
])
|
|
136
|
+
|
|
137
|
+
_dict = self.model_dump(
|
|
138
|
+
by_alias=True,
|
|
139
|
+
exclude=excluded_fields,
|
|
140
|
+
exclude_none=True,
|
|
141
|
+
)
|
|
142
|
+
# override the default output from pydantic by calling `to_dict()` of each item in backing_assets (list)
|
|
143
|
+
_items = []
|
|
144
|
+
if self.backing_assets:
|
|
145
|
+
for _item_backing_assets in self.backing_assets:
|
|
146
|
+
if _item_backing_assets:
|
|
147
|
+
_items.append(_item_backing_assets.to_dict())
|
|
148
|
+
_dict['backingAssets'] = _items
|
|
149
|
+
# override the default output from pydantic by calling `to_dict()` of job_schedule
|
|
150
|
+
if self.job_schedule:
|
|
151
|
+
_dict['jobSchedule'] = self.job_schedule.to_dict()
|
|
152
|
+
# override the default output from pydantic by calling `to_dict()` of each item in labels (list)
|
|
153
|
+
_items = []
|
|
154
|
+
if self.labels:
|
|
155
|
+
for _item_labels in self.labels:
|
|
156
|
+
if _item_labels:
|
|
157
|
+
_items.append(_item_labels.to_dict())
|
|
158
|
+
_dict['labels'] = _items
|
|
159
|
+
# override the default output from pydantic by calling `to_dict()` of left_custom_sql_config
|
|
160
|
+
if self.left_custom_sql_config:
|
|
161
|
+
_dict['leftCustomSqlConfig'] = self.left_custom_sql_config.to_dict()
|
|
162
|
+
# override the default output from pydantic by calling `to_dict()` of notification_channels
|
|
163
|
+
if self.notification_channels:
|
|
164
|
+
_dict['notificationChannels'] = self.notification_channels.to_dict()
|
|
165
|
+
# override the default output from pydantic by calling `to_dict()` of each item in policy_groups (list)
|
|
166
|
+
_items = []
|
|
167
|
+
if self.policy_groups:
|
|
168
|
+
for _item_policy_groups in self.policy_groups:
|
|
169
|
+
if _item_policy_groups:
|
|
170
|
+
_items.append(_item_policy_groups.to_dict())
|
|
171
|
+
_dict['policyGroups'] = _items
|
|
172
|
+
# override the default output from pydantic by calling `to_dict()` of each item in policy_transform_udfs (list)
|
|
173
|
+
_items = []
|
|
174
|
+
if self.policy_transform_udfs:
|
|
175
|
+
for _item_policy_transform_udfs in self.policy_transform_udfs:
|
|
176
|
+
if _item_policy_transform_udfs:
|
|
177
|
+
_items.append(_item_policy_transform_udfs.to_dict())
|
|
178
|
+
_dict['policyTransformUDFS'] = _items
|
|
179
|
+
# override the default output from pydantic by calling `to_dict()` of right_custom_sql_config
|
|
180
|
+
if self.right_custom_sql_config:
|
|
181
|
+
_dict['rightCustomSqlConfig'] = self.right_custom_sql_config.to_dict()
|
|
182
|
+
# override the default output from pydantic by calling `to_dict()` of right_spark_sql_dynamic_filter_variable_mapping
|
|
183
|
+
if self.right_spark_sql_dynamic_filter_variable_mapping:
|
|
184
|
+
_dict['rightSparkSQLDynamicFilterVariableMapping'] = self.right_spark_sql_dynamic_filter_variable_mapping.to_dict()
|
|
185
|
+
# override the default output from pydantic by calling `to_dict()` of each item in segments (list)
|
|
186
|
+
_items = []
|
|
187
|
+
if self.segments:
|
|
188
|
+
for _item_segments in self.segments:
|
|
189
|
+
if _item_segments:
|
|
190
|
+
_items.append(_item_segments.to_dict())
|
|
191
|
+
_dict['segments'] = _items
|
|
192
|
+
# override the default output from pydantic by calling `to_dict()` of spark_resource_config
|
|
193
|
+
if self.spark_resource_config:
|
|
194
|
+
_dict['sparkResourceConfig'] = self.spark_resource_config.to_dict()
|
|
195
|
+
# override the default output from pydantic by calling `to_dict()` of spark_sql_dynamic_filter_variable_mapping
|
|
196
|
+
if self.spark_sql_dynamic_filter_variable_mapping:
|
|
197
|
+
_dict['sparkSQLDynamicFilterVariableMapping'] = self.spark_sql_dynamic_filter_variable_mapping.to_dict()
|
|
198
|
+
# override the default output from pydantic by calling `to_dict()` of each item in tags (list)
|
|
199
|
+
_items = []
|
|
200
|
+
if self.tags:
|
|
201
|
+
for _item_tags in self.tags:
|
|
202
|
+
if _item_tags:
|
|
203
|
+
_items.append(_item_tags.to_dict())
|
|
204
|
+
_dict['tags'] = _items
|
|
205
|
+
# override the default output from pydantic by calling `to_dict()` of threshold_level
|
|
206
|
+
if self.threshold_level:
|
|
207
|
+
_dict['thresholdLevel'] = self.threshold_level.to_dict()
|
|
208
|
+
# set to None if anomaly_strength_threshold (nullable) is None
|
|
209
|
+
# and model_fields_set contains the field
|
|
210
|
+
if self.anomaly_strength_threshold is None and "anomaly_strength_threshold" in self.model_fields_set:
|
|
211
|
+
_dict['anomalyStrengthThreshold'] = None
|
|
212
|
+
|
|
213
|
+
# set to None if archival_reason (nullable) is None
|
|
214
|
+
# and model_fields_set contains the field
|
|
215
|
+
if self.archival_reason is None and "archival_reason" in self.model_fields_set:
|
|
216
|
+
_dict['archivalReason'] = None
|
|
217
|
+
|
|
218
|
+
# set to None if created_by (nullable) is None
|
|
219
|
+
# and model_fields_set contains the field
|
|
220
|
+
if self.created_by is None and "created_by" in self.model_fields_set:
|
|
221
|
+
_dict['createdBy'] = None
|
|
222
|
+
|
|
223
|
+
# set to None if description (nullable) is None
|
|
224
|
+
# and model_fields_set contains the field
|
|
225
|
+
if self.description is None and "description" in self.model_fields_set:
|
|
226
|
+
_dict['description'] = None
|
|
227
|
+
|
|
228
|
+
# set to None if engine_type (nullable) is None
|
|
229
|
+
# and model_fields_set contains the field
|
|
230
|
+
if self.engine_type is None and "engine_type" in self.model_fields_set:
|
|
231
|
+
_dict['engineType'] = None
|
|
232
|
+
|
|
233
|
+
# set to None if filter (nullable) is None
|
|
234
|
+
# and model_fields_set contains the field
|
|
235
|
+
if self.filter is None and "filter" in self.model_fields_set:
|
|
236
|
+
_dict['filter'] = None
|
|
237
|
+
|
|
238
|
+
# set to None if labels (nullable) is None
|
|
239
|
+
# and model_fields_set contains the field
|
|
240
|
+
if self.labels is None and "labels" in self.model_fields_set:
|
|
241
|
+
_dict['labels'] = None
|
|
242
|
+
|
|
243
|
+
# set to None if last_updated_by (nullable) is None
|
|
244
|
+
# and model_fields_set contains the field
|
|
245
|
+
if self.last_updated_by is None and "last_updated_by" in self.model_fields_set:
|
|
246
|
+
_dict['lastUpdatedBy'] = None
|
|
247
|
+
|
|
248
|
+
# set to None if policy_groups (nullable) is None
|
|
249
|
+
# and model_fields_set contains the field
|
|
250
|
+
if self.policy_groups is None and "policy_groups" in self.model_fields_set:
|
|
251
|
+
_dict['policyGroups'] = None
|
|
252
|
+
|
|
253
|
+
# set to None if resource_strategy_type (nullable) is None
|
|
254
|
+
# and model_fields_set contains the field
|
|
255
|
+
if self.resource_strategy_type is None and "resource_strategy_type" in self.model_fields_set:
|
|
256
|
+
_dict['resourceStrategyType'] = None
|
|
257
|
+
|
|
258
|
+
# set to None if right_engine_type (nullable) is None
|
|
259
|
+
# and model_fields_set contains the field
|
|
260
|
+
if self.right_engine_type is None and "right_engine_type" in self.model_fields_set:
|
|
261
|
+
_dict['rightEngineType'] = None
|
|
262
|
+
|
|
263
|
+
# set to None if right_filter (nullable) is None
|
|
264
|
+
# and model_fields_set contains the field
|
|
265
|
+
if self.right_filter is None and "right_filter" in self.model_fields_set:
|
|
266
|
+
_dict['rightFilter'] = None
|
|
267
|
+
|
|
268
|
+
# set to None if right_spark_filter_selected_columns (nullable) is None
|
|
269
|
+
# and model_fields_set contains the field
|
|
270
|
+
if self.right_spark_filter_selected_columns is None and "right_spark_filter_selected_columns" in self.model_fields_set:
|
|
271
|
+
_dict['rightSparkFilterSelectedColumns'] = None
|
|
272
|
+
|
|
273
|
+
# set to None if schedule (nullable) is None
|
|
274
|
+
# and model_fields_set contains the field
|
|
275
|
+
if self.schedule is None and "schedule" in self.model_fields_set:
|
|
276
|
+
_dict['schedule'] = None
|
|
277
|
+
|
|
278
|
+
# set to None if segments (nullable) is None
|
|
279
|
+
# and model_fields_set contains the field
|
|
280
|
+
if self.segments is None and "segments" in self.model_fields_set:
|
|
281
|
+
_dict['segments'] = None
|
|
282
|
+
|
|
283
|
+
# set to None if selected_resource_inventory (nullable) is None
|
|
284
|
+
# and model_fields_set contains the field
|
|
285
|
+
if self.selected_resource_inventory is None and "selected_resource_inventory" in self.model_fields_set:
|
|
286
|
+
_dict['selectedResourceInventory'] = None
|
|
287
|
+
|
|
288
|
+
# set to None if spark_filter_selected_columns (nullable) is None
|
|
289
|
+
# and model_fields_set contains the field
|
|
290
|
+
if self.spark_filter_selected_columns is None and "spark_filter_selected_columns" in self.model_fields_set:
|
|
291
|
+
_dict['sparkFilterSelectedColumns'] = None
|
|
292
|
+
|
|
293
|
+
# set to None if sub_type (nullable) is None
|
|
294
|
+
# and model_fields_set contains the field
|
|
295
|
+
if self.sub_type is None and "sub_type" in self.model_fields_set:
|
|
296
|
+
_dict['subType'] = None
|
|
297
|
+
|
|
298
|
+
# set to None if tags (nullable) is None
|
|
299
|
+
# and model_fields_set contains the field
|
|
300
|
+
if self.tags is None and "tags" in self.model_fields_set:
|
|
301
|
+
_dict['tags'] = None
|
|
302
|
+
|
|
303
|
+
# set to None if tenant_id (nullable) is None
|
|
304
|
+
# and model_fields_set contains the field
|
|
305
|
+
if self.tenant_id is None and "tenant_id" in self.model_fields_set:
|
|
306
|
+
_dict['tenantId'] = None
|
|
307
|
+
|
|
308
|
+
return _dict
|
|
309
|
+
|
|
310
|
+
@classmethod
|
|
311
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
312
|
+
"""Create an instance of QualityRule from a dict"""
|
|
313
|
+
if obj is None:
|
|
314
|
+
return None
|
|
315
|
+
|
|
316
|
+
if not isinstance(obj, dict):
|
|
317
|
+
return cls.model_validate(obj)
|
|
318
|
+
|
|
319
|
+
_obj = cls.model_validate({
|
|
320
|
+
"additionalPersistedColumns": obj.get("additionalPersistedColumns"),
|
|
321
|
+
"analyticsPipelineId": obj.get("analyticsPipelineId"),
|
|
322
|
+
"anomalyStrengthThreshold": obj.get("anomalyStrengthThreshold"),
|
|
323
|
+
"archivalReason": obj.get("archivalReason"),
|
|
324
|
+
"archived": obj.get("archived"),
|
|
325
|
+
"autoCreated": obj.get("autoCreated"),
|
|
326
|
+
"autoRetries": obj.get("autoRetries"),
|
|
327
|
+
"autoRetryEnabled": obj.get("autoRetryEnabled"),
|
|
328
|
+
"backingAssets": [BackingAsset.from_dict(_item) for _item in obj["backingAssets"]] if obj.get("backingAssets") is not None else None,
|
|
329
|
+
"continueExecutionOnFailure": obj.get("continueExecutionOnFailure"),
|
|
330
|
+
"createdAt": obj.get("createdAt"),
|
|
331
|
+
"createdBy": obj.get("createdBy"),
|
|
332
|
+
"description": obj.get("description"),
|
|
333
|
+
"enabled": obj.get("enabled"),
|
|
334
|
+
"engineType": obj.get("engineType"),
|
|
335
|
+
"executionSequence": obj.get("executionSequence"),
|
|
336
|
+
"executionTimeoutInMinutes": obj.get("executionTimeoutInMinutes"),
|
|
337
|
+
"filter": obj.get("filter"),
|
|
338
|
+
"id": obj.get("id"),
|
|
339
|
+
"includeInQualityScore": obj.get("includeInQualityScore"),
|
|
340
|
+
"isCompositeRule": obj.get("isCompositeRule"),
|
|
341
|
+
"isProtectedResource": obj.get("isProtectedResource"),
|
|
342
|
+
"jobSchedule": JobSchedule.from_dict(obj["jobSchedule"]) if obj.get("jobSchedule") is not None else None,
|
|
343
|
+
"labels": [Label.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None,
|
|
344
|
+
"lastUpdatedBy": obj.get("lastUpdatedBy"),
|
|
345
|
+
"leftCustomSqlConfig": CustomSqlConfig.from_dict(obj["leftCustomSqlConfig"]) if obj.get("leftCustomSqlConfig") is not None else None,
|
|
346
|
+
"name": obj.get("name"),
|
|
347
|
+
"notificationChannels": NotificationPayload.from_dict(obj["notificationChannels"]) if obj.get("notificationChannels") is not None else None,
|
|
348
|
+
"parentId": obj.get("parentId"),
|
|
349
|
+
"policyGroups": [PolicyGroup.from_dict(_item) for _item in obj["policyGroups"]] if obj.get("policyGroups") is not None else None,
|
|
350
|
+
"policyScoreStrategy": obj.get("policyScoreStrategy"),
|
|
351
|
+
"policyTransformUDFS": [PolicyTransformUDF.from_dict(_item) for _item in obj["policyTransformUDFS"]] if obj.get("policyTransformUDFS") is not None else None,
|
|
352
|
+
"resourceStrategyType": obj.get("resourceStrategyType"),
|
|
353
|
+
"rightCustomSqlConfig": CustomSqlConfig.from_dict(obj["rightCustomSqlConfig"]) if obj.get("rightCustomSqlConfig") is not None else None,
|
|
354
|
+
"rightEngineType": obj.get("rightEngineType"),
|
|
355
|
+
"rightFilter": obj.get("rightFilter"),
|
|
356
|
+
"rightSparkFilterSelectedColumns": obj.get("rightSparkFilterSelectedColumns"),
|
|
357
|
+
"rightSparkSQLDynamicFilterVariableMapping": RuleSparkSQLDynamicFilterVariableMapping.from_dict(obj["rightSparkSQLDynamicFilterVariableMapping"]) if obj.get("rightSparkSQLDynamicFilterVariableMapping") is not None else None,
|
|
358
|
+
"rightSparkSQLFilterType": obj.get("rightSparkSQLFilterType"),
|
|
359
|
+
"ruleSetId": obj.get("ruleSetId"),
|
|
360
|
+
"schedule": obj.get("schedule"),
|
|
361
|
+
"scheduled": obj.get("scheduled"),
|
|
362
|
+
"segments": [ShortSegment.from_dict(_item) for _item in obj["segments"]] if obj.get("segments") is not None else None,
|
|
363
|
+
"selectedResourceInventory": obj.get("selectedResourceInventory"),
|
|
364
|
+
"sparkFilterSelectedColumns": obj.get("sparkFilterSelectedColumns"),
|
|
365
|
+
"sparkResourceConfig": SparkResourceConfig.from_dict(obj["sparkResourceConfig"]) if obj.get("sparkResourceConfig") is not None else None,
|
|
366
|
+
"sparkSQLDynamicFilterVariableMapping": RuleSparkSQLDynamicFilterVariableMapping.from_dict(obj["sparkSQLDynamicFilterVariableMapping"]) if obj.get("sparkSQLDynamicFilterVariableMapping") is not None else None,
|
|
367
|
+
"sparkSQLFilterType": obj.get("sparkSQLFilterType"),
|
|
368
|
+
"subType": obj.get("subType"),
|
|
369
|
+
"tags": [RuleTag.from_dict(_item) for _item in obj["tags"]] if obj.get("tags") is not None else None,
|
|
370
|
+
"tenantId": obj.get("tenantId"),
|
|
371
|
+
"thresholdLevel": RuleThresholdConfiguration.from_dict(obj["thresholdLevel"]) if obj.get("thresholdLevel") is not None else None,
|
|
372
|
+
"timeZone": obj.get("timeZone"),
|
|
373
|
+
"totalExecutionTimeoutInMinutes": obj.get("totalExecutionTimeoutInMinutes"),
|
|
374
|
+
"treatZeroRowsAsSuccess": obj.get("treatZeroRowsAsSuccess"),
|
|
375
|
+
"type": obj.get("type"),
|
|
376
|
+
"updatedAt": obj.get("updatedAt"),
|
|
377
|
+
"version": obj.get("version")
|
|
378
|
+
})
|
|
379
|
+
return _obj
|
|
380
|
+
|
|
381
|
+
|