openmetadata-ingestion 1.7.4.2__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 (790) 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/examples/workflows/tableau.yaml +1 -0
  8. metadata/generated/schema/analytics/__init__.py +1 -1
  9. metadata/generated/schema/analytics/basic.py +1 -1
  10. metadata/generated/schema/analytics/reportData.py +1 -1
  11. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  14. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  15. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  16. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  17. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  19. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  20. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  21. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  22. metadata/generated/schema/api/__init__.py +1 -1
  23. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +3 -16
  24. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -10
  25. metadata/generated/schema/api/analytics/__init__.py +1 -1
  26. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  27. metadata/generated/schema/api/automations/__init__.py +1 -1
  28. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  29. metadata/generated/schema/api/bulkAssets.py +1 -1
  30. metadata/generated/schema/api/classification/__init__.py +1 -1
  31. metadata/generated/schema/api/classification/createClassification.py +6 -2
  32. metadata/generated/schema/api/classification/createTag.py +6 -2
  33. metadata/generated/schema/api/classification/loadTags.py +1 -1
  34. metadata/generated/schema/api/createBot.py +1 -1
  35. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  36. metadata/generated/schema/api/createType.py +1 -1
  37. metadata/generated/schema/api/data/__init__.py +1 -1
  38. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  39. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  40. metadata/generated/schema/api/data/createChart.py +1 -1
  41. metadata/generated/schema/api/data/createContainer.py +1 -1
  42. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  43. metadata/generated/schema/api/data/createDashboard.py +1 -1
  44. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  45. metadata/generated/schema/api/data/createDataContract.py +66 -0
  46. metadata/generated/schema/api/data/createDatabase.py +1 -1
  47. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  48. metadata/generated/schema/api/data/createGlossary.py +1 -1
  49. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  50. metadata/generated/schema/api/data/createMetric.py +1 -1
  51. metadata/generated/schema/api/data/createMlModel.py +1 -1
  52. metadata/generated/schema/api/data/createPipeline.py +1 -1
  53. metadata/generated/schema/api/data/createQuery.py +1 -1
  54. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  55. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  56. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  57. metadata/generated/schema/api/data/createTable.py +1 -1
  58. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  59. metadata/generated/schema/api/data/createTopic.py +1 -1
  60. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  61. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  62. metadata/generated/schema/api/data/updateColumn.py +49 -0
  63. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  64. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  65. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  66. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  67. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  68. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  69. metadata/generated/schema/api/docStore/__init__.py +1 -1
  70. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  71. metadata/generated/schema/api/domains/__init__.py +1 -1
  72. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  73. metadata/generated/schema/api/domains/createDomain.py +1 -1
  74. metadata/generated/schema/api/feed/__init__.py +1 -1
  75. metadata/generated/schema/api/feed/closeTask.py +1 -1
  76. metadata/generated/schema/api/feed/createPost.py +1 -1
  77. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  78. metadata/generated/schema/api/feed/createThread.py +1 -1
  79. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  80. metadata/generated/schema/api/feed/threadCount.py +1 -1
  81. metadata/generated/schema/api/governance/__init__.py +1 -1
  82. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  83. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  84. metadata/generated/schema/api/lineage/__init__.py +1 -1
  85. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  86. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  87. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  88. metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
  89. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  90. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  91. metadata/generated/schema/api/mcp/__init__.py +3 -0
  92. metadata/generated/schema/api/mcp/mcpToolDefinition.py +54 -0
  93. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  94. metadata/generated/schema/api/policies/__init__.py +1 -1
  95. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  96. metadata/generated/schema/api/scim/__init__.py +3 -0
  97. metadata/generated/schema/api/scim/scimGroup.py +52 -0
  98. metadata/generated/schema/api/scim/scimPatchOp.py +32 -0
  99. metadata/generated/schema/api/scim/scimUser.py +83 -0
  100. metadata/generated/schema/api/search/__init__.py +1 -1
  101. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  102. metadata/generated/schema/api/services/__init__.py +1 -1
  103. metadata/generated/schema/api/services/createApiService.py +1 -1
  104. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  105. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  106. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  107. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  108. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  109. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  110. metadata/generated/schema/api/services/createSearchService.py +1 -1
  111. metadata/generated/schema/api/services/createStorageService.py +1 -1
  112. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  113. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  114. metadata/generated/schema/api/setOwner.py +1 -1
  115. metadata/generated/schema/api/teams/__init__.py +1 -1
  116. metadata/generated/schema/api/teams/createPersona.py +1 -1
  117. metadata/generated/schema/api/teams/createRole.py +1 -1
  118. metadata/generated/schema/api/teams/createTeam.py +8 -1
  119. metadata/generated/schema/api/teams/createUser.py +11 -1
  120. metadata/generated/schema/api/tests/__init__.py +1 -1
  121. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  122. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  123. metadata/generated/schema/api/tests/createTestCase.py +9 -6
  124. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  125. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  126. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  127. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  128. metadata/generated/schema/api/validateGlossaryTagsRequest.py +31 -0
  129. metadata/generated/schema/api/voteRequest.py +1 -1
  130. metadata/generated/schema/auth/__init__.py +1 -1
  131. metadata/generated/schema/auth/basicAuth.py +1 -1
  132. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  133. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  134. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  135. metadata/generated/schema/auth/emailRequest.py +1 -1
  136. metadata/generated/schema/auth/emailVerificationToken.py +2 -1
  137. metadata/generated/schema/auth/generateToken.py +1 -1
  138. metadata/generated/schema/auth/jwtAuth.py +1 -1
  139. metadata/generated/schema/auth/loginRequest.py +1 -1
  140. metadata/generated/schema/auth/logoutRequest.py +1 -1
  141. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  142. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  143. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  144. metadata/generated/schema/auth/refreshToken.py +1 -1
  145. metadata/generated/schema/auth/registrationRequest.py +1 -1
  146. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  147. metadata/generated/schema/auth/revokeToken.py +1 -1
  148. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  149. metadata/generated/schema/auth/ssoAuth.py +1 -1
  150. metadata/generated/schema/auth/supportToken.py +35 -0
  151. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  152. metadata/generated/schema/configuration/__init__.py +1 -1
  153. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  154. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  155. metadata/generated/schema/configuration/authConfig.py +1 -1
  156. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  159. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  160. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  161. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  164. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  165. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  166. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  167. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  168. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  169. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  170. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  171. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  172. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  173. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  174. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  178. metadata/generated/schema/configuration/opsConfig.py +1 -1
  179. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/searchSettings.py +1 -1
  182. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  185. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  186. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  187. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  188. metadata/generated/schema/dataInsight/__init__.py +1 -1
  189. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  190. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  191. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  192. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  193. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  194. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  195. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  196. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  197. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  198. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  199. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  200. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  201. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  202. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  203. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  204. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  205. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  206. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  207. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  208. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  209. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  210. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  211. metadata/generated/schema/email/__init__.py +1 -1
  212. metadata/generated/schema/email/emailRequest.py +1 -1
  213. metadata/generated/schema/email/emailTemplate.py +1 -1
  214. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  215. metadata/generated/schema/email/smtpSettings.py +1 -1
  216. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  217. metadata/generated/schema/entity/__init__.py +1 -1
  218. metadata/generated/schema/entity/applications/__init__.py +1 -1
  219. metadata/generated/schema/entity/applications/app.py +3 -2
  220. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  221. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  222. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  223. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  224. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  225. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  226. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  227. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  228. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  229. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  230. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  231. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  232. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  233. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  234. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  237. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +9 -1
  254. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +9 -1
  256. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  262. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  263. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  264. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  265. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  266. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  267. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  268. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  269. metadata/generated/schema/entity/automations/__init__.py +1 -1
  270. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  271. metadata/generated/schema/entity/automations/workflow.py +1 -1
  272. metadata/generated/schema/entity/bot.py +1 -1
  273. metadata/generated/schema/entity/classification/__init__.py +1 -1
  274. metadata/generated/schema/entity/classification/classification.py +7 -4
  275. metadata/generated/schema/entity/classification/tag.py +6 -3
  276. metadata/generated/schema/entity/data/__init__.py +1 -1
  277. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  278. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  279. metadata/generated/schema/entity/data/chart.py +1 -1
  280. metadata/generated/schema/entity/data/container.py +1 -1
  281. metadata/generated/schema/entity/data/dashboard.py +1 -1
  282. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  283. metadata/generated/schema/entity/data/dataContract.py +180 -0
  284. metadata/generated/schema/entity/data/database.py +1 -1
  285. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  286. metadata/generated/schema/entity/data/glossary.py +1 -1
  287. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  288. metadata/generated/schema/entity/data/metric.py +1 -1
  289. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  290. metadata/generated/schema/entity/data/pipeline.py +1 -1
  291. metadata/generated/schema/entity/data/query.py +1 -1
  292. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  293. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  294. metadata/generated/schema/entity/data/report.py +1 -1
  295. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  296. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  297. metadata/generated/schema/entity/data/table.py +5 -1
  298. metadata/generated/schema/entity/data/topic.py +1 -1
  299. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  300. metadata/generated/schema/entity/docStore/document.py +1 -1
  301. metadata/generated/schema/entity/domains/__init__.py +1 -1
  302. metadata/generated/schema/entity/domains/dataProduct.py +5 -1
  303. metadata/generated/schema/entity/domains/domain.py +5 -1
  304. metadata/generated/schema/entity/events/__init__.py +1 -1
  305. metadata/generated/schema/entity/events/webhook.py +7 -1
  306. metadata/generated/schema/entity/feed/__init__.py +1 -1
  307. metadata/generated/schema/entity/feed/assets.py +1 -1
  308. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  309. metadata/generated/schema/entity/feed/description.py +1 -1
  310. metadata/generated/schema/entity/feed/domain.py +1 -1
  311. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  312. metadata/generated/schema/entity/feed/owner.py +1 -1
  313. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  314. metadata/generated/schema/entity/feed/tag.py +1 -1
  315. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  316. metadata/generated/schema/entity/feed/thread.py +1 -1
  317. metadata/generated/schema/entity/policies/__init__.py +1 -1
  318. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  319. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +6 -1
  320. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  321. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  322. metadata/generated/schema/entity/policies/filters.py +1 -1
  323. metadata/generated/schema/entity/policies/policy.py +1 -1
  324. metadata/generated/schema/entity/services/__init__.py +1 -1
  325. metadata/generated/schema/entity/services/apiService.py +1 -1
  326. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  327. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  328. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  329. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  330. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  331. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  332. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  333. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  334. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  335. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  345. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +9 -1
  356. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +5 -1
  360. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  427. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +9 -1
  432. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  433. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  434. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  441. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  447. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  462. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  464. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  465. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  474. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  476. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  477. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  478. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  482. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  487. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  488. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  489. metadata/generated/schema/entity/services/databaseService.py +1 -1
  490. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  491. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  492. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  493. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  494. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  495. metadata/generated/schema/entity/services/messagingService.py +1 -1
  496. metadata/generated/schema/entity/services/metadataService.py +1 -1
  497. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  498. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  499. metadata/generated/schema/entity/services/searchService.py +1 -1
  500. metadata/generated/schema/entity/services/serviceType.py +1 -1
  501. metadata/generated/schema/entity/services/storageService.py +1 -1
  502. metadata/generated/schema/entity/teams/__init__.py +1 -1
  503. metadata/generated/schema/entity/teams/persona.py +1 -1
  504. metadata/generated/schema/entity/teams/role.py +1 -1
  505. metadata/generated/schema/entity/teams/team.py +8 -1
  506. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  507. metadata/generated/schema/entity/teams/user.py +11 -1
  508. metadata/generated/schema/entity/type.py +1 -1
  509. metadata/generated/schema/entity/utils/__init__.py +1 -1
  510. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  511. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  512. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  513. metadata/generated/schema/events/__init__.py +1 -1
  514. metadata/generated/schema/events/alertMetrics.py +1 -1
  515. metadata/generated/schema/events/api/__init__.py +1 -1
  516. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  517. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  518. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  519. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  520. metadata/generated/schema/events/api/typedEvent.py +1 -1
  521. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  522. metadata/generated/schema/events/eventFilterRule.py +1 -1
  523. metadata/generated/schema/events/eventSubscription.py +1 -1
  524. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  525. metadata/generated/schema/events/failedEvent.py +1 -1
  526. metadata/generated/schema/events/failedEventResponse.py +1 -1
  527. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  528. metadata/generated/schema/events/statusContext.py +1 -1
  529. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  530. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  531. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  532. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  533. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  534. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  535. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  536. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  537. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  538. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  539. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  540. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  541. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  542. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  543. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  544. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  545. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  546. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  547. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  548. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  549. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  550. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  551. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  552. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  553. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  554. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  555. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  556. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  557. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  558. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  559. metadata/generated/schema/jobs/__init__.py +1 -1
  560. metadata/generated/schema/jobs/backgroundJob.py +12 -3
  561. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  562. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  563. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  564. metadata/generated/schema/metadataIngestion/application.py +1 -1
  565. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  566. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  567. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  568. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  569. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  571. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  572. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  573. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  574. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  575. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  576. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  577. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  578. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  579. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  580. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  581. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  582. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  583. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  584. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  585. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  586. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  587. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  588. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  589. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  590. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  591. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  592. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  593. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  594. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  595. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  596. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  597. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  598. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  599. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  600. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  601. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  602. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  603. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  604. metadata/generated/schema/monitoring/__init__.py +1 -1
  605. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  606. metadata/generated/schema/scim/__init__.py +3 -0
  607. metadata/generated/schema/scim/scimConfiguration.py +32 -0
  608. metadata/generated/schema/search/__init__.py +1 -1
  609. metadata/generated/schema/search/aggregationRequest.py +1 -1
  610. metadata/generated/schema/search/searchRequest.py +8 -1
  611. metadata/generated/schema/security/__init__.py +1 -1
  612. metadata/generated/schema/security/client/__init__.py +1 -1
  613. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  614. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  615. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  616. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  617. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  618. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  619. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  620. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  621. metadata/generated/schema/security/credentials/__init__.py +1 -1
  622. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  623. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  624. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  625. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  626. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  627. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  628. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  629. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  630. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  631. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  632. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  633. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  634. metadata/generated/schema/security/sasl/__init__.py +1 -1
  635. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  636. metadata/generated/schema/security/secrets/__init__.py +1 -1
  637. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  638. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  639. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  640. metadata/generated/schema/security/securityConfiguration.py +1 -1
  641. metadata/generated/schema/security/ssl/__init__.py +1 -1
  642. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  643. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  644. metadata/generated/schema/settings/__init__.py +1 -1
  645. metadata/generated/schema/settings/settings.py +2 -1
  646. metadata/generated/schema/system/__init__.py +1 -1
  647. metadata/generated/schema/system/entityError.py +1 -1
  648. metadata/generated/schema/system/eventPublisherJob.py +8 -1
  649. metadata/generated/schema/system/indexingError.py +1 -1
  650. metadata/generated/schema/system/limitsResponse.py +1 -1
  651. metadata/generated/schema/system/ui/__init__.py +1 -1
  652. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  653. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  654. metadata/generated/schema/system/ui/page.py +1 -1
  655. metadata/generated/schema/system/ui/tab.py +1 -1
  656. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  657. metadata/generated/schema/system/validationResponse.py +1 -1
  658. metadata/generated/schema/tests/__init__.py +1 -1
  659. metadata/generated/schema/tests/assigned.py +1 -1
  660. metadata/generated/schema/tests/basic.py +1 -1
  661. metadata/generated/schema/tests/customMetric.py +1 -1
  662. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  663. metadata/generated/schema/tests/resolved.py +1 -1
  664. metadata/generated/schema/tests/testCase.py +1 -1
  665. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  666. metadata/generated/schema/tests/testDefinition.py +1 -1
  667. metadata/generated/schema/tests/testSuite.py +1 -1
  668. metadata/generated/schema/type/__init__.py +1 -1
  669. metadata/generated/schema/type/apiSchema.py +1 -1
  670. metadata/generated/schema/type/assetCertification.py +1 -1
  671. metadata/generated/schema/type/auditLog.py +1 -1
  672. metadata/generated/schema/type/basic.py +1 -1
  673. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  674. metadata/generated/schema/type/changeEvent.py +1 -1
  675. metadata/generated/schema/type/changeEventType.py +1 -1
  676. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  677. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  678. metadata/generated/schema/type/csvDocumentation.py +1 -1
  679. metadata/generated/schema/type/csvErrorType.py +1 -1
  680. metadata/generated/schema/type/csvFile.py +1 -1
  681. metadata/generated/schema/type/csvImportResult.py +1 -1
  682. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  683. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  684. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  685. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  686. metadata/generated/schema/type/customProperty.py +1 -1
  687. metadata/generated/schema/type/dailyCount.py +1 -1
  688. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  689. metadata/generated/schema/type/entityHierarchy.py +1 -1
  690. metadata/generated/schema/type/entityHistory.py +1 -1
  691. metadata/generated/schema/type/entityLineage.py +1 -1
  692. metadata/generated/schema/type/entityReference.py +1 -1
  693. metadata/generated/schema/type/entityReferenceList.py +1 -1
  694. metadata/generated/schema/type/entityRelationship.py +1 -1
  695. metadata/generated/schema/type/entityUsage.py +1 -1
  696. metadata/generated/schema/type/filterPattern.py +1 -1
  697. metadata/generated/schema/type/function.py +1 -1
  698. metadata/generated/schema/type/include.py +1 -1
  699. metadata/generated/schema/type/jdbcConnection.py +1 -1
  700. metadata/generated/schema/type/lifeCycle.py +1 -1
  701. metadata/generated/schema/type/paging.py +1 -1
  702. metadata/generated/schema/type/profile.py +1 -1
  703. metadata/generated/schema/type/queryParserData.py +1 -1
  704. metadata/generated/schema/type/reaction.py +1 -1
  705. metadata/generated/schema/type/schedule.py +1 -1
  706. metadata/generated/schema/type/schema.py +1 -1
  707. metadata/generated/schema/type/tableQuery.py +1 -1
  708. metadata/generated/schema/type/tableUsageCount.py +1 -1
  709. metadata/generated/schema/type/tagLabel.py +1 -1
  710. metadata/generated/schema/type/usageDetails.py +1 -1
  711. metadata/generated/schema/type/usageRequest.py +1 -1
  712. metadata/generated/schema/type/votes.py +1 -1
  713. metadata/great_expectations/action.py +4 -8
  714. metadata/great_expectations/action1xx.py +395 -0
  715. metadata/ingestion/connections/builders.py +14 -4
  716. metadata/ingestion/connections/connection.py +63 -0
  717. metadata/ingestion/connections/query_logger.py +115 -0
  718. metadata/ingestion/connections/test_connections.py +1 -1
  719. metadata/ingestion/ometa/mixins/tests_mixin.py +3 -5
  720. metadata/ingestion/ometa/routes.py +2 -0
  721. metadata/ingestion/sink/metadata_rest.py +54 -11
  722. metadata/ingestion/source/api/api_service.py +2 -7
  723. metadata/ingestion/source/connections.py +80 -14
  724. metadata/ingestion/source/connections_utils.py +32 -0
  725. metadata/ingestion/source/dashboard/dashboard_service.py +26 -15
  726. metadata/ingestion/source/dashboard/powerbi/metadata.py +32 -20
  727. metadata/ingestion/source/dashboard/superset/connection.py +8 -8
  728. metadata/ingestion/source/dashboard/superset/queries.py +1 -1
  729. metadata/ingestion/source/dashboard/tableau/metadata.py +12 -2
  730. metadata/ingestion/source/dashboard/tableau/models.py +12 -2
  731. metadata/ingestion/source/database/bigquery/connection.py +13 -9
  732. metadata/ingestion/source/database/bigquery/helper.py +11 -9
  733. metadata/ingestion/source/database/bigquery/metadata.py +102 -13
  734. metadata/ingestion/source/database/bigquery/queries.py +15 -3
  735. metadata/ingestion/source/database/common_db_source.py +2 -4
  736. metadata/ingestion/source/database/database_service.py +2 -7
  737. metadata/ingestion/source/database/datalake/metadata.py +1 -1
  738. metadata/ingestion/source/database/dbt/metadata.py +0 -5
  739. metadata/ingestion/source/database/mysql/connection.py +52 -45
  740. metadata/ingestion/source/database/mysql/service_spec.py +2 -0
  741. metadata/ingestion/source/database/query_parser_source.py +2 -7
  742. metadata/ingestion/source/database/redshift/connection.py +1 -1
  743. metadata/ingestion/source/database/sample_data.py +1 -1
  744. metadata/ingestion/source/database/saphana/lineage.py +2 -7
  745. metadata/ingestion/source/database/sas/metadata.py +2 -7
  746. metadata/ingestion/source/database/snowflake/metadata.py +1 -2
  747. metadata/ingestion/source/database/snowflake/utils.py +0 -4
  748. metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +26 -17
  749. metadata/ingestion/source/database/unitycatalog/connection.py +33 -0
  750. metadata/ingestion/source/database/unitycatalog/lineage.py +2 -7
  751. metadata/ingestion/source/database/unitycatalog/metadata.py +126 -13
  752. metadata/ingestion/source/database/unitycatalog/queries.py +19 -0
  753. metadata/ingestion/source/messaging/messaging_service.py +2 -7
  754. metadata/ingestion/source/metadata/alationsink/metadata.py +2 -7
  755. metadata/ingestion/source/metadata/amundsen/metadata.py +2 -7
  756. metadata/ingestion/source/metadata/atlas/metadata.py +2 -7
  757. metadata/ingestion/source/mlmodel/mlmodel_service.py +2 -7
  758. metadata/ingestion/source/pipeline/airflow/connection.py +4 -6
  759. metadata/ingestion/source/pipeline/nifi/metadata.py +133 -3
  760. metadata/ingestion/source/pipeline/pipeline_service.py +20 -7
  761. metadata/ingestion/source/search/search_service.py +2 -7
  762. metadata/ingestion/source/storage/storage_service.py +2 -7
  763. metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +3 -3
  764. metadata/profiler/metrics/static/not_regexp_match_count.py +4 -3
  765. metadata/profiler/metrics/static/regexp_match_count.py +3 -2
  766. metadata/profiler/orm/functions/length.py +1 -0
  767. metadata/profiler/orm/functions/md5.py +9 -0
  768. metadata/profiler/orm/functions/modulo.py +1 -0
  769. metadata/profiler/orm/functions/random_num.py +4 -0
  770. metadata/profiler/orm/functions/regexp.py +40 -0
  771. metadata/profiler/orm/functions/table_metric_computer.py +34 -8
  772. metadata/profiler/orm/registry.py +1 -0
  773. metadata/profiler/processor/core.py +2 -2
  774. metadata/profiler/processor/default.py +29 -28
  775. metadata/profiler/processor/metric_filter.py +16 -3
  776. metadata/profiler/processor/models.py +14 -4
  777. metadata/profiler/source/database/base/profiler_resolver.py +35 -0
  778. metadata/profiler/source/database/base/profiler_source.py +45 -30
  779. metadata/profiler/source/profiler_source_interface.py +8 -13
  780. metadata/sampler/sampler_interface.py +15 -10
  781. metadata/sampler/sqlalchemy/bigquery/sampler.py +7 -0
  782. metadata/utils/dependency_injector/dependency_injector.py +403 -0
  783. metadata/utils/service_spec/service_spec.py +66 -10
  784. metadata/workflow/profiler.py +2 -7
  785. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/METADATA +516 -505
  786. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/RECORD +790 -767
  787. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/LICENSE +0 -0
  788. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/WHEEL +0 -0
  789. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/entry_points.txt +0 -0
  790. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,403 @@
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
+ Dependency injection utilities for OpenMetadata.
13
+
14
+ This module provides a type-safe dependency injection system that uses Python's type hints
15
+ to automatically inject dependencies into functions and methods.
16
+
17
+ Example:
18
+ ```python
19
+ from typing import Annotated
20
+ from metadata.utils.dependency_injector import Inject, inject, DependencyContainer
21
+
22
+ class Database:
23
+ def __init__(self, connection_string: str):
24
+ self.connection_string = connection_string
25
+
26
+ # Register a dependency
27
+ container = DependencyContainer[Callable]()
28
+ container.register(Database, lambda: Database("postgresql://localhost:5432"))
29
+
30
+ # Use dependency injection
31
+ @inject
32
+ def get_user(user_id: int, db: Inject[Database]) -> dict:
33
+ return db.query(f"SELECT * FROM users WHERE id = {user_id}")
34
+ ```
35
+ """
36
+ from functools import wraps
37
+ from threading import RLock
38
+ from typing import (
39
+ TYPE_CHECKING,
40
+ Annotated,
41
+ Any,
42
+ Callable,
43
+ Dict,
44
+ Generic,
45
+ Optional,
46
+ Type,
47
+ TypeVar,
48
+ Union,
49
+ get_args,
50
+ get_origin,
51
+ get_type_hints,
52
+ )
53
+
54
+ from metadata.utils.logger import utils_logger
55
+
56
+ logger = utils_logger()
57
+
58
+ T = TypeVar("T")
59
+
60
+
61
+ class DependencyInjectionError(Exception):
62
+ """Base exception for dependency injection errors."""
63
+
64
+ pass
65
+
66
+
67
+ class DependencyNotFoundError(DependencyInjectionError):
68
+ """Raised when a required dependency is not found in the container."""
69
+
70
+ pass
71
+
72
+
73
+ class InvalidInjectionTypeError(DependencyInjectionError):
74
+ """Raised when an invalid injection type is used."""
75
+
76
+ pass
77
+
78
+
79
+ if TYPE_CHECKING:
80
+ Inject = Annotated[Union[T, None], "Inject Marker"]
81
+ else:
82
+
83
+ class Inject(Generic[T]):
84
+ """
85
+ Type for dependency injection that uses types as keys.
86
+
87
+ This type is used to mark parameters that should be automatically injected
88
+ by the dependency container. Injection is always treated as Optioonal. It can be overriden.
89
+
90
+ Type Parameters:
91
+ T: The type of the dependency to inject
92
+
93
+ Example:
94
+ ```python
95
+ @inject
96
+ def my_function(db: Inject[Database]):
97
+ # db will be automatically injected
98
+ pass
99
+ ```
100
+ """
101
+
102
+
103
+ class DependencyContainer:
104
+ """
105
+ Thread-safe singleton container for managing dependencies.
106
+
107
+ This container uses RLock to support reentrant locking, allowing the same thread
108
+ to acquire the lock multiple times. It maintains two dictionaries:
109
+ - _dependencies: The original registered dependencies
110
+ - _overrides: Temporary overrides that take precedence over original dependencies
111
+
112
+ Type Parameters:
113
+ T: The base type for all dependencies in this container
114
+
115
+ Example:
116
+ ```python
117
+ container = DependencyContainer[Callable]()
118
+ container.register(Database, lambda: Database("postgresql://localhost:5432"))
119
+ container.override(Database, lambda: Database("postgresql://test:5432"))
120
+ ```
121
+ """
122
+
123
+ _instance: Optional["DependencyContainer"] = None
124
+ _lock = RLock()
125
+ _dependencies: Dict[str, Callable[[], Any]] = {}
126
+ _overrides: Dict[str, Callable[[], Any]] = {}
127
+
128
+ def __new__(cls) -> "DependencyContainer":
129
+ if cls._instance is None:
130
+ with cls._lock:
131
+ if cls._instance is None:
132
+ cls._instance = super().__new__(cls)
133
+ return cls._instance
134
+
135
+ def get_key(self, dependency_type: Type[Any]) -> str:
136
+ """
137
+ Get the key for a dependency.
138
+ """
139
+ if get_origin(dependency_type) is type:
140
+ inner_type = get_args(dependency_type)[0]
141
+ return f"Type[{inner_type.__name__}]"
142
+ return dependency_type.__name__
143
+
144
+ def register(
145
+ self, dependency_type: Type[Any], dependency: Callable[[], Any]
146
+ ) -> None:
147
+ """
148
+ Register a dependency with the container.
149
+
150
+ Args:
151
+ dependency_type: The type of the dependency to register
152
+ dependency: The dependency to register (usually a factory function)
153
+
154
+ Example:
155
+ ```python
156
+ container.register(Database, lambda: Database("postgresql://localhost:5432"))
157
+ container.register(Type[Metrics], lambda: Metrics) # For registering types themselves
158
+ ```
159
+ """
160
+ with self._lock:
161
+ self._dependencies[self.get_key(dependency_type)] = dependency
162
+
163
+ def override(
164
+ self, dependency_type: Type[Any], dependency: Callable[[], Any]
165
+ ) -> None:
166
+ """
167
+ Override a dependency with a new implementation.
168
+
169
+ The override takes precedence over the original dependency and is useful
170
+ for testing or temporary changes.
171
+
172
+ Args:
173
+ dependency_type: The type of the dependency to override
174
+ dependency: The new dependency implementation
175
+
176
+ Example:
177
+ ```python
178
+ container.override(Database, lambda: Database("postgresql://test:5432"))
179
+ ```
180
+ """
181
+ with self._lock:
182
+ self._overrides[self.get_key(dependency_type)] = dependency
183
+
184
+ def remove_override(self, dependency_type: Type[T]) -> None:
185
+ """
186
+ Remove an override for a dependency.
187
+
188
+ Args:
189
+ dependency_type: The type of the dependency override to remove
190
+
191
+ Example:
192
+ ```python
193
+ container.remove_override(Database)
194
+ ```
195
+ """
196
+ with self._lock:
197
+ self._overrides.pop(self.get_key(dependency_type), None)
198
+
199
+ def get(self, dependency_type: Type[Any]) -> Optional[Any]:
200
+ """
201
+ Get a dependency from the container.
202
+
203
+ Checks overrides first, then falls back to original dependencies.
204
+
205
+ Args:
206
+ dependency_type: The type of the dependency to retrieve
207
+
208
+ Returns:
209
+ The dependency if found, None otherwise
210
+
211
+ Example:
212
+ ```python
213
+ db_factory = container.get(Database)
214
+ if db_factory:
215
+ db = db_factory()
216
+ ```
217
+ """
218
+ with self._lock:
219
+ factory = self._overrides.get(
220
+ self.get_key(dependency_type)
221
+ ) or self._dependencies.get(self.get_key(dependency_type))
222
+ if factory is None:
223
+ return None
224
+ return factory()
225
+
226
+ def clear(self) -> None:
227
+ """
228
+ Clear all dependencies and overrides.
229
+
230
+ Example:
231
+ ```python
232
+ container.clear() # Remove all registered dependencies and overrides
233
+ ```
234
+ """
235
+ with self._lock:
236
+ self._dependencies.clear()
237
+ self._overrides.clear()
238
+
239
+ def has(self, dependency_type: Type[T]) -> bool:
240
+ """
241
+ Check if a dependency exists in the container.
242
+
243
+ Args:
244
+ dependency_type: The type to check
245
+
246
+ Returns:
247
+ True if the dependency exists, False otherwise
248
+
249
+ Example:
250
+ ```python
251
+ if container.has(Database):
252
+ print("Database dependency is registered")
253
+ ```"""
254
+ with self._lock:
255
+ return (
256
+ self.get_key(dependency_type) in self._overrides
257
+ or self.get_key(dependency_type) in self._dependencies
258
+ )
259
+
260
+
261
+ def inject(func: Callable[..., Any]) -> Callable[..., Any]:
262
+ """
263
+ Decorator to inject dependencies based on type hints.
264
+
265
+ This decorator automatically injects dependencies into function parameters
266
+ based on their type hints. It uses types as keys for dependency lookup and
267
+ allows explicit injection by passing dependencies as keyword arguments.
268
+
269
+ Args:
270
+ func: The function to inject dependencies into
271
+
272
+ Returns:
273
+ A function with dependencies injected
274
+
275
+ Example:
276
+ ```python
277
+ @inject
278
+ def get_user(user_id: int, db: Inject[Database]) -> dict:
279
+ return db.query(f"SELECT * FROM users WHERE id = {user_id}")
280
+
281
+ # Dependencies can also be passed explicitly
282
+ get_user(user_id=1, db=Database("postgresql://localhost:5432"))
283
+ ```
284
+ """
285
+
286
+ @wraps(func)
287
+ def wrapper(*args: Any, **kwargs: Any) -> Any:
288
+ container = DependencyContainer()
289
+ type_hints = get_type_hints(func, include_extras=True)
290
+
291
+ for param_name, param_type in type_hints.items():
292
+ # Skip if parameter is already provided explicitly
293
+ if param_name in kwargs:
294
+ continue
295
+
296
+ # Check if it's an Inject type
297
+ if is_inject_type(param_type):
298
+ dependency_type = extract_inject_arg(param_type)
299
+ dependency = container.get(dependency_type)
300
+ if dependency is None:
301
+ raise DependencyNotFoundError(
302
+ f"Dependency of type {dependency_type} not found in container. "
303
+ f"Make sure to register it using container.register({dependency_type.__name__}, ...)"
304
+ )
305
+ kwargs[param_name] = dependency
306
+
307
+ return func(*args, **kwargs)
308
+
309
+ return wrapper
310
+
311
+
312
+ def is_inject_type(tp: Any) -> bool:
313
+ """
314
+ Check if a type is an Inject type or Optional[Inject].
315
+
316
+ Args:
317
+ tp: The type to check
318
+
319
+ Returns:
320
+ True if the type is Inject or Optional[Inject], False otherwise
321
+ """
322
+ origin = get_origin(tp)
323
+ if origin is Inject:
324
+ return True
325
+ if origin is Union:
326
+ args = get_args(tp)
327
+ return any(get_origin(arg) is Inject for arg in args)
328
+ return False
329
+
330
+
331
+ def extract_inject_arg(tp: Any) -> Any:
332
+ """
333
+ Extract the type argument from an Inject type.
334
+
335
+ Args:
336
+ tp: The type to extract from
337
+
338
+ Returns:
339
+ The type argument from the Inject type
340
+
341
+ Raises:
342
+ InvalidInjectionTypeError: If the type is not Inject or Optional[Inject]
343
+ """
344
+ origin = get_origin(tp)
345
+ if origin is Inject:
346
+ return get_args(tp)[0]
347
+ if origin is Union:
348
+ for arg in get_args(tp):
349
+ if get_origin(arg) is Inject:
350
+ return get_args(arg)[0]
351
+ raise InvalidInjectionTypeError(
352
+ f"Type {tp} is not Inject or Optional[Inject]. "
353
+ f"Use Annotated[YourType, 'Inject'] to mark a parameter for injection."
354
+ )
355
+
356
+
357
+ def inject_class_attributes(cls: Type[Any]) -> Type[Any]:
358
+ """
359
+ Decorator to inject dependencies into class-level (static) attributes based on type hints.
360
+
361
+ This decorator automatically injects dependencies into class attributes
362
+ based on their type hints. The dependencies are shared across all instances
363
+ of the class.
364
+
365
+ Args:
366
+ cls: The class to inject dependencies into
367
+
368
+ Returns:
369
+ A class with dependencies injected into its class-level attributes
370
+
371
+ Example:
372
+ ```python
373
+ @inject_class_attributes
374
+ class UserService:
375
+ db: ClassVar[Inject[Database]]
376
+ cache: ClassVar[Inject[Cache]]
377
+
378
+ @classmethod
379
+ def get_user(cls, user_id: int) -> dict:
380
+ return cls.db.query(f"SELECT * FROM users WHERE id = {user_id}")
381
+ ```
382
+ """
383
+ container = DependencyContainer()
384
+ type_hints = get_type_hints(cls, include_extras=True)
385
+
386
+ # Inject dependencies into class attributes
387
+ for attr_name, attr_type in type_hints.items():
388
+ # Skip if attribute is already set
389
+ if hasattr(cls, attr_name):
390
+ continue
391
+
392
+ # Check if it's an Inject type
393
+ if is_inject_type(attr_type):
394
+ dependency_type = extract_inject_arg(attr_type)
395
+ dependency = container.get(dependency_type)
396
+ if dependency is None:
397
+ raise DependencyNotFoundError(
398
+ f"Dependency of type {dependency_type} not found in container. "
399
+ f"Make sure to register it using container.register({dependency_type.__name__}, ...)"
400
+ )
401
+ setattr(cls, attr_name, dependency)
402
+
403
+ return cls
@@ -2,16 +2,19 @@
2
2
  Manifests are used to store class information
3
3
  """
4
4
 
5
- from typing import Optional, Type, cast
5
+ from abc import ABC, abstractmethod
6
+ from typing import Any, Optional, Type, cast
6
7
 
7
8
  from pydantic import model_validator
8
9
 
9
10
  from metadata.data_quality.interface.test_suite_interface import TestSuiteInterface
10
11
  from metadata.generated.schema.entity.services.serviceType import ServiceType
11
12
  from metadata.ingestion.api.steps import Source
13
+ from metadata.ingestion.connections.connection import BaseConnection
12
14
  from metadata.ingestion.models.custom_pydantic import BaseModel
13
15
  from metadata.profiler.interface.profiler_interface import ProfilerInterface
14
16
  from metadata.sampler.sampler_interface import SamplerInterface
17
+ from metadata.utils.dependency_injector.dependency_injector import Inject, inject
15
18
  from metadata.utils.importer import (
16
19
  TYPE_SEPARATOR,
17
20
  DynamicImportException,
@@ -24,6 +27,14 @@ from metadata.utils.logger import utils_logger
24
27
  logger = utils_logger()
25
28
 
26
29
 
30
+ class SourceLoader(ABC):
31
+ @abstractmethod
32
+ def __call__(
33
+ self, service_type: ServiceType, source_type: str, from_: str
34
+ ) -> Type[Any]:
35
+ """Load the service spec for a given service type and source type."""
36
+
37
+
27
38
  class BaseSpec(BaseModel):
28
39
  """
29
40
  # The OpenMetadata Ingestion Service Specification (Spec)
@@ -53,6 +64,7 @@ class BaseSpec(BaseModel):
53
64
  usage_source_class: Optional[str] = None
54
65
  sampler_class: Optional[str] = None
55
66
  data_diff: Optional[str] = None
67
+ connection_class: Optional[str] = None
56
68
 
57
69
  @model_validator(mode="before")
58
70
  @classmethod
@@ -65,8 +77,13 @@ class BaseSpec(BaseModel):
65
77
  return values
66
78
 
67
79
  @classmethod
80
+ @inject
68
81
  def get_for_source(
69
- cls, service_type: ServiceType, source_type: str, from_: str = "ingestion"
82
+ cls,
83
+ service_type: ServiceType,
84
+ source_type: str,
85
+ from_: str = "ingestion",
86
+ source_loader: Inject[SourceLoader] = None,
70
87
  ) -> "BaseSpec":
71
88
  """Retrieves the manifest for a given source type. If it does not exist will attempt to retrieve
72
89
  a default manifest for the service type.
@@ -79,14 +96,26 @@ class BaseSpec(BaseModel):
79
96
  Returns:
80
97
  BaseSpec: The manifest for the source type.
81
98
  """
82
- return cls.model_validate(
83
- import_from_module(
84
- "metadata.{}.source.{}.{}.{}.ServiceSpec".format( # pylint: disable=C0209
85
- from_,
86
- service_type.name.lower(),
87
- get_module_dir(source_type),
88
- "service_spec",
89
- )
99
+ if not source_loader:
100
+ raise ValueError("Source loader is required")
101
+
102
+ return cls.model_validate(source_loader(service_type, source_type, from_))
103
+
104
+
105
+ class DefaultSourceLoader(SourceLoader):
106
+ def __call__(
107
+ self,
108
+ service_type: ServiceType,
109
+ source_type: str,
110
+ from_: str = "ingestion",
111
+ ) -> Type[Any]:
112
+ """Default implementation for loading service specifications."""
113
+ return import_from_module(
114
+ "metadata.{}.source.{}.{}.{}.ServiceSpec".format( # pylint: disable=C0209
115
+ from_,
116
+ service_type.name.lower(),
117
+ get_module_dir(source_type),
118
+ "service_spec",
90
119
  )
91
120
  )
92
121
 
@@ -110,6 +139,10 @@ def import_profiler_class(
110
139
  service_type: ServiceType, source_type: str
111
140
  ) -> Type[ProfilerInterface]:
112
141
  class_path = BaseSpec.get_for_source(service_type, source_type).profiler_class
142
+ if not class_path:
143
+ raise ValueError(
144
+ f"Profiler class not found for service type {service_type} and source type {source_type}"
145
+ )
113
146
  return cast(Type[ProfilerInterface], import_from_module(class_path))
114
147
 
115
148
 
@@ -127,6 +160,10 @@ def import_test_suite_class(
127
160
  ).test_suite_class
128
161
  else:
129
162
  raise
163
+ if not class_path:
164
+ raise ValueError(
165
+ f"Test suite class not found for service type {service_type} and source type {source_type}"
166
+ )
130
167
  return cast(Type[TestSuiteInterface], import_from_module(class_path))
131
168
 
132
169
 
@@ -144,4 +181,23 @@ def import_sampler_class(
144
181
  ).sampler_class
145
182
  else:
146
183
  raise
184
+ if not class_path:
185
+ raise ValueError(
186
+ f"Sampler class not found for service type {service_type} and source type {source_type}"
187
+ )
147
188
  return cast(Type[SamplerInterface], import_from_module(class_path))
189
+
190
+
191
+ def import_connection_class(
192
+ service_type: ServiceType,
193
+ source_type: str,
194
+ ) -> Type[BaseConnection]:
195
+ """
196
+ Import the connection class for a given service type and source type.
197
+ """
198
+ class_path = BaseSpec.get_for_source(service_type, source_type).connection_class
199
+ if not class_path:
200
+ raise ValueError(
201
+ f"Connection class not found for service type {service_type} and source type {source_type}"
202
+ )
203
+ return cast(Type[BaseConnection], import_from_module(class_path))
@@ -13,10 +13,7 @@ Workflow definition for the profiler
13
13
  """
14
14
 
15
15
  from metadata.ingestion.api.steps import Processor, Sink
16
- from metadata.ingestion.connections.test_connections import (
17
- raise_test_connection_exception,
18
- )
19
- from metadata.ingestion.source.connections import get_test_connection_fn
16
+ from metadata.ingestion.source.connections import test_connection_common
20
17
  from metadata.profiler.processor.processor import ProfilerProcessor
21
18
  from metadata.profiler.source.metadata import OpenMetadataSource
22
19
  from metadata.profiler.source.metadata_ext import OpenMetadataSourceExt
@@ -75,9 +72,7 @@ class ProfilerWorkflow(IngestionWorkflow):
75
72
  service_config = self.config.source.serviceConnection.root.config
76
73
  conn = get_ssl_connection(service_config)
77
74
 
78
- test_connection_fn = get_test_connection_fn(service_config)
79
- result = test_connection_fn(self.metadata, conn, service_config)
80
- raise_test_connection_exception(result)
75
+ test_connection_common(self.metadata, conn, service_config)
81
76
 
82
77
  return main(self)
83
78