openmetadata-ingestion 1.7.5.0__py3-none-any.whl → 1.8.0.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.

Potentially problematic release.


This version of openmetadata-ingestion might be problematic. Click here for more details.

Files changed (788) hide show
  1. _openmetadata_testutils/helpers/login_user.py +22 -0
  2. metadata/__init__.py +31 -0
  3. metadata/automations/runner.py +24 -14
  4. metadata/data_quality/processor/test_case_runner.py +2 -11
  5. metadata/data_quality/source/test_suite.py +3 -1
  6. metadata/data_quality/validations/table/pandas/tableRowInsertedCountToBeBetween.py +17 -2
  7. metadata/generated/schema/analytics/__init__.py +1 -1
  8. metadata/generated/schema/analytics/basic.py +1 -1
  9. metadata/generated/schema/analytics/reportData.py +1 -1
  10. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  11. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  14. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  15. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  16. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  17. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  19. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  20. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  21. metadata/generated/schema/api/__init__.py +1 -1
  22. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +3 -16
  23. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -10
  24. metadata/generated/schema/api/analytics/__init__.py +1 -1
  25. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  26. metadata/generated/schema/api/automations/__init__.py +1 -1
  27. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  28. metadata/generated/schema/api/bulkAssets.py +1 -1
  29. metadata/generated/schema/api/classification/__init__.py +1 -1
  30. metadata/generated/schema/api/classification/createClassification.py +6 -2
  31. metadata/generated/schema/api/classification/createTag.py +6 -2
  32. metadata/generated/schema/api/classification/loadTags.py +1 -1
  33. metadata/generated/schema/api/createBot.py +1 -1
  34. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  35. metadata/generated/schema/api/createType.py +1 -1
  36. metadata/generated/schema/api/data/__init__.py +1 -1
  37. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  38. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  39. metadata/generated/schema/api/data/createChart.py +1 -1
  40. metadata/generated/schema/api/data/createContainer.py +1 -1
  41. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  42. metadata/generated/schema/api/data/createDashboard.py +1 -1
  43. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  44. metadata/generated/schema/api/data/createDataContract.py +66 -0
  45. metadata/generated/schema/api/data/createDatabase.py +1 -1
  46. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  47. metadata/generated/schema/api/data/createGlossary.py +1 -1
  48. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  49. metadata/generated/schema/api/data/createMetric.py +1 -1
  50. metadata/generated/schema/api/data/createMlModel.py +1 -1
  51. metadata/generated/schema/api/data/createPipeline.py +1 -1
  52. metadata/generated/schema/api/data/createQuery.py +1 -1
  53. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  54. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  55. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  56. metadata/generated/schema/api/data/createTable.py +1 -1
  57. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  58. metadata/generated/schema/api/data/createTopic.py +1 -1
  59. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  60. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  61. metadata/generated/schema/api/data/updateColumn.py +49 -0
  62. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  63. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  64. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  65. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  66. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  67. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  68. metadata/generated/schema/api/docStore/__init__.py +1 -1
  69. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  70. metadata/generated/schema/api/domains/__init__.py +1 -1
  71. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  72. metadata/generated/schema/api/domains/createDomain.py +1 -1
  73. metadata/generated/schema/api/feed/__init__.py +1 -1
  74. metadata/generated/schema/api/feed/closeTask.py +1 -1
  75. metadata/generated/schema/api/feed/createPost.py +1 -1
  76. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  77. metadata/generated/schema/api/feed/createThread.py +1 -1
  78. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  79. metadata/generated/schema/api/feed/threadCount.py +1 -1
  80. metadata/generated/schema/api/governance/__init__.py +1 -1
  81. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  82. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  83. metadata/generated/schema/api/lineage/__init__.py +1 -1
  84. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  85. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  86. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  87. metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
  88. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  89. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  90. metadata/generated/schema/api/mcp/__init__.py +3 -0
  91. metadata/generated/schema/api/mcp/mcpToolDefinition.py +54 -0
  92. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  93. metadata/generated/schema/api/policies/__init__.py +1 -1
  94. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  95. metadata/generated/schema/api/scim/__init__.py +3 -0
  96. metadata/generated/schema/api/scim/scimGroup.py +52 -0
  97. metadata/generated/schema/api/scim/scimPatchOp.py +32 -0
  98. metadata/generated/schema/api/scim/scimUser.py +83 -0
  99. metadata/generated/schema/api/search/__init__.py +1 -1
  100. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  101. metadata/generated/schema/api/services/__init__.py +1 -1
  102. metadata/generated/schema/api/services/createApiService.py +1 -1
  103. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  104. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  105. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  106. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  107. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  108. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  109. metadata/generated/schema/api/services/createSearchService.py +1 -1
  110. metadata/generated/schema/api/services/createStorageService.py +1 -1
  111. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  112. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  113. metadata/generated/schema/api/setOwner.py +1 -1
  114. metadata/generated/schema/api/teams/__init__.py +1 -1
  115. metadata/generated/schema/api/teams/createPersona.py +1 -1
  116. metadata/generated/schema/api/teams/createRole.py +1 -1
  117. metadata/generated/schema/api/teams/createTeam.py +8 -1
  118. metadata/generated/schema/api/teams/createUser.py +11 -1
  119. metadata/generated/schema/api/tests/__init__.py +1 -1
  120. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  121. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  122. metadata/generated/schema/api/tests/createTestCase.py +9 -6
  123. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  124. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  125. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  126. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  127. metadata/generated/schema/api/validateGlossaryTagsRequest.py +31 -0
  128. metadata/generated/schema/api/voteRequest.py +1 -1
  129. metadata/generated/schema/auth/__init__.py +1 -1
  130. metadata/generated/schema/auth/basicAuth.py +1 -1
  131. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  132. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  133. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  134. metadata/generated/schema/auth/emailRequest.py +1 -1
  135. metadata/generated/schema/auth/emailVerificationToken.py +2 -1
  136. metadata/generated/schema/auth/generateToken.py +1 -1
  137. metadata/generated/schema/auth/jwtAuth.py +1 -1
  138. metadata/generated/schema/auth/loginRequest.py +1 -1
  139. metadata/generated/schema/auth/logoutRequest.py +1 -1
  140. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  141. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  142. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  143. metadata/generated/schema/auth/refreshToken.py +1 -1
  144. metadata/generated/schema/auth/registrationRequest.py +1 -1
  145. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  146. metadata/generated/schema/auth/revokeToken.py +1 -1
  147. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  148. metadata/generated/schema/auth/ssoAuth.py +1 -1
  149. metadata/generated/schema/auth/supportToken.py +35 -0
  150. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  151. metadata/generated/schema/configuration/__init__.py +1 -1
  152. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  153. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  154. metadata/generated/schema/configuration/authConfig.py +1 -1
  155. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  156. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  159. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  160. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  161. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  164. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  165. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  166. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  167. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  168. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  169. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  170. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  171. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  172. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  173. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  174. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/opsConfig.py +1 -1
  178. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  179. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/searchSettings.py +1 -1
  181. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  182. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  185. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  186. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  187. metadata/generated/schema/dataInsight/__init__.py +1 -1
  188. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  189. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  190. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  191. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  192. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  193. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  194. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  195. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  196. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  197. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  198. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  199. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  200. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  201. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  202. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  203. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  204. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  205. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  206. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  207. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  208. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  209. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  210. metadata/generated/schema/email/__init__.py +1 -1
  211. metadata/generated/schema/email/emailRequest.py +1 -1
  212. metadata/generated/schema/email/emailTemplate.py +1 -1
  213. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  214. metadata/generated/schema/email/smtpSettings.py +1 -1
  215. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  216. metadata/generated/schema/entity/__init__.py +1 -1
  217. metadata/generated/schema/entity/applications/__init__.py +1 -1
  218. metadata/generated/schema/entity/applications/app.py +3 -2
  219. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  220. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  221. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  222. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  223. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  224. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  225. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  226. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  227. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  228. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  229. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  230. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  231. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  232. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  233. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  234. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  237. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +9 -1
  253. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +9 -1
  255. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  261. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  262. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  263. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  264. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  265. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  266. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  267. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  268. metadata/generated/schema/entity/automations/__init__.py +1 -1
  269. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  270. metadata/generated/schema/entity/automations/workflow.py +1 -1
  271. metadata/generated/schema/entity/bot.py +1 -1
  272. metadata/generated/schema/entity/classification/__init__.py +1 -1
  273. metadata/generated/schema/entity/classification/classification.py +7 -4
  274. metadata/generated/schema/entity/classification/tag.py +6 -3
  275. metadata/generated/schema/entity/data/__init__.py +1 -1
  276. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  277. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  278. metadata/generated/schema/entity/data/chart.py +1 -1
  279. metadata/generated/schema/entity/data/container.py +1 -1
  280. metadata/generated/schema/entity/data/dashboard.py +1 -1
  281. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  282. metadata/generated/schema/entity/data/dataContract.py +180 -0
  283. metadata/generated/schema/entity/data/database.py +1 -1
  284. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  285. metadata/generated/schema/entity/data/glossary.py +1 -1
  286. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  287. metadata/generated/schema/entity/data/metric.py +1 -1
  288. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  289. metadata/generated/schema/entity/data/pipeline.py +1 -1
  290. metadata/generated/schema/entity/data/query.py +1 -1
  291. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  292. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  293. metadata/generated/schema/entity/data/report.py +1 -1
  294. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  295. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  296. metadata/generated/schema/entity/data/table.py +5 -1
  297. metadata/generated/schema/entity/data/topic.py +1 -1
  298. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  299. metadata/generated/schema/entity/docStore/document.py +1 -1
  300. metadata/generated/schema/entity/domains/__init__.py +1 -1
  301. metadata/generated/schema/entity/domains/dataProduct.py +5 -1
  302. metadata/generated/schema/entity/domains/domain.py +5 -1
  303. metadata/generated/schema/entity/events/__init__.py +1 -1
  304. metadata/generated/schema/entity/events/webhook.py +7 -1
  305. metadata/generated/schema/entity/feed/__init__.py +1 -1
  306. metadata/generated/schema/entity/feed/assets.py +1 -1
  307. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  308. metadata/generated/schema/entity/feed/description.py +1 -1
  309. metadata/generated/schema/entity/feed/domain.py +1 -1
  310. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  311. metadata/generated/schema/entity/feed/owner.py +1 -1
  312. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  313. metadata/generated/schema/entity/feed/tag.py +1 -1
  314. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  315. metadata/generated/schema/entity/feed/thread.py +1 -1
  316. metadata/generated/schema/entity/policies/__init__.py +1 -1
  317. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  318. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +6 -1
  319. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  320. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  321. metadata/generated/schema/entity/policies/filters.py +1 -1
  322. metadata/generated/schema/entity/policies/policy.py +1 -1
  323. metadata/generated/schema/entity/services/__init__.py +1 -1
  324. metadata/generated/schema/entity/services/apiService.py +1 -1
  325. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  326. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  327. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  328. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  329. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  330. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  331. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  332. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  333. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  334. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  335. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  344. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  345. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +5 -1
  359. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  426. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +9 -1
  431. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  432. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  433. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  440. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  446. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  463. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  464. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  465. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  473. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  475. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  476. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  477. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  481. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  486. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  487. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  488. metadata/generated/schema/entity/services/databaseService.py +1 -1
  489. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  490. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  491. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  492. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  493. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  494. metadata/generated/schema/entity/services/messagingService.py +1 -1
  495. metadata/generated/schema/entity/services/metadataService.py +1 -1
  496. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  497. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  498. metadata/generated/schema/entity/services/searchService.py +1 -1
  499. metadata/generated/schema/entity/services/serviceType.py +1 -1
  500. metadata/generated/schema/entity/services/storageService.py +1 -1
  501. metadata/generated/schema/entity/teams/__init__.py +1 -1
  502. metadata/generated/schema/entity/teams/persona.py +1 -1
  503. metadata/generated/schema/entity/teams/role.py +1 -1
  504. metadata/generated/schema/entity/teams/team.py +8 -1
  505. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  506. metadata/generated/schema/entity/teams/user.py +11 -1
  507. metadata/generated/schema/entity/type.py +1 -1
  508. metadata/generated/schema/entity/utils/__init__.py +1 -1
  509. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  510. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  511. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  512. metadata/generated/schema/events/__init__.py +1 -1
  513. metadata/generated/schema/events/alertMetrics.py +1 -1
  514. metadata/generated/schema/events/api/__init__.py +1 -1
  515. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  516. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  517. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  518. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  519. metadata/generated/schema/events/api/typedEvent.py +1 -1
  520. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  521. metadata/generated/schema/events/eventFilterRule.py +1 -1
  522. metadata/generated/schema/events/eventSubscription.py +1 -1
  523. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  524. metadata/generated/schema/events/failedEvent.py +1 -1
  525. metadata/generated/schema/events/failedEventResponse.py +1 -1
  526. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  527. metadata/generated/schema/events/statusContext.py +1 -1
  528. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  529. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  530. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  531. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  532. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  533. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  534. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  535. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  536. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  537. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  538. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  539. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  540. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  541. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  542. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  543. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  544. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  545. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  546. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  547. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  548. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  549. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  550. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  551. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  552. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  553. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  554. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  555. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  556. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  557. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  558. metadata/generated/schema/jobs/__init__.py +1 -1
  559. metadata/generated/schema/jobs/backgroundJob.py +12 -3
  560. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  561. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  562. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  563. metadata/generated/schema/metadataIngestion/application.py +1 -1
  564. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  565. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  566. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  567. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  568. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  569. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  571. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  572. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  573. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  574. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  575. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  576. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  577. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  578. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  579. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  580. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  581. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  582. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  583. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  584. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  585. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  586. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  587. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  588. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  589. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  590. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  591. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  592. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  593. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  594. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  595. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  596. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  597. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  598. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  599. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  600. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  601. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  602. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  603. metadata/generated/schema/monitoring/__init__.py +1 -1
  604. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  605. metadata/generated/schema/scim/__init__.py +3 -0
  606. metadata/generated/schema/scim/scimConfiguration.py +32 -0
  607. metadata/generated/schema/search/__init__.py +1 -1
  608. metadata/generated/schema/search/aggregationRequest.py +1 -1
  609. metadata/generated/schema/search/searchRequest.py +8 -1
  610. metadata/generated/schema/security/__init__.py +1 -1
  611. metadata/generated/schema/security/client/__init__.py +1 -1
  612. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  613. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  614. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  615. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  616. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  617. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  618. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  619. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  620. metadata/generated/schema/security/credentials/__init__.py +1 -1
  621. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  622. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  623. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  624. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  625. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  626. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  627. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  628. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  629. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  630. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  631. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  632. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  633. metadata/generated/schema/security/sasl/__init__.py +1 -1
  634. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  635. metadata/generated/schema/security/secrets/__init__.py +1 -1
  636. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  637. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  638. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  639. metadata/generated/schema/security/securityConfiguration.py +1 -1
  640. metadata/generated/schema/security/ssl/__init__.py +1 -1
  641. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  642. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  643. metadata/generated/schema/settings/__init__.py +1 -1
  644. metadata/generated/schema/settings/settings.py +2 -1
  645. metadata/generated/schema/system/__init__.py +1 -1
  646. metadata/generated/schema/system/entityError.py +1 -1
  647. metadata/generated/schema/system/eventPublisherJob.py +8 -1
  648. metadata/generated/schema/system/indexingError.py +1 -1
  649. metadata/generated/schema/system/limitsResponse.py +1 -1
  650. metadata/generated/schema/system/ui/__init__.py +1 -1
  651. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  652. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  653. metadata/generated/schema/system/ui/page.py +1 -1
  654. metadata/generated/schema/system/ui/tab.py +1 -1
  655. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  656. metadata/generated/schema/system/validationResponse.py +1 -1
  657. metadata/generated/schema/tests/__init__.py +1 -1
  658. metadata/generated/schema/tests/assigned.py +1 -1
  659. metadata/generated/schema/tests/basic.py +1 -1
  660. metadata/generated/schema/tests/customMetric.py +1 -1
  661. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  662. metadata/generated/schema/tests/resolved.py +1 -1
  663. metadata/generated/schema/tests/testCase.py +1 -1
  664. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  665. metadata/generated/schema/tests/testDefinition.py +1 -1
  666. metadata/generated/schema/tests/testSuite.py +1 -1
  667. metadata/generated/schema/type/__init__.py +1 -1
  668. metadata/generated/schema/type/apiSchema.py +1 -1
  669. metadata/generated/schema/type/assetCertification.py +1 -1
  670. metadata/generated/schema/type/auditLog.py +1 -1
  671. metadata/generated/schema/type/basic.py +1 -1
  672. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  673. metadata/generated/schema/type/changeEvent.py +1 -1
  674. metadata/generated/schema/type/changeEventType.py +1 -1
  675. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  676. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  677. metadata/generated/schema/type/csvDocumentation.py +1 -1
  678. metadata/generated/schema/type/csvErrorType.py +1 -1
  679. metadata/generated/schema/type/csvFile.py +1 -1
  680. metadata/generated/schema/type/csvImportResult.py +1 -1
  681. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  682. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  683. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  684. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  685. metadata/generated/schema/type/customProperty.py +1 -1
  686. metadata/generated/schema/type/dailyCount.py +1 -1
  687. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  688. metadata/generated/schema/type/entityHierarchy.py +1 -1
  689. metadata/generated/schema/type/entityHistory.py +1 -1
  690. metadata/generated/schema/type/entityLineage.py +1 -1
  691. metadata/generated/schema/type/entityReference.py +1 -1
  692. metadata/generated/schema/type/entityReferenceList.py +1 -1
  693. metadata/generated/schema/type/entityRelationship.py +1 -1
  694. metadata/generated/schema/type/entityUsage.py +1 -1
  695. metadata/generated/schema/type/filterPattern.py +1 -1
  696. metadata/generated/schema/type/function.py +1 -1
  697. metadata/generated/schema/type/include.py +1 -1
  698. metadata/generated/schema/type/jdbcConnection.py +1 -1
  699. metadata/generated/schema/type/lifeCycle.py +1 -1
  700. metadata/generated/schema/type/paging.py +1 -1
  701. metadata/generated/schema/type/profile.py +1 -1
  702. metadata/generated/schema/type/queryParserData.py +1 -1
  703. metadata/generated/schema/type/reaction.py +1 -1
  704. metadata/generated/schema/type/schedule.py +1 -1
  705. metadata/generated/schema/type/schema.py +1 -1
  706. metadata/generated/schema/type/tableQuery.py +1 -1
  707. metadata/generated/schema/type/tableUsageCount.py +1 -1
  708. metadata/generated/schema/type/tagLabel.py +1 -1
  709. metadata/generated/schema/type/usageDetails.py +1 -1
  710. metadata/generated/schema/type/usageRequest.py +1 -1
  711. metadata/generated/schema/type/votes.py +1 -1
  712. metadata/great_expectations/action.py +4 -8
  713. metadata/great_expectations/action1xx.py +395 -0
  714. metadata/ingestion/connections/builders.py +14 -4
  715. metadata/ingestion/connections/connection.py +63 -0
  716. metadata/ingestion/connections/query_logger.py +115 -0
  717. metadata/ingestion/connections/test_connections.py +1 -1
  718. metadata/ingestion/ometa/mixins/tests_mixin.py +3 -5
  719. metadata/ingestion/ometa/routes.py +2 -0
  720. metadata/ingestion/sink/metadata_rest.py +54 -11
  721. metadata/ingestion/source/api/api_service.py +2 -7
  722. metadata/ingestion/source/connections.py +80 -14
  723. metadata/ingestion/source/connections_utils.py +32 -0
  724. metadata/ingestion/source/dashboard/dashboard_service.py +2 -7
  725. metadata/ingestion/source/dashboard/powerbi/metadata.py +32 -20
  726. metadata/ingestion/source/dashboard/superset/connection.py +8 -8
  727. metadata/ingestion/source/dashboard/superset/queries.py +1 -1
  728. metadata/ingestion/source/dashboard/tableau/models.py +12 -2
  729. metadata/ingestion/source/database/bigquery/connection.py +13 -9
  730. metadata/ingestion/source/database/bigquery/helper.py +11 -9
  731. metadata/ingestion/source/database/bigquery/metadata.py +102 -13
  732. metadata/ingestion/source/database/bigquery/profiler/system.py +1 -1
  733. metadata/ingestion/source/database/bigquery/queries.py +15 -3
  734. metadata/ingestion/source/database/common_db_source.py +2 -4
  735. metadata/ingestion/source/database/database_service.py +2 -7
  736. metadata/ingestion/source/database/datalake/metadata.py +1 -1
  737. metadata/ingestion/source/database/dbt/metadata.py +0 -5
  738. metadata/ingestion/source/database/mysql/connection.py +52 -45
  739. metadata/ingestion/source/database/mysql/service_spec.py +2 -0
  740. metadata/ingestion/source/database/query_parser_source.py +2 -7
  741. metadata/ingestion/source/database/redshift/connection.py +1 -1
  742. metadata/ingestion/source/database/sample_data.py +1 -1
  743. metadata/ingestion/source/database/saphana/lineage.py +2 -7
  744. metadata/ingestion/source/database/sas/metadata.py +2 -7
  745. metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +26 -17
  746. metadata/ingestion/source/database/unitycatalog/connection.py +33 -0
  747. metadata/ingestion/source/database/unitycatalog/lineage.py +2 -7
  748. metadata/ingestion/source/database/unitycatalog/metadata.py +126 -13
  749. metadata/ingestion/source/database/unitycatalog/queries.py +19 -0
  750. metadata/ingestion/source/messaging/messaging_service.py +2 -7
  751. metadata/ingestion/source/metadata/alationsink/metadata.py +2 -7
  752. metadata/ingestion/source/metadata/amundsen/metadata.py +2 -7
  753. metadata/ingestion/source/metadata/atlas/metadata.py +2 -7
  754. metadata/ingestion/source/mlmodel/mlmodel_service.py +2 -7
  755. metadata/ingestion/source/pipeline/airflow/connection.py +4 -6
  756. metadata/ingestion/source/pipeline/nifi/metadata.py +133 -3
  757. metadata/ingestion/source/pipeline/pipeline_service.py +20 -7
  758. metadata/ingestion/source/search/search_service.py +2 -7
  759. metadata/ingestion/source/storage/storage_service.py +2 -7
  760. metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +3 -3
  761. metadata/profiler/interface/sqlalchemy/profiler_interface.py +1 -0
  762. metadata/profiler/metrics/static/not_regexp_match_count.py +4 -3
  763. metadata/profiler/metrics/static/regexp_match_count.py +3 -2
  764. metadata/profiler/orm/functions/length.py +1 -0
  765. metadata/profiler/orm/functions/md5.py +9 -0
  766. metadata/profiler/orm/functions/modulo.py +1 -0
  767. metadata/profiler/orm/functions/random_num.py +4 -0
  768. metadata/profiler/orm/functions/regexp.py +40 -0
  769. metadata/profiler/orm/functions/table_metric_computer.py +34 -8
  770. metadata/profiler/orm/registry.py +1 -0
  771. metadata/profiler/processor/core.py +2 -2
  772. metadata/profiler/processor/default.py +29 -28
  773. metadata/profiler/processor/metric_filter.py +16 -3
  774. metadata/profiler/processor/models.py +14 -4
  775. metadata/profiler/source/database/base/profiler_resolver.py +35 -0
  776. metadata/profiler/source/database/base/profiler_source.py +45 -30
  777. metadata/profiler/source/profiler_source_interface.py +8 -13
  778. metadata/sampler/sampler_interface.py +15 -10
  779. metadata/sampler/sqlalchemy/bigquery/sampler.py +7 -0
  780. metadata/utils/dependency_injector/dependency_injector.py +403 -0
  781. metadata/utils/service_spec/service_spec.py +66 -10
  782. metadata/workflow/profiler.py +2 -7
  783. {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/METADATA +513 -502
  784. {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/RECORD +788 -765
  785. {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/LICENSE +0 -0
  786. {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/WHEEL +0 -0
  787. {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/entry_points.txt +0 -0
  788. {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,395 @@
1
+ # Copyright 2022 Collate
2
+ # Licensed under the Collate Community License, Version 1.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ Great Expectations subpackage to send expectation results to
13
+ Open Metadata table quality.
14
+
15
+ This subpackage needs to be used in Great Expectations
16
+ checkpoints actions.
17
+ """
18
+ import logging
19
+ import traceback
20
+ from datetime import datetime
21
+ from typing import Dict, List, Literal, Optional, Union, cast
22
+
23
+ from great_expectations.checkpoint import (
24
+ ActionContext,
25
+ CheckpointResult,
26
+ ValidationAction,
27
+ )
28
+ from great_expectations.core.batch import Batch
29
+ from great_expectations.core.expectation_validation_result import (
30
+ ExpectationSuiteValidationResultMeta,
31
+ )
32
+ from great_expectations.datasource.fluent import DataAsset
33
+ from great_expectations.validator.validator import Validator
34
+ from sqlalchemy.engine.base import Connection, Engine
35
+ from sqlalchemy.engine.url import URL
36
+
37
+ from metadata.generated.schema.api.tests.createTestSuite import CreateTestSuiteRequest
38
+ from metadata.generated.schema.entity.data.table import Table
39
+ from metadata.generated.schema.tests.basic import (
40
+ TestCaseResult,
41
+ TestCaseStatus,
42
+ TestResultValue,
43
+ )
44
+ from metadata.generated.schema.tests.testCase import TestCase, TestCaseParameterValue
45
+ from metadata.generated.schema.tests.testDefinition import (
46
+ EntityType,
47
+ TestCaseParameterDefinition,
48
+ TestPlatform,
49
+ )
50
+ from metadata.generated.schema.tests.testSuite import TestSuite
51
+ from metadata.generated.schema.type.basic import Timestamp
52
+ from metadata.great_expectations.utils.ometa_config_handler import (
53
+ create_jinja_environment,
54
+ create_ometa_connection_obj,
55
+ render_template,
56
+ )
57
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
58
+ from metadata.utils import fqn
59
+ from metadata.utils.entity_link import get_entity_link
60
+
61
+ logger = logging.getLogger(
62
+ "great_expectations.validation_operators.validation_operators.openmetadata"
63
+ )
64
+
65
+
66
+ class OpenMetadataValidationAction1xx(ValidationAction):
67
+ """Open Metdata validation action for GE 1.x.x It inherits from
68
+ great expection validation action class and implements the
69
+ `run` method.
70
+
71
+ Attributes:
72
+ data_context: great expectation data context
73
+ database_service_name: name of the service for the table
74
+ api_version: default to v1
75
+ config_file_path: path to the open metdata config path
76
+ """
77
+
78
+ type: Literal["open_metadata_validation_action"] = "open_metadata_validation_action"
79
+ name: str = "OpenMetadataValidationAction"
80
+ config_file_path: Optional[str] = None
81
+ database_service_name: Optional[str] = None
82
+ schema_name: Optional[str] = "default"
83
+ database_name: str
84
+ table_name: Optional[str] = None
85
+ # Using Optional to make this field not part of the serialized model
86
+ # This will be initialized in the run method
87
+ ometa_conn: Optional[OpenMetadata] = None
88
+
89
+ def run( # pylint: disable=unused-argument, arguments-differ
90
+ self,
91
+ checkpoint_result: CheckpointResult,
92
+ action_context: Union[ActionContext, None],
93
+ ):
94
+ """main function to implement great expectation hook
95
+
96
+ Args:
97
+ validation_result_suite: result suite returned when checkpoint is ran
98
+ validation_result_suite_identifier: type of result suite
99
+ data_asset:
100
+ expectation_suite_identifier: type of expectation suite
101
+ checkpoint_identifier: identifier for the checkpoint
102
+ """
103
+ self.ometa_conn = self._create_ometa_connection()
104
+ for _, v in checkpoint_result.run_results.items():
105
+ meta = v.meta
106
+ if meta:
107
+ check_point_spec = self._get_checkpoint_batch_spec(meta)
108
+ table_entity = self._get_table_entity(
109
+ self.database_name,
110
+ check_point_spec.get("schema_name", self.schema_name),
111
+ check_point_spec.get("table_name"),
112
+ )
113
+
114
+ else:
115
+ table_entity = self._get_table_entity(
116
+ self.database_name,
117
+ self.schema_name,
118
+ self.table_name,
119
+ )
120
+
121
+ if table_entity:
122
+ for result in v.results:
123
+ self._handle_test_case(result, table_entity)
124
+
125
+ @staticmethod
126
+ def _get_checkpoint_batch_spec(
127
+ meta: Union[ExpectationSuiteValidationResultMeta, dict]
128
+ ):
129
+ """Return run meta and check instance of data_asset
130
+
131
+ Args:
132
+ data_asset: data assets of the checkpoint run
133
+ Returns:
134
+ SqlAlchemyDatasourceBatchSpec
135
+ Raises:
136
+ ValueError: if datasource not SqlAlchemyDatasourceBatchSpec raise
137
+ """
138
+ return meta.get("batch_spec")
139
+
140
+ def _get_table_entity(
141
+ self,
142
+ database: Optional[str],
143
+ schema_name: Optional[str],
144
+ table_name: Optional[str],
145
+ ) -> Optional[Table]:
146
+ """Return the table entity for the test. If service name is defined
147
+ in GE checkpoint entity will be fetch using the FQN. If not provided
148
+ iterative search will be perform among all the entities. If 2 entities
149
+ are found with the same `database`.`schema`.`table` the method will
150
+ raise an error.
151
+
152
+ Args:
153
+ database: database name
154
+ schema_name: schema name
155
+ table_name: table name
156
+
157
+ Return:
158
+ Optional[Table]
159
+
160
+ Raises:
161
+ ValueError: if 2 entities with the same
162
+ `database`.`schema`.`table` are found
163
+ """
164
+ if not all([schema_name, table_name]):
165
+ raise ValueError(
166
+ "No Schema or Table name provided. Can't fetch table entity from OpenMetadata."
167
+ )
168
+
169
+ if self.database_service_name:
170
+ return self.ometa_conn.get_by_name(
171
+ entity=Table,
172
+ fqn=f"{self.database_service_name}.{database}.{schema_name}.{table_name}",
173
+ fields=["testSuite"],
174
+ )
175
+
176
+ table_entity = [
177
+ entity
178
+ for entity in self.ometa_conn.list_entities(
179
+ entity=Table, fields=["testSuite"]
180
+ ).entities
181
+ if f"{database}.{schema_name}.{table_name}"
182
+ in entity.fullyQualifiedName.root
183
+ ]
184
+
185
+ if len(table_entity) > 1:
186
+ raise ValueError(
187
+ f"Non unique `database`.`schema`.`table` found: {table_entity}."
188
+ "Please specify an `database_service_name` in you checkpoint.yml file.",
189
+ )
190
+
191
+ if table_entity:
192
+ return table_entity[0]
193
+
194
+ logger.warning(
195
+ "No entity found for %s.%s.%s", database, schema_name, table_name
196
+ )
197
+ return None
198
+
199
+ def _check_or_create_test_suite(self, table_entity: Table) -> TestSuite:
200
+ """Check if test suite already exists for a given table entity. If not
201
+ create a new one.
202
+
203
+ Args:
204
+ table_entity: table entity object
205
+ Returns:
206
+ TestSuite
207
+ """
208
+
209
+ if table_entity.testSuite:
210
+ test_suite = self.ometa_conn.get_by_name(
211
+ TestSuite, table_entity.testSuite.fullyQualifiedName
212
+ )
213
+ test_suite = cast(TestSuite, test_suite)
214
+ return test_suite
215
+
216
+ create_test_suite = CreateTestSuiteRequest(
217
+ name=f"{table_entity.fullyQualifiedName.root}.TestSuite",
218
+ basicEntityReference=table_entity.fullyQualifiedName.root,
219
+ ) # type: ignore
220
+ test_suite = self.ometa_conn.create_or_update_executable_test_suite(
221
+ create_test_suite
222
+ )
223
+ return test_suite
224
+
225
+ @staticmethod
226
+ def _get_execution_engine_url(
227
+ data_asset: Union[Validator, DataAsset, Batch]
228
+ ) -> URL:
229
+ """Get execution engine used to run the expectation
230
+
231
+ Args:
232
+ data_asset: data assets of the checkpoint run
233
+ Returns:
234
+ URL
235
+ Raises:
236
+ ValueError: if expectation is not ran against DB
237
+ """
238
+ if isinstance(data_asset.execution_engine.engine, Engine):
239
+ return data_asset.execution_engine.engine.url
240
+ if isinstance(data_asset.execution_engine.engine, Connection):
241
+ return data_asset.execution_engine.engine.engine.url
242
+ raise ValueError(
243
+ "Type is not supported. Make sur you ran your"
244
+ " expectations against a relational database"
245
+ )
246
+
247
+ def _create_ometa_connection(self) -> OpenMetadata:
248
+ """Create OpenMetadata API connection"""
249
+ environment = create_jinja_environment(self.config_file_path)
250
+ rendered_config = render_template(environment)
251
+
252
+ return OpenMetadata(create_ometa_connection_obj(rendered_config))
253
+
254
+ def _build_test_case_fqn(self, table_fqn: str, result: Dict) -> str:
255
+ """build test case fqn from table entity and GE test results
256
+
257
+ Args:
258
+ table_fqn (str): table fully qualified name
259
+ result (Dict): result from great expectation tests
260
+ """
261
+ split_table_fqn = table_fqn.split(".")
262
+ fqn_ = fqn.build(
263
+ self.ometa_conn,
264
+ entity_type=TestCase,
265
+ service_name=split_table_fqn[0],
266
+ database_name=split_table_fqn[1],
267
+ schema_name=split_table_fqn[2],
268
+ table_name=split_table_fqn[3],
269
+ column_name=result["expectation_config"]["kwargs"].get("column"),
270
+ test_case_name=result["expectation_config"]["type"],
271
+ )
272
+ fqn_ = cast(str, fqn_)
273
+ return fqn_
274
+
275
+ def _get_test_case_params_value(self, result: dict) -> List[TestCaseParameterValue]:
276
+ """Build test case parameter value from GE test result"""
277
+ if "observed_value" not in result["result"]:
278
+ return [
279
+ TestCaseParameterValue(
280
+ name="unexpected_percentage_total",
281
+ value=str(0.0),
282
+ )
283
+ ]
284
+
285
+ return [
286
+ TestCaseParameterValue(
287
+ name=key,
288
+ value=str(value),
289
+ )
290
+ for key, value in result["expectation_config"]["kwargs"].items()
291
+ if key not in {"column", "batch_id"}
292
+ ]
293
+
294
+ def _get_test_case_params_definition(
295
+ self, result: dict
296
+ ) -> List[TestCaseParameterDefinition]:
297
+ """Build test case parameter definition from GE test result"""
298
+ if "observed_value" not in result["result"]:
299
+ return [
300
+ TestCaseParameterDefinition(
301
+ name="unexpected_percentage_total",
302
+ ) # type: ignore
303
+ ]
304
+
305
+ return [
306
+ TestCaseParameterDefinition(
307
+ name=key,
308
+ ) # type: ignore
309
+ for key, _ in result["expectation_config"]["kwargs"].items()
310
+ if key not in {"column", "batch_id"}
311
+ ]
312
+
313
+ def _get_test_result_value(self, result: dict) -> List[TestResultValue]:
314
+ """Get test result value from GE test result
315
+
316
+ Args:
317
+ result (dict): result
318
+
319
+ Returns:
320
+ TestCaseResult: a test case result object
321
+ """
322
+ try:
323
+ test_result_value = TestResultValue(
324
+ name="observed_value",
325
+ value=str(result["result"]["observed_value"]),
326
+ )
327
+ except KeyError:
328
+ unexpected_percent_total = result["result"].get("unexpected_percent_total")
329
+ test_result_value = TestResultValue(
330
+ name="unexpected_percentage_total",
331
+ value=str(unexpected_percent_total),
332
+ )
333
+
334
+ return [test_result_value]
335
+
336
+ def _handle_test_case(self, result: Dict, table_entity: Table):
337
+ """Handle adding test to table entity based on the test case.
338
+ Test Definitions will be created on the fly from the results of the
339
+ great expectations run. We will then write the test case results to the
340
+ specific test case.
341
+
342
+ Args:
343
+ result: GE test result
344
+ table_entity: table entity object
345
+ """
346
+
347
+ try:
348
+ test_definition = self.ometa_conn.get_or_create_test_definition(
349
+ test_definition_fqn=result["expectation_config"]["type"],
350
+ test_definition_description=result["expectation_config"][
351
+ "type"
352
+ ].replace("_", " "),
353
+ entity_type=EntityType.COLUMN
354
+ if "column" in result["expectation_config"]["kwargs"]
355
+ else EntityType.TABLE,
356
+ test_platforms=[TestPlatform.GreatExpectations],
357
+ test_case_parameter_definition=self._get_test_case_params_definition(
358
+ result
359
+ ),
360
+ )
361
+
362
+ test_case_fqn = self._build_test_case_fqn(
363
+ table_entity.fullyQualifiedName.root,
364
+ result,
365
+ )
366
+
367
+ test_case = self.ometa_conn.get_or_create_test_case(
368
+ test_case_fqn,
369
+ entity_link=get_entity_link(
370
+ Table,
371
+ fqn=table_entity.fullyQualifiedName.root,
372
+ column_name=fqn.split_test_case_fqn(test_case_fqn).column,
373
+ ),
374
+ test_definition_fqn=test_definition.fullyQualifiedName.root,
375
+ test_case_parameter_values=self._get_test_case_params_value(result),
376
+ )
377
+
378
+ self.ometa_conn.add_test_case_results(
379
+ test_results=TestCaseResult(
380
+ timestamp=Timestamp(int(datetime.now().timestamp() * 1000)),
381
+ testCaseStatus=TestCaseStatus.Success
382
+ if result["success"]
383
+ else TestCaseStatus.Failed,
384
+ testResultValue=self._get_test_result_value(result),
385
+ ), # type: ignore
386
+ test_case_fqn=test_case.fullyQualifiedName.root,
387
+ )
388
+
389
+ logger.debug(
390
+ f"Test case result for {test_case.fullyQualifiedName.root} successfully ingested"
391
+ )
392
+
393
+ except Exception as exc:
394
+ logger.debug(traceback.format_exc())
395
+ logger.warning(exc)
@@ -31,6 +31,7 @@ from metadata.generated.schema.entity.services.connections.database.common.iamAu
31
31
  IamAuthConfigurationSource,
32
32
  )
33
33
  from metadata.ingestion.connections.headers import inject_query_header_by_conn
34
+ from metadata.ingestion.connections.query_logger import attach_query_tracker
34
35
  from metadata.ingestion.connections.secrets import connection_with_options_secrets
35
36
  from metadata.utils.constants import BUILDER_PASSWORD_ATTR
36
37
  from metadata.utils.logger import cli_logger
@@ -76,6 +77,8 @@ def create_generic_db_connection(
76
77
  max_overflow=-1,
77
78
  )
78
79
 
80
+ attach_query_tracker(engine)
81
+
79
82
  if hasattr(connection, "supportsQueryComment"):
80
83
  listen(
81
84
  engine,
@@ -125,11 +128,10 @@ def init_empty_connection_options() -> ConnectionOptions:
125
128
  return ConnectionOptions(root={})
126
129
 
127
130
 
128
- def _add_password(url: str, connection) -> str:
131
+ def get_password_secret(connection) -> SecretStr:
129
132
  """
130
- A helper function that adds the password to the url if it exists.
131
- Distinguishing between BasicAuth (Password) and IamAuth (AWSConfig)
132
- and adding to url.
133
+ Helper to extract the password secret from the connection object.
134
+ Handles BasicAuth, IamAuth, and falls back to empty SecretStr if not found.
133
135
  """
134
136
  password = getattr(connection, BUILDER_PASSWORD_ATTR, None)
135
137
 
@@ -158,6 +160,14 @@ def _add_password(url: str, connection) -> str:
158
160
  if not password:
159
161
  logger.warning("No password has been provided in connection")
160
162
  password = SecretStr("")
163
+ return password
164
+
165
+
166
+ def _add_password(url: str, connection) -> str:
167
+ """
168
+ A helper function that adds the password to the url if it exists.
169
+ """
170
+ password = get_password_secret(connection)
161
171
  url += f":{quote_plus(password.get_secret_value())}"
162
172
  return url
163
173
 
@@ -0,0 +1,63 @@
1
+ # Copyright 2025 Collate
2
+ # Licensed under the Collate Community License, Version 1.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ """
13
+ BaseConnection abstract class for database connectors.
14
+
15
+ This module defines the BaseConnection abstract base class,
16
+ which provides a common, type-safe interface for all database connection implementations.
17
+ Each connector subclass should inherit from BaseConnection and implement the required abstract methods
18
+ to provide a unified way to instantiate and interact with different data sources.
19
+ """
20
+
21
+ from abc import ABC, abstractmethod
22
+ from typing import Generic, Optional, TypeVar
23
+
24
+ from metadata.generated.schema.entity.automations.workflow import (
25
+ Workflow as AutomationWorkflow,
26
+ )
27
+ from metadata.generated.schema.entity.services.connections.testConnectionResult import (
28
+ TestConnectionResult,
29
+ )
30
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
31
+ from metadata.utils.constants import THREE_MIN
32
+
33
+ S = TypeVar("S") # ServiceConnection Type
34
+ C = TypeVar("C") # Client Type
35
+
36
+
37
+ class BaseConnection(ABC, Generic[S, C]):
38
+ """
39
+ Abstract base class for database connections, providing a unified interface
40
+ for service connection and client/engine access across different data sources.
41
+ """
42
+
43
+ service_connection: S
44
+
45
+ def __init__(self, service_connection: S) -> None:
46
+ self.service_connection = service_connection
47
+
48
+ @abstractmethod
49
+ def get_client(self) -> C:
50
+ """
51
+ Return the main client/engine/connection object for this service.
52
+ """
53
+
54
+ @abstractmethod
55
+ def test_connection(
56
+ self,
57
+ metadata: OpenMetadata,
58
+ automation_workflow: Optional[AutomationWorkflow] = None,
59
+ timeout_seconds: Optional[int] = THREE_MIN,
60
+ ) -> TestConnectionResult:
61
+ """
62
+ Test the connection to the service.
63
+ """
@@ -0,0 +1,115 @@
1
+ # Copyright 2025 Collate
2
+ # Licensed under the Collate Community License, Version 1.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ # pylint: disable=W0613
12
+
13
+ """
14
+ Query tracking implementation using SQLAlchemy event listeners
15
+ """
16
+ from datetime import datetime, timezone
17
+ from typing import Any, Dict, Optional, Tuple, Union
18
+
19
+ from pydantic import BaseModel, ConfigDict
20
+ from sqlalchemy.event import listen
21
+ from sqlalchemy.sql.elements import TextClause
22
+
23
+ from metadata.utils.logger import ingestion_logger
24
+
25
+ logger = ingestion_logger()
26
+
27
+
28
+ class QueryInfo(BaseModel):
29
+ """Class to store information about a query execution"""
30
+
31
+ model_config = ConfigDict(arbitrary_types_allowed=True)
32
+
33
+ statement: Union[str, TextClause]
34
+ parameters: Optional[Union[Dict[str, Any], Tuple[Any, ...]]]
35
+ start_time: datetime
36
+ end_time: Optional[datetime] = None
37
+ duration_ms: Optional[float] = None
38
+ error: Optional[Exception] = None
39
+
40
+
41
+ class QueryLogger:
42
+ """Class to track SQL query execution using SQLAlchemy event listeners"""
43
+
44
+ def __init__(self):
45
+ self._current_query: Optional[QueryInfo] = None
46
+
47
+ def before_cursor_execute(
48
+ self,
49
+ conn: Any,
50
+ cursor: Any,
51
+ statement: Union[str, TextClause],
52
+ parameters: Optional[Dict[str, Any]],
53
+ context: Any,
54
+ executemany: bool,
55
+ ) -> Tuple[Union[str, TextClause], Optional[Dict[str, Any]]]:
56
+ """Event listener for before cursor execute"""
57
+ self._current_query = QueryInfo(
58
+ statement=statement,
59
+ parameters=parameters,
60
+ start_time=datetime.now(timezone.utc),
61
+ )
62
+ return statement, parameters
63
+
64
+ def after_cursor_execute(
65
+ self,
66
+ conn: Any,
67
+ cursor: Any,
68
+ statement: Union[str, TextClause],
69
+ parameters: Optional[Dict[str, Any]],
70
+ context: Any,
71
+ executemany: bool,
72
+ ) -> None:
73
+ """Event listener for after cursor execute"""
74
+ if self._current_query:
75
+ query = self._current_query
76
+ query.end_time = datetime.now(timezone.utc)
77
+ query.duration_ms = (
78
+ query.end_time - query.start_time
79
+ ).total_seconds() * 1000
80
+
81
+ logger.debug(
82
+ "Query execution details:\n"
83
+ f" Start Time: {query.start_time}\n"
84
+ f" End Time: {query.end_time}\n"
85
+ f" Duration: {query.duration_ms:.2f} ms\n"
86
+ f" Query: {query.statement}\n"
87
+ f" Parameters: {query.parameters}"
88
+ )
89
+
90
+ self._current_query = None
91
+
92
+
93
+ def attach_query_tracker(engine: Any):
94
+ """
95
+ Attach query tracking event listeners to a SQLAlchemy engine
96
+
97
+ Args:
98
+ engine: SQLAlchemy engine to attach listeners to
99
+
100
+ Returns:
101
+ QueryLogger instance that can be used to access query execution data
102
+ """
103
+ tracker = QueryLogger()
104
+
105
+ listen(
106
+ engine,
107
+ "before_cursor_execute",
108
+ tracker.before_cursor_execute,
109
+ retval=True,
110
+ )
111
+ listen(
112
+ engine,
113
+ "after_cursor_execute",
114
+ tracker.after_cursor_execute,
115
+ )
@@ -38,7 +38,7 @@ from metadata.generated.schema.entity.services.connections.testConnectionResult
38
38
  )
39
39
  from metadata.generated.schema.type.basic import Timestamp
40
40
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
41
- from metadata.ingestion.source.connections import kill_active_connections
41
+ from metadata.ingestion.source.connections_utils import kill_active_connections
42
42
  from metadata.profiler.orm.functions.conn_test import ConnTestFn
43
43
  from metadata.utils.constants import THREE_MIN
44
44
  from metadata.utils.logger import cli_logger
@@ -74,8 +74,8 @@ class OMetaTestsMixin:
74
74
  Returns:
75
75
  _type_: _description_
76
76
  """
77
- resp = self.client.put(
78
- f"{self.get_suffix(TestCase)}/{quote(test_case_fqn)}/testCaseResult",
77
+ resp = self.client.post(
78
+ f"{self.get_suffix(TestCaseResult)}/{quote(test_case_fqn)}",
79
79
  test_results.model_dump_json(),
80
80
  )
81
81
 
@@ -167,7 +167,6 @@ class OMetaTestsMixin:
167
167
  self,
168
168
  test_case_fqn: str,
169
169
  entity_link: Optional[str] = None,
170
- test_suite_fqn: Optional[str] = None,
171
170
  test_definition_fqn: Optional[str] = None,
172
171
  test_case_parameter_values: Optional[List[TestCaseParameterValue]] = None,
173
172
  ):
@@ -196,7 +195,6 @@ class OMetaTestsMixin:
196
195
  CreateTestCaseRequest(
197
196
  name=test_case_fqn.split(".")[-1],
198
197
  entityLink=entity_link,
199
- testSuite=test_suite_fqn,
200
198
  testDefinition=test_definition_fqn,
201
199
  parameterValues=test_case_parameter_values,
202
200
  ) # type: ignore
@@ -253,7 +251,7 @@ class OMetaTestsMixin:
253
251
  }
254
252
 
255
253
  resp = self.client.get(
256
- f"/dataQuality/testCases/{test_case_fqn}/testCaseResult",
254
+ f"{self.get_suffix(TestCaseResult)}/{test_case_fqn}",
257
255
  params,
258
256
  )
259
257
 
@@ -167,6 +167,7 @@ from metadata.generated.schema.entity.teams.role import Role
167
167
  from metadata.generated.schema.entity.teams.team import Team
168
168
  from metadata.generated.schema.entity.teams.user import AuthenticationMechanism, User
169
169
  from metadata.generated.schema.settings.settings import Settings
170
+ from metadata.generated.schema.tests.basic import TestCaseResult
170
171
  from metadata.generated.schema.tests.testCase import TestCase
171
172
  from metadata.generated.schema.tests.testDefinition import TestDefinition
172
173
  from metadata.generated.schema.tests.testSuite import TestSuite
@@ -264,6 +265,7 @@ ROUTES = {
264
265
  TestSuite.__name__: "/dataQuality/testSuites",
265
266
  CreateTestSuiteRequest.__name__: "/dataQuality/testSuites",
266
267
  TestCase.__name__: "/dataQuality/testCases",
268
+ TestCaseResult.__name__: "/dataQuality/testCases/testCaseResults",
267
269
  CreateTestCaseRequest.__name__: "/dataQuality/testCases",
268
270
  # Analytics
269
271
  WebAnalyticEventData.__name__: "/analytics/web/events/collect",