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,236 @@
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.job_schedule import JobSchedule
25
+ from acceldata.models.api.catalog.notification_payload import NotificationPayload
26
+ from acceldata.models.api.catalog.policy_group import PolicyGroup
27
+ from acceldata.models.api.catalog.rule_tag import RuleTag
28
+ from acceldata.models.api.catalog.rule_threshold_configuration import RuleThresholdConfiguration
29
+ from acceldata.models.api.catalog.spark_resource_config import SparkResourceConfig
30
+ from typing import Optional, Set
31
+ from typing_extensions import Self
32
+ from pydantic_core import to_jsonable_python
33
+
34
+ class DataCadenceRule(BaseModel):
35
+ """
36
+ DataCadenceRule
37
+ """ # noqa: E501
38
+ anomaly_strength_threshold: Optional[StrictStr] = Field(default=None, description="Allowed values at generation time: HIGH, MEDIUM, LOW.", alias="anomalyStrengthThreshold")
39
+ archival_reason: Optional[StrictStr] = Field(default=None, alias="archivalReason")
40
+ archived: StrictBool
41
+ auto_created: Optional[StrictBool] = Field(default=None, alias="autoCreated")
42
+ auto_retry_enabled: Optional[StrictBool] = Field(default=None, alias="autoRetryEnabled")
43
+ backing_asset: BackingAsset = Field(alias="backingAsset")
44
+ created_at: datetime = Field(alias="createdAt")
45
+ created_by: Optional[StrictStr] = Field(default=None, alias="createdBy")
46
+ description: Optional[StrictStr] = None
47
+ enabled: StrictBool
48
+ id: Optional[StrictInt] = None
49
+ include_in_quality_score: StrictBool = Field(alias="includeInQualityScore")
50
+ job_schedule: Optional[JobSchedule] = Field(default=None, alias="jobSchedule")
51
+ last_updated_by: Optional[StrictStr] = Field(default=None, alias="lastUpdatedBy")
52
+ name: StrictStr
53
+ notification_channels: Optional[NotificationPayload] = Field(default=None, alias="notificationChannels")
54
+ policy_groups: Optional[List[PolicyGroup]] = Field(default=None, alias="policyGroups")
55
+ resource_strategy_type: Optional[StrictStr] = Field(default=None, description="Allowed values at generation time: INVENTORY, CUSTOM.", alias="resourceStrategyType")
56
+ schedule: Optional[StrictStr] = None
57
+ scheduled: StrictBool
58
+ selected_resource_inventory: Optional[StrictStr] = Field(default=None, alias="selectedResourceInventory")
59
+ spark_resource_config: Optional[SparkResourceConfig] = Field(default=None, alias="sparkResourceConfig")
60
+ tags: Optional[List[RuleTag]] = None
61
+ tenant_id: Optional[StrictStr] = Field(default=None, alias="tenantId")
62
+ threshold_level: RuleThresholdConfiguration = Field(alias="thresholdLevel")
63
+ time_zone: StrictStr = Field(alias="timeZone")
64
+ type: StrictStr = Field(description="Allowed values at generation time: DATA_QUALITY, RECONCILIATION, EQUALITY, DATA_DRIFT, SCHEMA_DRIFT, DATA_CADENCE, PROFILE_ANOMALY, AUTO_ANOMALY.")
65
+ updated_at: datetime = Field(alias="updatedAt")
66
+ version: StrictInt
67
+ __properties: ClassVar[List[str]] = ["anomalyStrengthThreshold", "archivalReason", "archived", "autoCreated", "autoRetryEnabled", "backingAsset", "createdAt", "createdBy", "description", "enabled", "id", "includeInQualityScore", "jobSchedule", "lastUpdatedBy", "name", "notificationChannels", "policyGroups", "resourceStrategyType", "schedule", "scheduled", "selectedResourceInventory", "sparkResourceConfig", "tags", "tenantId", "thresholdLevel", "timeZone", "type", "updatedAt", "version"]
68
+
69
+ model_config = ConfigDict(
70
+ validate_by_name=True,
71
+ validate_by_alias=True,
72
+ validate_assignment=True,
73
+ protected_namespaces=(),
74
+ )
75
+
76
+
77
+ def to_str(self) -> str:
78
+ """Returns the string representation of the model using alias"""
79
+ return pprint.pformat(self.model_dump(by_alias=True))
80
+
81
+ def to_json(self) -> str:
82
+ """Returns the JSON representation of the model using alias"""
83
+ return json.dumps(to_jsonable_python(self.to_dict()))
84
+
85
+ @classmethod
86
+ def from_json(cls, json_str: str) -> Optional[Self]:
87
+ """Create an instance of DataCadenceRule from a JSON string"""
88
+ return cls.from_dict(json.loads(json_str))
89
+
90
+ def to_dict(self) -> Dict[str, Any]:
91
+ """Return the dictionary representation of the model using alias.
92
+
93
+ This has the following differences from calling pydantic's
94
+ `self.model_dump(by_alias=True)`:
95
+
96
+ * `None` is only added to the output dict for nullable fields that
97
+ were set at model initialization. Other fields with value `None`
98
+ are ignored.
99
+ """
100
+ excluded_fields: Set[str] = set([
101
+ ])
102
+
103
+ _dict = self.model_dump(
104
+ by_alias=True,
105
+ exclude=excluded_fields,
106
+ exclude_none=True,
107
+ )
108
+ # override the default output from pydantic by calling `to_dict()` of backing_asset
109
+ if self.backing_asset:
110
+ _dict['backingAsset'] = self.backing_asset.to_dict()
111
+ # override the default output from pydantic by calling `to_dict()` of job_schedule
112
+ if self.job_schedule:
113
+ _dict['jobSchedule'] = self.job_schedule.to_dict()
114
+ # override the default output from pydantic by calling `to_dict()` of notification_channels
115
+ if self.notification_channels:
116
+ _dict['notificationChannels'] = self.notification_channels.to_dict()
117
+ # override the default output from pydantic by calling `to_dict()` of each item in policy_groups (list)
118
+ _items = []
119
+ if self.policy_groups:
120
+ for _item_policy_groups in self.policy_groups:
121
+ if _item_policy_groups:
122
+ _items.append(_item_policy_groups.to_dict())
123
+ _dict['policyGroups'] = _items
124
+ # override the default output from pydantic by calling `to_dict()` of spark_resource_config
125
+ if self.spark_resource_config:
126
+ _dict['sparkResourceConfig'] = self.spark_resource_config.to_dict()
127
+ # override the default output from pydantic by calling `to_dict()` of each item in tags (list)
128
+ _items = []
129
+ if self.tags:
130
+ for _item_tags in self.tags:
131
+ if _item_tags:
132
+ _items.append(_item_tags.to_dict())
133
+ _dict['tags'] = _items
134
+ # override the default output from pydantic by calling `to_dict()` of threshold_level
135
+ if self.threshold_level:
136
+ _dict['thresholdLevel'] = self.threshold_level.to_dict()
137
+ # set to None if anomaly_strength_threshold (nullable) is None
138
+ # and model_fields_set contains the field
139
+ if self.anomaly_strength_threshold is None and "anomaly_strength_threshold" in self.model_fields_set:
140
+ _dict['anomalyStrengthThreshold'] = None
141
+
142
+ # set to None if archival_reason (nullable) is None
143
+ # and model_fields_set contains the field
144
+ if self.archival_reason is None and "archival_reason" in self.model_fields_set:
145
+ _dict['archivalReason'] = None
146
+
147
+ # set to None if created_by (nullable) is None
148
+ # and model_fields_set contains the field
149
+ if self.created_by is None and "created_by" in self.model_fields_set:
150
+ _dict['createdBy'] = None
151
+
152
+ # set to None if description (nullable) is None
153
+ # and model_fields_set contains the field
154
+ if self.description is None and "description" in self.model_fields_set:
155
+ _dict['description'] = None
156
+
157
+ # set to None if last_updated_by (nullable) is None
158
+ # and model_fields_set contains the field
159
+ if self.last_updated_by is None and "last_updated_by" in self.model_fields_set:
160
+ _dict['lastUpdatedBy'] = None
161
+
162
+ # set to None if policy_groups (nullable) is None
163
+ # and model_fields_set contains the field
164
+ if self.policy_groups is None and "policy_groups" in self.model_fields_set:
165
+ _dict['policyGroups'] = None
166
+
167
+ # set to None if resource_strategy_type (nullable) is None
168
+ # and model_fields_set contains the field
169
+ if self.resource_strategy_type is None and "resource_strategy_type" in self.model_fields_set:
170
+ _dict['resourceStrategyType'] = None
171
+
172
+ # set to None if schedule (nullable) is None
173
+ # and model_fields_set contains the field
174
+ if self.schedule is None and "schedule" in self.model_fields_set:
175
+ _dict['schedule'] = None
176
+
177
+ # set to None if selected_resource_inventory (nullable) is None
178
+ # and model_fields_set contains the field
179
+ if self.selected_resource_inventory is None and "selected_resource_inventory" in self.model_fields_set:
180
+ _dict['selectedResourceInventory'] = None
181
+
182
+ # set to None if tags (nullable) is None
183
+ # and model_fields_set contains the field
184
+ if self.tags is None and "tags" in self.model_fields_set:
185
+ _dict['tags'] = None
186
+
187
+ # set to None if tenant_id (nullable) is None
188
+ # and model_fields_set contains the field
189
+ if self.tenant_id is None and "tenant_id" in self.model_fields_set:
190
+ _dict['tenantId'] = None
191
+
192
+ return _dict
193
+
194
+ @classmethod
195
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
196
+ """Create an instance of DataCadenceRule from a dict"""
197
+ if obj is None:
198
+ return None
199
+
200
+ if not isinstance(obj, dict):
201
+ return cls.model_validate(obj)
202
+
203
+ _obj = cls.model_validate({
204
+ "anomalyStrengthThreshold": obj.get("anomalyStrengthThreshold"),
205
+ "archivalReason": obj.get("archivalReason"),
206
+ "archived": obj.get("archived"),
207
+ "autoCreated": obj.get("autoCreated"),
208
+ "autoRetryEnabled": obj.get("autoRetryEnabled"),
209
+ "backingAsset": BackingAsset.from_dict(obj["backingAsset"]) if obj.get("backingAsset") is not None else None,
210
+ "createdAt": obj.get("createdAt"),
211
+ "createdBy": obj.get("createdBy"),
212
+ "description": obj.get("description"),
213
+ "enabled": obj.get("enabled"),
214
+ "id": obj.get("id"),
215
+ "includeInQualityScore": obj.get("includeInQualityScore"),
216
+ "jobSchedule": JobSchedule.from_dict(obj["jobSchedule"]) if obj.get("jobSchedule") is not None else None,
217
+ "lastUpdatedBy": obj.get("lastUpdatedBy"),
218
+ "name": obj.get("name"),
219
+ "notificationChannels": NotificationPayload.from_dict(obj["notificationChannels"]) if obj.get("notificationChannels") is not None else None,
220
+ "policyGroups": [PolicyGroup.from_dict(_item) for _item in obj["policyGroups"]] if obj.get("policyGroups") is not None else None,
221
+ "resourceStrategyType": obj.get("resourceStrategyType"),
222
+ "schedule": obj.get("schedule"),
223
+ "scheduled": obj.get("scheduled"),
224
+ "selectedResourceInventory": obj.get("selectedResourceInventory"),
225
+ "sparkResourceConfig": SparkResourceConfig.from_dict(obj["sparkResourceConfig"]) if obj.get("sparkResourceConfig") is not None else None,
226
+ "tags": [RuleTag.from_dict(_item) for _item in obj["tags"]] if obj.get("tags") is not None else None,
227
+ "tenantId": obj.get("tenantId"),
228
+ "thresholdLevel": RuleThresholdConfiguration.from_dict(obj["thresholdLevel"]) if obj.get("thresholdLevel") is not None else None,
229
+ "timeZone": obj.get("timeZone"),
230
+ "type": obj.get("type"),
231
+ "updatedAt": obj.get("updatedAt"),
232
+ "version": obj.get("version")
233
+ })
234
+ return _obj
235
+
236
+
@@ -0,0 +1,125 @@
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, StrictBool, StrictInt
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from acceldata.models.api.catalog.data_cadence_rule_item import DataCadenceRuleItem
23
+ from acceldata.models.api.catalog.short_segment import ShortSegment
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+ from pydantic_core import to_jsonable_python
27
+
28
+ class DataCadenceRuleDetails(BaseModel):
29
+ """
30
+ DataCadenceRuleDetails
31
+ """ # noqa: E501
32
+ backing_asset_id: StrictInt = Field(alias="backingAssetId")
33
+ continue_execution_on_failure: StrictBool = Field(alias="continueExecutionOnFailure")
34
+ id: Optional[StrictInt] = None
35
+ is_composite_rule: StrictBool = Field(alias="isCompositeRule")
36
+ is_segmented: StrictBool = Field(alias="isSegmented")
37
+ items: List[DataCadenceRuleItem]
38
+ rule_id: StrictInt = Field(alias="ruleId")
39
+ segments: Optional[List[ShortSegment]] = None
40
+ version: StrictInt
41
+ __properties: ClassVar[List[str]] = ["backingAssetId", "continueExecutionOnFailure", "id", "isCompositeRule", "isSegmented", "items", "ruleId", "segments", "version"]
42
+
43
+ model_config = ConfigDict(
44
+ validate_by_name=True,
45
+ validate_by_alias=True,
46
+ validate_assignment=True,
47
+ protected_namespaces=(),
48
+ )
49
+
50
+
51
+ def to_str(self) -> str:
52
+ """Returns the string representation of the model using alias"""
53
+ return pprint.pformat(self.model_dump(by_alias=True))
54
+
55
+ def to_json(self) -> str:
56
+ """Returns the JSON representation of the model using alias"""
57
+ return json.dumps(to_jsonable_python(self.to_dict()))
58
+
59
+ @classmethod
60
+ def from_json(cls, json_str: str) -> Optional[Self]:
61
+ """Create an instance of DataCadenceRuleDetails from a JSON string"""
62
+ return cls.from_dict(json.loads(json_str))
63
+
64
+ def to_dict(self) -> Dict[str, Any]:
65
+ """Return the dictionary representation of the model using alias.
66
+
67
+ This has the following differences from calling pydantic's
68
+ `self.model_dump(by_alias=True)`:
69
+
70
+ * `None` is only added to the output dict for nullable fields that
71
+ were set at model initialization. Other fields with value `None`
72
+ are ignored.
73
+ """
74
+ excluded_fields: Set[str] = set([
75
+ ])
76
+
77
+ _dict = self.model_dump(
78
+ by_alias=True,
79
+ exclude=excluded_fields,
80
+ exclude_none=True,
81
+ )
82
+ # override the default output from pydantic by calling `to_dict()` of each item in items (list)
83
+ _items = []
84
+ if self.items:
85
+ for _item_items in self.items:
86
+ if _item_items:
87
+ _items.append(_item_items.to_dict())
88
+ _dict['items'] = _items
89
+ # override the default output from pydantic by calling `to_dict()` of each item in segments (list)
90
+ _items = []
91
+ if self.segments:
92
+ for _item_segments in self.segments:
93
+ if _item_segments:
94
+ _items.append(_item_segments.to_dict())
95
+ _dict['segments'] = _items
96
+ # set to None if segments (nullable) is None
97
+ # and model_fields_set contains the field
98
+ if self.segments is None and "segments" in self.model_fields_set:
99
+ _dict['segments'] = None
100
+
101
+ return _dict
102
+
103
+ @classmethod
104
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
105
+ """Create an instance of DataCadenceRuleDetails from a dict"""
106
+ if obj is None:
107
+ return None
108
+
109
+ if not isinstance(obj, dict):
110
+ return cls.model_validate(obj)
111
+
112
+ _obj = cls.model_validate({
113
+ "backingAssetId": obj.get("backingAssetId"),
114
+ "continueExecutionOnFailure": obj.get("continueExecutionOnFailure"),
115
+ "id": obj.get("id"),
116
+ "isCompositeRule": obj.get("isCompositeRule"),
117
+ "isSegmented": obj.get("isSegmented"),
118
+ "items": [DataCadenceRuleItem.from_dict(_item) for _item in obj["items"]] if obj.get("items") is not None else None,
119
+ "ruleId": obj.get("ruleId"),
120
+ "segments": [ShortSegment.from_dict(_item) for _item in obj["segments"]] if obj.get("segments") is not None else None,
121
+ "version": obj.get("version")
122
+ })
123
+ return _obj
124
+
125
+
@@ -0,0 +1,102 @@
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
21
+ from typing import Any, ClassVar, Dict, List
22
+ from acceldata.models.api.catalog.data_cadence_rule_item_execution import DataCadenceRuleItemExecution
23
+ from acceldata.models.api.catalog.rule_execution import RuleExecution
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+ from pydantic_core import to_jsonable_python
27
+
28
+ class DataCadenceRuleExecution(BaseModel):
29
+ """
30
+ DataCadenceRuleExecution
31
+ """ # noqa: E501
32
+ execution: RuleExecution
33
+ items: List[DataCadenceRuleItemExecution]
34
+ __properties: ClassVar[List[str]] = ["execution", "items"]
35
+
36
+ model_config = ConfigDict(
37
+ validate_by_name=True,
38
+ validate_by_alias=True,
39
+ validate_assignment=True,
40
+ protected_namespaces=(),
41
+ )
42
+
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.model_dump(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ return json.dumps(to_jsonable_python(self.to_dict()))
51
+
52
+ @classmethod
53
+ def from_json(cls, json_str: str) -> Optional[Self]:
54
+ """Create an instance of DataCadenceRuleExecution from a JSON string"""
55
+ return cls.from_dict(json.loads(json_str))
56
+
57
+ def to_dict(self) -> Dict[str, Any]:
58
+ """Return the dictionary representation of the model using alias.
59
+
60
+ This has the following differences from calling pydantic's
61
+ `self.model_dump(by_alias=True)`:
62
+
63
+ * `None` is only added to the output dict for nullable fields that
64
+ were set at model initialization. Other fields with value `None`
65
+ are ignored.
66
+ """
67
+ excluded_fields: Set[str] = set([
68
+ ])
69
+
70
+ _dict = self.model_dump(
71
+ by_alias=True,
72
+ exclude=excluded_fields,
73
+ exclude_none=True,
74
+ )
75
+ # override the default output from pydantic by calling `to_dict()` of execution
76
+ if self.execution:
77
+ _dict['execution'] = self.execution.to_dict()
78
+ # override the default output from pydantic by calling `to_dict()` of each item in items (list)
79
+ _items = []
80
+ if self.items:
81
+ for _item_items in self.items:
82
+ if _item_items:
83
+ _items.append(_item_items.to_dict())
84
+ _dict['items'] = _items
85
+ return _dict
86
+
87
+ @classmethod
88
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
89
+ """Create an instance of DataCadenceRuleExecution from a dict"""
90
+ if obj is None:
91
+ return None
92
+
93
+ if not isinstance(obj, dict):
94
+ return cls.model_validate(obj)
95
+
96
+ _obj = cls.model_validate({
97
+ "execution": RuleExecution.from_dict(obj["execution"]) if obj.get("execution") is not None else None,
98
+ "items": [DataCadenceRuleItemExecution.from_dict(_item) for _item in obj["items"]] if obj.get("items") is not None else None
99
+ })
100
+ return _obj
101
+
102
+
@@ -0,0 +1,104 @@
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 acceldata.models.api.catalog.rule_threshold_configuration import RuleThresholdConfiguration
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+ class DataCadenceRuleItem(BaseModel):
28
+ """
29
+ DataCadenceRuleItem
30
+ """ # noqa: E501
31
+ display_name: StrictStr = Field(alias="displayName")
32
+ execution_order: StrictInt = Field(alias="executionOrder")
33
+ id: Optional[StrictInt] = None
34
+ measurement_type: StrictStr = Field(description="Allowed values at generation time: DATA_FRESHNESS, RECORD_COUNT_TOTAL, RECORD_COUNT_DRIFT, DATA_VOLUME_TOTAL, DATA_VOLUME_DRIFT, FILE_COUNT_TOTAL, FILE_COUNT_DRIFT, CHANGE_IN_FILE_SIZE, ABSOLUTE_FILE_SIZE, RAW_ABSOLUTE_SIZE, RAW_DATA_FRESHNESS, MESSAGES_COUNT_TOTAL, MESSAGES_COUNT_DRIFT, CHANGE_IN_TOPIC_SIZE, ABSOLUTE_TOPIC_SIZE.", alias="measurementType")
35
+ rule_id: Optional[StrictInt] = Field(default=None, alias="ruleId")
36
+ rule_version: StrictInt = Field(alias="ruleVersion")
37
+ threshold_config: Optional[RuleThresholdConfiguration] = Field(default=None, alias="thresholdConfig")
38
+ __properties: ClassVar[List[str]] = ["displayName", "executionOrder", "id", "measurementType", "ruleId", "ruleVersion", "thresholdConfig"]
39
+
40
+ model_config = ConfigDict(
41
+ validate_by_name=True,
42
+ validate_by_alias=True,
43
+ validate_assignment=True,
44
+ protected_namespaces=(),
45
+ )
46
+
47
+
48
+ def to_str(self) -> str:
49
+ """Returns the string representation of the model using alias"""
50
+ return pprint.pformat(self.model_dump(by_alias=True))
51
+
52
+ def to_json(self) -> str:
53
+ """Returns the JSON representation of the model using alias"""
54
+ return json.dumps(to_jsonable_python(self.to_dict()))
55
+
56
+ @classmethod
57
+ def from_json(cls, json_str: str) -> Optional[Self]:
58
+ """Create an instance of DataCadenceRuleItem from a JSON string"""
59
+ return cls.from_dict(json.loads(json_str))
60
+
61
+ def to_dict(self) -> Dict[str, Any]:
62
+ """Return the dictionary representation of the model using alias.
63
+
64
+ This has the following differences from calling pydantic's
65
+ `self.model_dump(by_alias=True)`:
66
+
67
+ * `None` is only added to the output dict for nullable fields that
68
+ were set at model initialization. Other fields with value `None`
69
+ are ignored.
70
+ """
71
+ excluded_fields: Set[str] = set([
72
+ ])
73
+
74
+ _dict = self.model_dump(
75
+ by_alias=True,
76
+ exclude=excluded_fields,
77
+ exclude_none=True,
78
+ )
79
+ # override the default output from pydantic by calling `to_dict()` of threshold_config
80
+ if self.threshold_config:
81
+ _dict['thresholdConfig'] = self.threshold_config.to_dict()
82
+ return _dict
83
+
84
+ @classmethod
85
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
86
+ """Create an instance of DataCadenceRuleItem from a dict"""
87
+ if obj is None:
88
+ return None
89
+
90
+ if not isinstance(obj, dict):
91
+ return cls.model_validate(obj)
92
+
93
+ _obj = cls.model_validate({
94
+ "displayName": obj.get("displayName"),
95
+ "executionOrder": obj.get("executionOrder"),
96
+ "id": obj.get("id"),
97
+ "measurementType": obj.get("measurementType"),
98
+ "ruleId": obj.get("ruleId"),
99
+ "ruleVersion": obj.get("ruleVersion"),
100
+ "thresholdConfig": RuleThresholdConfiguration.from_dict(obj["thresholdConfig"]) if obj.get("thresholdConfig") is not None else None
101
+ })
102
+ return _obj
103
+
104
+