openmetadata-ingestion 1.9.12.0__py3-none-any.whl → 1.10.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 (949) hide show
  1. metadata/cli/common.py +0 -1
  2. metadata/examples/workflows/bigquery.yaml +1 -0
  3. metadata/examples/workflows/databricks.yaml +9 -1
  4. metadata/examples/workflows/databricks_usage.yaml +7 -1
  5. metadata/examples/workflows/metabase.yaml +1 -0
  6. metadata/examples/workflows/unity_catalog.yaml +7 -1
  7. metadata/examples/workflows/unity_catalog_usage.yaml +7 -1
  8. metadata/generated/antlr/EntityLinkLexer.py +406 -432
  9. metadata/generated/schema/analytics/__init__.py +1 -1
  10. metadata/generated/schema/analytics/basic.py +1 -1
  11. metadata/generated/schema/analytics/reportData.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  14. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  15. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  16. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  17. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  19. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  20. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  21. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  22. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  23. metadata/generated/schema/api/__init__.py +1 -1
  24. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  25. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  26. metadata/generated/schema/api/analytics/__init__.py +1 -1
  27. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  28. metadata/generated/schema/api/automations/__init__.py +1 -1
  29. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  30. metadata/generated/schema/api/bulkAssets.py +1 -1
  31. metadata/generated/schema/api/classification/__init__.py +1 -1
  32. metadata/generated/schema/api/classification/createClassification.py +52 -1
  33. metadata/generated/schema/api/classification/createTag.py +29 -2
  34. metadata/generated/schema/api/classification/createTagWithRecognizers.py +67 -0
  35. metadata/generated/schema/api/classification/loadTags.py +1 -1
  36. metadata/generated/schema/api/configuration/__init__.py +3 -0
  37. metadata/generated/schema/api/configuration/rdfConfiguration.py +47 -0
  38. metadata/generated/schema/api/createBot.py +1 -1
  39. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  40. metadata/generated/schema/api/createType.py +1 -1
  41. metadata/generated/schema/api/data/__init__.py +1 -1
  42. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  43. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  44. metadata/generated/schema/api/data/createChart.py +1 -1
  45. metadata/generated/schema/api/data/createContainer.py +1 -1
  46. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  47. metadata/generated/schema/api/data/createDashboard.py +1 -1
  48. metadata/generated/schema/api/data/createDashboardDataModel.py +5 -1
  49. metadata/generated/schema/api/data/createDataContract.py +33 -3
  50. metadata/generated/schema/api/data/createDatabase.py +1 -1
  51. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  52. metadata/generated/schema/api/data/createDirectory.py +1 -1
  53. metadata/generated/schema/api/data/createEntityProfile.py +1 -1
  54. metadata/generated/schema/api/data/createFile.py +1 -1
  55. metadata/generated/schema/api/data/createGlossary.py +1 -1
  56. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  57. metadata/generated/schema/api/data/createMetric.py +8 -1
  58. metadata/generated/schema/api/data/createMlModel.py +1 -1
  59. metadata/generated/schema/api/data/createPipeline.py +1 -1
  60. metadata/generated/schema/api/data/createQuery.py +1 -1
  61. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  62. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  63. metadata/generated/schema/api/data/createSpreadsheet.py +9 -1
  64. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  65. metadata/generated/schema/api/data/createTable.py +1 -1
  66. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  67. metadata/generated/schema/api/data/createTopic.py +1 -1
  68. metadata/generated/schema/api/data/createWorksheet.py +1 -1
  69. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  70. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  71. metadata/generated/schema/api/data/updateColumn.py +1 -1
  72. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  73. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  74. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  75. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  76. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  77. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  78. metadata/generated/schema/api/docStore/__init__.py +1 -1
  79. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  80. metadata/generated/schema/api/domains/__init__.py +1 -1
  81. metadata/generated/schema/api/domains/createDataProduct.py +7 -1
  82. metadata/generated/schema/api/domains/createDomain.py +1 -1
  83. metadata/generated/schema/api/entityRelationship/__init__.py +1 -1
  84. metadata/generated/schema/api/entityRelationship/entityRelationshipDirection.py +1 -1
  85. metadata/generated/schema/api/entityRelationship/esEntityRelationshipData.py +1 -1
  86. metadata/generated/schema/api/entityRelationship/relationshipRef.py +1 -1
  87. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipRequest.py +1 -1
  88. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipResult.py +1 -1
  89. metadata/generated/schema/api/entityRelationship/searchSchemaEntityRelationshipResult.py +1 -1
  90. metadata/generated/schema/api/events/__init__.py +3 -0
  91. metadata/generated/schema/api/events/createNotificationTemplate.py +61 -0
  92. metadata/generated/schema/api/events/notificationTemplateValidationRequest.py +30 -0
  93. metadata/generated/schema/api/events/notificationTemplateValidationResponse.py +36 -0
  94. metadata/generated/schema/api/feed/__init__.py +1 -1
  95. metadata/generated/schema/api/feed/closeTask.py +1 -1
  96. metadata/generated/schema/api/feed/createPost.py +1 -1
  97. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  98. metadata/generated/schema/api/feed/createThread.py +1 -1
  99. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  100. metadata/generated/schema/api/feed/threadCount.py +1 -1
  101. metadata/generated/schema/api/governance/__init__.py +1 -1
  102. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  103. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  104. metadata/generated/schema/api/lineage/__init__.py +1 -1
  105. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  106. metadata/generated/schema/api/lineage/entityCountLineageRequest.py +66 -0
  107. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  108. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  109. metadata/generated/schema/api/lineage/lineagePaginationInfo.py +57 -0
  110. metadata/generated/schema/api/lineage/nodeInformation.py +9 -1
  111. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  112. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  113. metadata/generated/schema/api/mcp/__init__.py +1 -1
  114. metadata/generated/schema/api/mcp/mcpSearchResponse.py +1 -1
  115. metadata/generated/schema/api/mcp/mcpToolDefinition.py +1 -1
  116. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  117. metadata/generated/schema/api/policies/__init__.py +1 -1
  118. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  119. metadata/generated/schema/api/rdf/__init__.py +3 -0
  120. metadata/generated/schema/api/rdf/sparqlQuery.py +57 -0
  121. metadata/generated/schema/api/rdf/sparqlResponse.py +56 -0
  122. metadata/generated/schema/api/scim/__init__.py +1 -1
  123. metadata/generated/schema/api/scim/scimGroup.py +1 -1
  124. metadata/generated/schema/api/scim/scimPatchOp.py +1 -1
  125. metadata/generated/schema/api/scim/scimUser.py +1 -1
  126. metadata/generated/schema/api/search/__init__.py +1 -1
  127. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  128. metadata/generated/schema/api/services/__init__.py +1 -1
  129. metadata/generated/schema/api/services/createApiService.py +1 -1
  130. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  131. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  132. metadata/generated/schema/api/services/createDriveService.py +9 -2
  133. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  134. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  135. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  136. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  137. metadata/generated/schema/api/services/createSearchService.py +1 -1
  138. metadata/generated/schema/api/services/createSecurityService.py +1 -1
  139. metadata/generated/schema/api/services/createStorageService.py +1 -1
  140. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  141. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +8 -1
  142. metadata/generated/schema/api/setOwner.py +1 -1
  143. metadata/generated/schema/api/teams/__init__.py +1 -1
  144. metadata/generated/schema/api/teams/createPersona.py +1 -1
  145. metadata/generated/schema/api/teams/createRole.py +1 -1
  146. metadata/generated/schema/api/teams/createTeam.py +1 -1
  147. metadata/generated/schema/api/teams/createUser.py +1 -1
  148. metadata/generated/schema/api/tests/__init__.py +1 -1
  149. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  150. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  151. metadata/generated/schema/api/tests/createTestCase.py +5 -1
  152. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  153. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  154. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  155. metadata/generated/schema/api/tests/createTestSuite.py +5 -1
  156. metadata/generated/schema/api/tests/moveGlossaryTermRequest.py +1 -1
  157. metadata/generated/schema/api/validateGlossaryTagsRequest.py +1 -1
  158. metadata/generated/schema/api/voteRequest.py +1 -1
  159. metadata/generated/schema/auth/__init__.py +1 -1
  160. metadata/generated/schema/auth/basicAuth.py +1 -1
  161. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  162. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  163. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  164. metadata/generated/schema/auth/emailRequest.py +1 -1
  165. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  166. metadata/generated/schema/auth/generateToken.py +1 -1
  167. metadata/generated/schema/auth/jwtAuth.py +1 -1
  168. metadata/generated/schema/auth/loginRequest.py +1 -1
  169. metadata/generated/schema/auth/logoutRequest.py +1 -1
  170. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  171. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  172. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  173. metadata/generated/schema/auth/refreshToken.py +1 -1
  174. metadata/generated/schema/auth/registrationRequest.py +1 -1
  175. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  176. metadata/generated/schema/auth/revokeToken.py +1 -1
  177. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  178. metadata/generated/schema/auth/ssoAuth.py +1 -1
  179. metadata/generated/schema/auth/supportToken.py +1 -1
  180. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  181. metadata/generated/schema/configuration/__init__.py +1 -1
  182. metadata/generated/schema/configuration/aiPlatformConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  185. metadata/generated/schema/configuration/authConfig.py +1 -1
  186. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  187. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  188. metadata/generated/schema/configuration/cacheConfiguration.py +1 -1
  189. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  190. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  191. metadata/generated/schema/configuration/elasticSearchConfiguration.py +2 -1
  192. metadata/generated/schema/configuration/entityRulesSettings.py +1 -1
  193. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  195. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  197. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  198. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  199. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  200. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  201. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  202. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  203. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  204. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  205. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  206. metadata/generated/schema/configuration/logStorageConfiguration.py +105 -0
  207. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  208. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  209. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  210. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  211. metadata/generated/schema/configuration/opsConfig.py +1 -1
  212. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +9 -2
  213. metadata/generated/schema/configuration/profilerConfiguration.py +2 -1
  214. metadata/generated/schema/configuration/searchSettings.py +7 -2
  215. metadata/generated/schema/configuration/securityConfiguration.py +26 -0
  216. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  217. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  218. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  219. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  220. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  221. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  222. metadata/generated/schema/dataInsight/__init__.py +1 -1
  223. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  224. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  225. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  226. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  227. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  228. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  229. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  230. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  231. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  232. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  233. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  234. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  235. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  236. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  237. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  238. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  239. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  240. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  241. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  242. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  243. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  244. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  245. metadata/generated/schema/email/__init__.py +1 -1
  246. metadata/generated/schema/email/emailRequest.py +1 -1
  247. metadata/generated/schema/email/emailTemplate.py +1 -1
  248. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  249. metadata/generated/schema/email/smtpSettings.py +1 -1
  250. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  251. metadata/generated/schema/entity/__init__.py +1 -1
  252. metadata/generated/schema/entity/applications/__init__.py +1 -1
  253. metadata/generated/schema/entity/applications/app.py +1 -1
  254. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  255. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  262. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/external/automator/addTermsAction.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  271. metadata/generated/schema/entity/applications/configuration/external/automator/propagationStopConfig.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  273. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  276. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  277. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  278. metadata/generated/schema/entity/applications/configuration/external/automator/removeTermsAction.py +1 -1
  279. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  280. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  281. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  282. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  283. metadata/generated/schema/entity/applications/configuration/external/metadataExporterAppConfig.py +1 -1
  284. metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/__init__.py +1 -1
  285. metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/bigQueryConnection.py +1 -1
  286. metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/databricksConnection.py +18 -6
  287. metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/redshiftConnection.py +1 -1
  288. metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/snowflakeConnection.py +1 -1
  289. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  290. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  291. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  292. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  293. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  294. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  295. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  296. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  297. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  298. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  299. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  300. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  301. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  302. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  303. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  304. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  305. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  306. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  307. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  308. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  309. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  310. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  311. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  312. metadata/generated/schema/entity/automations/__init__.py +1 -1
  313. metadata/generated/schema/entity/automations/queryRunnerRequest.py +46 -0
  314. metadata/generated/schema/entity/automations/response/__init__.py +3 -0
  315. metadata/generated/schema/entity/automations/response/queryRunnerResponse.py +51 -0
  316. metadata/generated/schema/entity/automations/testServiceConnection.py +3 -1
  317. metadata/generated/schema/entity/automations/testSparkEngineConnection.py +31 -0
  318. metadata/generated/schema/entity/automations/workflow.py +8 -2
  319. metadata/generated/schema/entity/bot.py +1 -1
  320. metadata/generated/schema/entity/classification/__init__.py +1 -1
  321. metadata/generated/schema/entity/classification/classification.py +57 -2
  322. metadata/generated/schema/entity/classification/tag.py +41 -3
  323. metadata/generated/schema/entity/data/__init__.py +1 -1
  324. metadata/generated/schema/entity/data/apiCollection.py +8 -1
  325. metadata/generated/schema/entity/data/apiEndpoint.py +6 -1
  326. metadata/generated/schema/entity/data/chart.py +7 -1
  327. metadata/generated/schema/entity/data/container.py +6 -1
  328. metadata/generated/schema/entity/data/dashboard.py +6 -1
  329. metadata/generated/schema/entity/data/dashboardDataModel.py +13 -1
  330. metadata/generated/schema/entity/data/dataContract.py +238 -2
  331. metadata/generated/schema/entity/data/database.py +6 -1
  332. metadata/generated/schema/entity/data/databaseSchema.py +8 -1
  333. metadata/generated/schema/entity/data/directory.py +6 -1
  334. metadata/generated/schema/entity/data/file.py +6 -1
  335. metadata/generated/schema/entity/data/glossary.py +6 -1
  336. metadata/generated/schema/entity/data/glossaryTerm.py +8 -12
  337. metadata/generated/schema/entity/data/metric.py +18 -1
  338. metadata/generated/schema/entity/data/mlmodel.py +6 -1
  339. metadata/generated/schema/entity/data/pipeline.py +136 -2
  340. metadata/generated/schema/entity/data/query.py +6 -1
  341. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  342. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  343. metadata/generated/schema/entity/data/report.py +6 -1
  344. metadata/generated/schema/entity/data/searchIndex.py +6 -1
  345. metadata/generated/schema/entity/data/spreadsheet.py +8 -4
  346. metadata/generated/schema/entity/data/storedProcedure.py +8 -1
  347. metadata/generated/schema/entity/data/table.py +95 -1
  348. metadata/generated/schema/entity/data/topic.py +6 -1
  349. metadata/generated/schema/entity/data/worksheet.py +6 -1
  350. metadata/generated/schema/entity/datacontract/__init__.py +1 -1
  351. metadata/generated/schema/entity/datacontract/dataContractResult.py +1 -1
  352. metadata/generated/schema/entity/datacontract/qualityValidation.py +1 -1
  353. metadata/generated/schema/entity/datacontract/schemaValidation.py +1 -1
  354. metadata/generated/schema/entity/datacontract/semanticsValidation.py +1 -1
  355. metadata/generated/schema/entity/datacontract/slaValidation.py +1 -1
  356. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  357. metadata/generated/schema/entity/docStore/document.py +1 -1
  358. metadata/generated/schema/entity/domains/__init__.py +1 -1
  359. metadata/generated/schema/entity/domains/dataProduct.py +153 -2
  360. metadata/generated/schema/entity/domains/domain.py +1 -1
  361. metadata/generated/schema/entity/events/__init__.py +1 -1
  362. metadata/generated/schema/entity/events/notificationTemplate.py +111 -0
  363. metadata/generated/schema/entity/events/webhook.py +1 -1
  364. metadata/generated/schema/entity/feed/__init__.py +1 -1
  365. metadata/generated/schema/entity/feed/assets.py +1 -1
  366. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  367. metadata/generated/schema/entity/feed/description.py +1 -1
  368. metadata/generated/schema/entity/feed/domain.py +1 -1
  369. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  370. metadata/generated/schema/entity/feed/owner.py +1 -1
  371. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  372. metadata/generated/schema/entity/feed/tag.py +1 -1
  373. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  374. metadata/generated/schema/entity/feed/thread.py +1 -1
  375. metadata/generated/schema/entity/policies/__init__.py +1 -1
  376. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  377. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  378. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  379. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  380. metadata/generated/schema/entity/policies/filters.py +1 -1
  381. metadata/generated/schema/entity/policies/policy.py +1 -1
  382. metadata/generated/schema/entity/services/__init__.py +1 -1
  383. metadata/generated/schema/entity/services/apiService.py +1 -1
  384. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  385. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  386. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  388. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  389. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  390. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  391. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  392. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  393. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/dashboard/grafanaConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +17 -4
  399. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  404. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  405. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  406. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  407. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  408. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/dashboard/thoughtSpotConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +9 -1
  420. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/database/databricks/__init__.py +3 -0
  435. metadata/generated/schema/entity/services/connections/database/databricks/azureAdSetup.py +37 -0
  436. metadata/generated/schema/entity/services/connections/database/databricks/databricksOAuth.py +30 -0
  437. metadata/generated/schema/entity/services/connections/database/databricks/personalAccessToken.py +23 -0
  438. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +14 -6
  439. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  440. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  441. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  442. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  448. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  449. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/database/epicConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  459. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  463. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  464. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  479. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/database/serviceNowConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/database/ssasConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  490. metadata/generated/schema/entity/services/connections/database/timescaleConnection.py +162 -0
  491. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  492. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +14 -6
  493. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  494. metadata/generated/schema/entity/services/connections/drive/__init__.py +1 -1
  495. metadata/generated/schema/entity/services/connections/drive/customDriveConnection.py +34 -1
  496. metadata/generated/schema/entity/services/connections/drive/googleDriveConnection.py +34 -1
  497. metadata/generated/schema/entity/services/connections/drive/sharePointConnection.py +34 -1
  498. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  499. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  500. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  501. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  502. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  503. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  504. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  505. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  506. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  507. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  508. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  509. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  510. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  511. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  512. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  513. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  514. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  515. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  516. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  517. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  518. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  519. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  520. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  521. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  522. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  523. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  524. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  525. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  526. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  527. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  528. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  529. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  530. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  531. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  532. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  533. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  534. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  535. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  536. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  537. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  538. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  539. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  540. metadata/generated/schema/entity/services/connections/pipeline/snowplowConnection.py +93 -0
  541. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  542. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  543. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  544. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  545. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  546. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  547. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  548. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  549. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  550. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  551. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  552. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  553. metadata/generated/schema/entity/services/connections/security/__init__.py +1 -1
  554. metadata/generated/schema/entity/services/connections/security/ranger/__init__.py +1 -1
  555. metadata/generated/schema/entity/services/connections/security/ranger/basicAuth.py +1 -1
  556. metadata/generated/schema/entity/services/connections/security/rangerConnection.py +1 -1
  557. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  558. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  559. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  560. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  561. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  562. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  563. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  564. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  565. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  566. metadata/generated/schema/entity/services/databaseService.py +4 -1
  567. metadata/generated/schema/entity/services/driveService.py +1 -1
  568. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  569. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +8 -1
  570. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  571. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  572. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  573. metadata/generated/schema/entity/services/messagingService.py +1 -1
  574. metadata/generated/schema/entity/services/metadataService.py +1 -1
  575. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  576. metadata/generated/schema/entity/services/pipelineService.py +4 -1
  577. metadata/generated/schema/entity/services/searchService.py +1 -1
  578. metadata/generated/schema/entity/services/securityService.py +1 -1
  579. metadata/generated/schema/entity/services/serviceType.py +1 -1
  580. metadata/generated/schema/entity/services/storageService.py +1 -1
  581. metadata/generated/schema/entity/teams/__init__.py +1 -1
  582. metadata/generated/schema/entity/teams/persona.py +1 -1
  583. metadata/generated/schema/entity/teams/role.py +1 -1
  584. metadata/generated/schema/entity/teams/team.py +1 -1
  585. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  586. metadata/generated/schema/entity/teams/user.py +1 -1
  587. metadata/generated/schema/entity/type.py +1 -1
  588. metadata/generated/schema/entity/utils/__init__.py +1 -1
  589. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  590. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  591. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  592. metadata/generated/schema/events/__init__.py +1 -1
  593. metadata/generated/schema/events/alertMetrics.py +1 -1
  594. metadata/generated/schema/events/api/__init__.py +1 -1
  595. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  596. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  597. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  598. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  599. metadata/generated/schema/events/api/typedEvent.py +1 -1
  600. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  601. metadata/generated/schema/events/eventFilterRule.py +1 -1
  602. metadata/generated/schema/events/eventSubscription.py +16 -1
  603. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  604. metadata/generated/schema/events/failedEvent.py +1 -1
  605. metadata/generated/schema/events/failedEventResponse.py +1 -1
  606. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  607. metadata/generated/schema/events/statusContext.py +1 -1
  608. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  609. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  610. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  611. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  612. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  613. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  614. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  615. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  616. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  617. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  618. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  619. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  620. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  621. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  622. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +11 -12
  623. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  624. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  625. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  626. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  627. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  628. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  629. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  630. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  631. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  632. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  633. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  634. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  635. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  636. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  637. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  638. metadata/generated/schema/jobs/__init__.py +1 -1
  639. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  640. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  641. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  642. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  643. metadata/generated/schema/metadataIngestion/application.py +8 -1
  644. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  645. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  646. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  647. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  648. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  649. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  650. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  651. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  652. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  653. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  654. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  655. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  656. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  657. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  658. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  659. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  660. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  661. metadata/generated/schema/metadataIngestion/driveServiceMetadataPipeline.py +1 -1
  662. metadata/generated/schema/metadataIngestion/engine/__init__.py +1 -1
  663. metadata/generated/schema/metadataIngestion/engine/nativeEngineConfig.py +1 -1
  664. metadata/generated/schema/metadataIngestion/engine/sparkEngineConfig.py +1 -1
  665. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  666. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  667. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +29 -2
  668. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  669. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  670. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  671. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  672. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  673. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  674. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  675. metadata/generated/schema/metadataIngestion/securityServiceMetadataPipeline.py +1 -1
  676. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  677. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  678. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  679. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  680. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  681. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  682. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  683. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  684. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  685. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  686. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  687. metadata/generated/schema/metadataIngestion/workflow.py +8 -1
  688. metadata/generated/schema/monitoring/__init__.py +1 -1
  689. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  690. metadata/generated/schema/scim/__init__.py +1 -1
  691. metadata/generated/schema/scim/scimConfiguration.py +1 -1
  692. metadata/generated/schema/search/__init__.py +1 -1
  693. metadata/generated/schema/search/aggregationRequest.py +1 -1
  694. metadata/generated/schema/search/searchRequest.py +8 -1
  695. metadata/generated/schema/security/__init__.py +1 -1
  696. metadata/generated/schema/security/client/__init__.py +1 -1
  697. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  698. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  699. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  700. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  701. metadata/generated/schema/security/client/oidcClientConfig.py +6 -10
  702. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  703. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  704. metadata/generated/schema/security/client/samlSSOClientConfig.py +6 -6
  705. metadata/generated/schema/security/credentials/__init__.py +1 -1
  706. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  707. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  708. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  709. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  710. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  711. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  712. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  713. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  714. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  715. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  716. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  717. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  718. metadata/generated/schema/security/credentials/kubernetesCredentials.py +1 -1
  719. metadata/generated/schema/security/sasl/__init__.py +1 -1
  720. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  721. metadata/generated/schema/security/secrets/__init__.py +1 -1
  722. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  723. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  724. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  725. metadata/generated/schema/security/securityConfiguration.py +1 -1
  726. metadata/generated/schema/security/ssl/__init__.py +1 -1
  727. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  728. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  729. metadata/generated/schema/settings/__init__.py +1 -1
  730. metadata/generated/schema/settings/settings.py +5 -2
  731. metadata/generated/schema/system/__init__.py +1 -1
  732. metadata/generated/schema/system/entityError.py +1 -1
  733. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  734. metadata/generated/schema/system/indexingError.py +1 -1
  735. metadata/generated/schema/system/limitsResponse.py +1 -1
  736. metadata/generated/schema/system/securityValidationResponse.py +62 -0
  737. metadata/generated/schema/system/ui/__init__.py +1 -1
  738. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  739. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  740. metadata/generated/schema/system/ui/page.py +5 -1
  741. metadata/generated/schema/system/ui/tab.py +1 -1
  742. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  743. metadata/generated/schema/system/validationResponse.py +8 -1
  744. metadata/generated/schema/tests/__init__.py +1 -1
  745. metadata/generated/schema/tests/assigned.py +1 -1
  746. metadata/generated/schema/tests/basic.py +1 -1
  747. metadata/generated/schema/tests/customMetric.py +1 -1
  748. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  749. metadata/generated/schema/tests/resolved.py +1 -1
  750. metadata/generated/schema/tests/testCase.py +26 -2
  751. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  752. metadata/generated/schema/tests/testDefinition.py +1 -1
  753. metadata/generated/schema/tests/testSuite.py +5 -1
  754. metadata/generated/schema/type/__init__.py +1 -1
  755. metadata/generated/schema/type/apiSchema.py +1 -1
  756. metadata/generated/schema/type/assetCertification.py +1 -1
  757. metadata/generated/schema/type/auditLog.py +1 -1
  758. metadata/generated/schema/type/basic.py +9 -1
  759. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  760. metadata/generated/schema/type/changeEvent.py +1 -1
  761. metadata/generated/schema/type/changeEventType.py +1 -1
  762. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  763. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  764. metadata/generated/schema/type/contextRecognizer.py +50 -0
  765. metadata/generated/schema/type/contractExecutionStatus.py +1 -1
  766. metadata/generated/schema/type/csvDocumentation.py +1 -1
  767. metadata/generated/schema/type/csvErrorType.py +1 -1
  768. metadata/generated/schema/type/csvFile.py +1 -1
  769. metadata/generated/schema/type/csvImportResult.py +1 -1
  770. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  771. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  772. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  773. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  774. metadata/generated/schema/type/customProperty.py +1 -1
  775. metadata/generated/schema/type/customRecognizer.py +39 -0
  776. metadata/generated/schema/type/dailyCount.py +1 -1
  777. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  778. metadata/generated/schema/type/denyListRecognizer.py +37 -0
  779. metadata/generated/schema/type/entityHierarchy.py +1 -1
  780. metadata/generated/schema/type/entityHistory.py +1 -1
  781. metadata/generated/schema/type/entityLineage.py +1 -1
  782. metadata/generated/schema/type/entityProfile.py +1 -1
  783. metadata/generated/schema/type/entityReference.py +1 -1
  784. metadata/generated/schema/type/entityReferenceList.py +1 -1
  785. metadata/generated/schema/type/entityRelationship/__init__.py +1 -1
  786. metadata/generated/schema/type/entityRelationship/nodeInformation.py +1 -1
  787. metadata/generated/schema/type/entityUsage.py +1 -1
  788. metadata/generated/schema/type/filterPattern.py +1 -1
  789. metadata/generated/schema/type/function.py +1 -1
  790. metadata/generated/schema/type/include.py +1 -1
  791. metadata/generated/schema/type/jdbcConnection.py +1 -1
  792. metadata/generated/schema/type/layerPaging.py +1 -1
  793. metadata/generated/schema/type/lifeCycle.py +1 -1
  794. metadata/generated/schema/type/paging.py +1 -1
  795. metadata/generated/schema/type/patternRecognizer.py +39 -0
  796. metadata/generated/schema/type/personaPreferences.py +1 -1
  797. metadata/generated/schema/type/piiEntity.py +48 -0
  798. metadata/generated/schema/type/predefinedRecognizer.py +85 -0
  799. metadata/generated/schema/type/profile.py +1 -1
  800. metadata/generated/schema/type/queryParserData.py +1 -1
  801. metadata/generated/schema/type/reaction.py +1 -1
  802. metadata/generated/schema/type/recognizer.py +159 -0
  803. metadata/generated/schema/type/recognizerFeedback.py +120 -0
  804. metadata/generated/schema/type/recognizers/__init__.py +3 -0
  805. metadata/generated/schema/type/recognizers/patterns.py +29 -0
  806. metadata/generated/schema/type/recognizers/regexFlags.py +29 -0
  807. metadata/generated/schema/type/schedule.py +1 -1
  808. metadata/generated/schema/type/schema.py +1 -1
  809. metadata/generated/schema/type/status.py +16 -0
  810. metadata/generated/schema/type/tableQuery.py +1 -1
  811. metadata/generated/schema/type/tableUsageCount.py +1 -1
  812. metadata/generated/schema/type/tagLabel.py +8 -1
  813. metadata/generated/schema/type/usageDetails.py +1 -1
  814. metadata/generated/schema/type/usageRequest.py +1 -1
  815. metadata/generated/schema/type/votes.py +1 -1
  816. metadata/ingestion/models/patch_request.py +2 -0
  817. metadata/ingestion/ometa/client.py +2 -2
  818. metadata/ingestion/ometa/mixins/csv_mixin.py +180 -0
  819. metadata/ingestion/ometa/mixins/ingestion_pipeline_mixin.py +26 -0
  820. metadata/ingestion/ometa/mixins/logs_mixin.py +336 -0
  821. metadata/ingestion/ometa/mixins/patch_mixin.py +23 -9
  822. metadata/ingestion/ometa/ometa_api.py +20 -1
  823. metadata/ingestion/ometa/routes.py +3 -0
  824. metadata/ingestion/source/dashboard/domodashboard/metadata.py +19 -9
  825. metadata/ingestion/source/dashboard/looker/metadata.py +4 -0
  826. metadata/ingestion/source/dashboard/metabase/client.py +31 -9
  827. metadata/ingestion/source/dashboard/metabase/metadata.py +4 -0
  828. metadata/ingestion/source/dashboard/powerbi/metadata.py +27 -0
  829. metadata/ingestion/source/dashboard/redash/metadata.py +4 -0
  830. metadata/ingestion/source/dashboard/sigma/metadata.py +4 -0
  831. metadata/ingestion/source/dashboard/superset/api_source.py +2 -0
  832. metadata/ingestion/source/dashboard/superset/db_source.py +2 -0
  833. metadata/ingestion/source/dashboard/superset/mixin.py +2 -0
  834. metadata/ingestion/source/dashboard/tableau/client.py +21 -10
  835. metadata/ingestion/source/dashboard/tableau/metadata.py +7 -1
  836. metadata/ingestion/source/database/bigquery/connection.py +4 -0
  837. metadata/ingestion/source/database/bigquery/metadata.py +39 -26
  838. metadata/ingestion/source/database/column_type_parser.py +1 -1
  839. metadata/ingestion/source/database/common_pg_mappings.py +7 -0
  840. metadata/ingestion/source/database/databricks/auth.py +99 -0
  841. metadata/ingestion/source/database/databricks/client.py +7 -2
  842. metadata/ingestion/source/database/databricks/connection.py +63 -5
  843. metadata/ingestion/source/database/databricks/queries.py +61 -0
  844. metadata/ingestion/source/database/iceberg/metadata.py +44 -1
  845. metadata/ingestion/source/database/mariadb/metadata.py +86 -1
  846. metadata/ingestion/source/database/mariadb/models.py +36 -0
  847. metadata/ingestion/source/database/mariadb/queries.py +43 -0
  848. metadata/ingestion/source/database/oracle/connection.py +4 -0
  849. metadata/ingestion/source/database/oracle/queries.py +18 -0
  850. metadata/ingestion/source/database/postgres/connection.py +6 -0
  851. metadata/ingestion/source/database/postgres/queries.py +22 -0
  852. metadata/ingestion/source/database/sample_data.py +24 -8
  853. metadata/ingestion/source/database/snowflake/metadata.py +16 -6
  854. metadata/ingestion/source/database/sql_column_handler.py +11 -3
  855. metadata/ingestion/source/database/timescale/__init__.py +3 -0
  856. metadata/ingestion/source/database/timescale/connection.py +103 -0
  857. metadata/ingestion/source/database/timescale/lineage.py +124 -0
  858. metadata/ingestion/source/database/timescale/metadata.py +228 -0
  859. metadata/ingestion/source/database/timescale/models.py +60 -0
  860. metadata/ingestion/source/database/timescale/queries.py +96 -0
  861. metadata/ingestion/source/database/timescale/query_parser.py +106 -0
  862. metadata/ingestion/source/database/timescale/service_spec.py +12 -0
  863. metadata/ingestion/source/database/timescale/usage.py +43 -0
  864. metadata/ingestion/source/database/timescale/utils.py +545 -0
  865. metadata/ingestion/source/database/unitycatalog/client.py +34 -0
  866. metadata/ingestion/source/database/unitycatalog/connection.py +36 -4
  867. metadata/ingestion/source/messaging/kafka/connection.py +13 -4
  868. metadata/ingestion/source/metadata/amundsen/client.py +6 -6
  869. metadata/ingestion/source/mlmodel/mlmodel_service.py +75 -1
  870. metadata/ingestion/source/search/elasticsearch/connection.py +1 -1
  871. metadata/pii/algorithms/classifiers.py +63 -1
  872. metadata/pii/algorithms/presidio_recognizer_factory.py +302 -0
  873. metadata/pii/algorithms/presidio_utils.py +38 -10
  874. metadata/pii/algorithms/utils.py +4 -0
  875. metadata/pii/base_processor.py +2 -1
  876. metadata/pii/processor.py +10 -4
  877. metadata/pii/processor_factory.py +28 -0
  878. metadata/pii/scanners/custom_ner_scanner.py +290 -0
  879. metadata/pii/tag_analyzer.py +124 -0
  880. metadata/pii/tag_processor.py +100 -0
  881. metadata/profiler/metrics/hybrid/cardinality_distribution.py +232 -0
  882. metadata/profiler/metrics/hybrid/histogram.py +1 -1
  883. metadata/profiler/metrics/registry.py +4 -0
  884. metadata/profiler/orm/converter/converter_registry.py +2 -0
  885. metadata/profiler/orm/converter/trino/__init__.py +14 -0
  886. metadata/profiler/orm/converter/trino/converter.py +39 -0
  887. metadata/profiler/orm/functions/conn_test.py +5 -0
  888. metadata/profiler/orm/registry.py +6 -0
  889. metadata/profiler/orm/types/__init__.py +10 -0
  890. metadata/profiler/orm/types/trino.py +70 -0
  891. metadata/profiler/processor/default.py +1 -0
  892. metadata/sdk/__init__.py +188 -0
  893. metadata/sdk/api/__init__.py +7 -0
  894. metadata/sdk/api/lineage.py +421 -0
  895. metadata/sdk/api/search.py +382 -0
  896. metadata/sdk/client.py +91 -0
  897. metadata/sdk/config.py +121 -0
  898. metadata/sdk/entities/__init__.py +64 -0
  899. metadata/sdk/entities/apicollections.py +19 -0
  900. metadata/sdk/entities/apiendpoints.py +19 -0
  901. metadata/sdk/entities/base.py +487 -0
  902. metadata/sdk/entities/charts.py +17 -0
  903. metadata/sdk/entities/classifications.py +21 -0
  904. metadata/sdk/entities/containers.py +17 -0
  905. metadata/sdk/entities/custom_properties.py +144 -0
  906. metadata/sdk/entities/dashboard_services.py +18 -0
  907. metadata/sdk/entities/dashboarddatamodels.py +21 -0
  908. metadata/sdk/entities/dashboards.py +17 -0
  909. metadata/sdk/entities/database_services.py +18 -0
  910. metadata/sdk/entities/databases.py +17 -0
  911. metadata/sdk/entities/databaseschemas.py +19 -0
  912. metadata/sdk/entities/datacontracts.py +19 -0
  913. metadata/sdk/entities/dataproducts.py +19 -0
  914. metadata/sdk/entities/domains.py +17 -0
  915. metadata/sdk/entities/glossaries.py +17 -0
  916. metadata/sdk/entities/glossary_terms.py +18 -0
  917. metadata/sdk/entities/glossaryterms.py +19 -0
  918. metadata/sdk/entities/metrics.py +49 -0
  919. metadata/sdk/entities/mlmodels.py +17 -0
  920. metadata/sdk/entities/pipelines.py +17 -0
  921. metadata/sdk/entities/queries.py +17 -0
  922. metadata/sdk/entities/searchindexes.py +19 -0
  923. metadata/sdk/entities/storedprocedures.py +19 -0
  924. metadata/sdk/entities/tables.py +68 -0
  925. metadata/sdk/entities/tags.py +17 -0
  926. metadata/sdk/entities/teams.py +17 -0
  927. metadata/sdk/entities/testcases.py +17 -0
  928. metadata/sdk/entities/testdefinitions.py +19 -0
  929. metadata/sdk/entities/testsuites.py +17 -0
  930. metadata/sdk/entities/users.py +17 -0
  931. metadata/sdk/examples/builder_end_to_end.py +387 -0
  932. metadata/sdk/types.py +15 -0
  933. metadata/utils/datalake/datalake_utils.py +121 -0
  934. metadata/utils/elasticsearch.py +3 -0
  935. metadata/utils/fqn.py +18 -2
  936. metadata/utils/importer.py +3 -2
  937. metadata/utils/logger.py +10 -0
  938. metadata/utils/sqa_utils.py +3 -0
  939. metadata/utils/streamable_logger.py +525 -0
  940. metadata/workflow/base.py +41 -1
  941. metadata/workflow/classification.py +2 -2
  942. metadata/workflow/workflow_resource_metrics.py +111 -0
  943. metadata/workflow/workflow_status_mixin.py +1 -1
  944. {openmetadata_ingestion-1.9.12.0.dist-info → openmetadata_ingestion-1.10.0.0.dist-info}/METADATA +552 -552
  945. {openmetadata_ingestion-1.9.12.0.dist-info → openmetadata_ingestion-1.10.0.0.dist-info}/RECORD +949 -843
  946. {openmetadata_ingestion-1.9.12.0.dist-info → openmetadata_ingestion-1.10.0.0.dist-info}/LICENSE +0 -0
  947. {openmetadata_ingestion-1.9.12.0.dist-info → openmetadata_ingestion-1.10.0.0.dist-info}/WHEEL +0 -0
  948. {openmetadata_ingestion-1.9.12.0.dist-info → openmetadata_ingestion-1.10.0.0.dist-info}/entry_points.txt +0 -0
  949. {openmetadata_ingestion-1.9.12.0.dist-info → openmetadata_ingestion-1.10.0.0.dist-info}/top_level.txt +0 -0
@@ -16,8 +16,9 @@ from copy import deepcopy
16
16
  from dataclasses import dataclass
17
17
  from typing import Optional, Union
18
18
 
19
+ from confluent_kafka import DeserializingConsumer
19
20
  from confluent_kafka.admin import AdminClient, KafkaException
20
- from confluent_kafka.avro import AvroConsumer
21
+ from confluent_kafka.schema_registry.avro import AvroDeserializer
21
22
  from confluent_kafka.schema_registry.schema_registry_client import SchemaRegistryClient
22
23
 
23
24
  from metadata.generated.schema.entity.automations.workflow import (
@@ -71,6 +72,7 @@ def get_connection(
71
72
  """
72
73
  consumer_config = deepcopy(connection.consumerConfig) or {}
73
74
  schema_registry_config = deepcopy(connection.schemaRegistryConfig) or {}
75
+
74
76
  if connection.saslUsername or connection.saslPassword or connection.saslMechanism:
75
77
  if connection.saslUsername:
76
78
  consumer_config["sasl.username"] = connection.saslUsername
@@ -98,19 +100,26 @@ def get_connection(
98
100
 
99
101
  schema_registry_client = None
100
102
  consumer_client = None
103
+
101
104
  if connection.schemaRegistryURL:
102
105
  schema_registry_config["url"] = str(connection.schemaRegistryURL)
103
106
  schema_registry_client = SchemaRegistryClient(schema_registry_config)
107
+
104
108
  consumer_config["bootstrap.servers"] = connection.bootstrapServers
105
109
  if "group.id" not in consumer_config:
106
110
  consumer_config["group.id"] = "openmetadata-consumer"
107
111
  if "auto.offset.reset" not in consumer_config:
108
112
  consumer_config["auto.offset.reset"] = "largest"
109
113
  consumer_config["enable.auto.commit"] = False
110
- logger.debug(f"Using Kafka consumer config: {consumer_config}")
111
- consumer_client = AvroConsumer(
112
- consumer_config, schema_registry=schema_registry_client
114
+
115
+ avro_deserializer = AvroDeserializer(
116
+ schema_registry_client=schema_registry_client
113
117
  )
118
+ consumer_config["value.deserializer"] = avro_deserializer
119
+
120
+ logger.debug(f"Using Kafka consumer config: {consumer_config}")
121
+
122
+ consumer_client = DeserializingConsumer(consumer_config)
114
123
 
115
124
  return KafkaClient(
116
125
  admin_client=admin_client,
@@ -59,16 +59,16 @@ class Neo4jHelper:
59
59
  """
60
60
  Create a Neo4j connection to Database
61
61
  """
62
- trust = (
63
- neo4j.TRUST_SYSTEM_CA_SIGNED_CERTIFICATES
64
- if self.conf.neo4j_validate_ssl
65
- else neo4j.TRUST_ALL_CERTIFICATES
66
- )
62
+ if self.conf.neo4j_validate_ssl:
63
+ trusted_certificates = neo4j.TrustSystemCAs()
64
+ else:
65
+ trusted_certificates = neo4j.TrustAll()
66
+
67
67
  return GraphDatabase.driver(
68
68
  self.graph_url,
69
69
  auth=(self.conf.username, self.conf.password),
70
70
  encrypted=self.conf.neo4j_encrypted,
71
- trust=trust,
71
+ trusted_certificates=trusted_certificates,
72
72
  )
73
73
 
74
74
  def _execute_query(self, transaction: Any, query: str) -> Any:
@@ -12,12 +12,13 @@
12
12
  Base class for ingesting mlmodel services
13
13
  """
14
14
  from abc import ABC, abstractmethod
15
- from typing import Any, Iterable, List, Optional, Set
15
+ from typing import Any, Iterable, List, Optional, Set, Tuple
16
16
 
17
17
  from pydantic import Field
18
18
  from typing_extensions import Annotated
19
19
 
20
20
  from metadata.generated.schema.api.data.createMlModel import CreateMlModelRequest
21
+ from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
21
22
  from metadata.generated.schema.entity.data.mlmodel import (
22
23
  MlFeature,
23
24
  MlHyperParameter,
@@ -39,6 +40,7 @@ from metadata.ingestion.api.models import Either
39
40
  from metadata.ingestion.api.steps import Source
40
41
  from metadata.ingestion.api.topology_runner import TopologyRunnerMixin
41
42
  from metadata.ingestion.models.delete_entity import DeleteEntity
43
+ from metadata.ingestion.models.ometa_lineage import OMetaLineageRequest
42
44
  from metadata.ingestion.models.topology import (
43
45
  NodeStage,
44
46
  ServiceTopology,
@@ -92,6 +94,12 @@ class MlModelServiceTopology(ServiceTopology):
92
94
  consumer=["mlmodel_service"],
93
95
  use_cache=True,
94
96
  ),
97
+ NodeStage(
98
+ type_=AddLineageRequest,
99
+ processor="yield_mlmodel_lineage",
100
+ consumer=["mlmodel_service"],
101
+ nullable=True,
102
+ ),
95
103
  ],
96
104
  )
97
105
 
@@ -208,3 +216,69 @@ class MlModelServiceSource(TopologyRunnerMixin, Source, ABC):
208
216
 
209
217
  def prepare(self):
210
218
  """By default, nothing to prepare"""
219
+
220
+ def get_db_service_prefixes(self) -> List[str]:
221
+ """
222
+ Get the list of db service prefixes
223
+ """
224
+ return (
225
+ self.source_config.lineageInformation.dbServicePrefixes or []
226
+ if hasattr(self.source_config, "lineageInformation")
227
+ and self.source_config.lineageInformation
228
+ else []
229
+ )
230
+
231
+ def parse_db_service_prefix(
232
+ self, db_service_prefix: Optional[str]
233
+ ) -> Tuple[Optional[str], Optional[str], Optional[str], Optional[str]]:
234
+ """
235
+ Parse the db service prefix
236
+ Returns:
237
+ Tuple[Optional[str], Optional[str], Optional[str], Optional[str]]: service, database, schema, table
238
+ """
239
+ prefix_parts = (db_service_prefix or "").split(".")
240
+ return tuple(prefix_parts + ([None] * (4 - len(prefix_parts))))
241
+
242
+ def yield_mlmodel_lineage_details(
243
+ self, mlmodel_details: Any, db_service_prefix: Optional[str] = None
244
+ ) -> Iterable[Either[AddLineageRequest]]:
245
+ """
246
+ Get lineage between MLModel and source tables.
247
+ To be implemented by sources that support lineage.
248
+ """
249
+
250
+ def yield_mlmodel_lineage(
251
+ self, mlmodel_details: Any
252
+ ) -> Iterable[Either[OMetaLineageRequest]]:
253
+ """
254
+ Yields lineage if config is enabled.
255
+ We will look for the data in all the services we have informed.
256
+ """
257
+ db_service_prefixes = self.get_db_service_prefixes()
258
+ for db_service_prefix in db_service_prefixes or [None]:
259
+ for lineage in (
260
+ self.yield_mlmodel_lineage_details(mlmodel_details, db_service_prefix)
261
+ or []
262
+ ):
263
+ yield from self.yield_lineage_request(lineage)
264
+
265
+ def yield_lineage_request(
266
+ self, lineage: Optional[Either[AddLineageRequest]] = None
267
+ ) -> Iterable[Either[OMetaLineageRequest]]:
268
+ """
269
+ Method to yield lineage request
270
+ """
271
+ if lineage:
272
+ if lineage.right is not None:
273
+ yield Either(
274
+ right=OMetaLineageRequest(
275
+ lineage_request=lineage.right,
276
+ override_lineage=(
277
+ self.source_config.overrideLineage
278
+ if hasattr(self.source_config, "overrideLineage")
279
+ else False
280
+ ),
281
+ )
282
+ )
283
+ else:
284
+ yield lineage
@@ -176,7 +176,7 @@ def get_connection(connection: ElasticsearchConnection) -> Elasticsearch:
176
176
 
177
177
  return Elasticsearch(
178
178
  str(connection.hostPort),
179
- http_auth=basic_auth,
179
+ basic_auth=basic_auth,
180
180
  api_key=api_key,
181
181
  ssl_context=ssl_context,
182
182
  **connection.connectionArguments.root,
@@ -19,6 +19,7 @@ from typing import (
19
19
  Dict,
20
20
  Generic,
21
21
  Hashable,
22
+ Iterable,
22
23
  Mapping,
23
24
  Optional,
24
25
  Sequence,
@@ -29,7 +30,7 @@ from typing import (
29
30
 
30
31
  from presidio_analyzer import AnalyzerEngine
31
32
 
32
- from metadata.generated.schema.entity.data.table import DataType
33
+ from metadata.generated.schema.entity.data.table import Column, DataType
33
34
  from metadata.pii.algorithms.column_patterns import get_pii_column_name_patterns
34
35
  from metadata.pii.algorithms.feature_extraction import (
35
36
  extract_pii_from_column_names,
@@ -48,6 +49,7 @@ from metadata.pii.algorithms.presidio_utils import (
48
49
  set_presidio_logger_level,
49
50
  )
50
51
  from metadata.pii.algorithms.tags import PIISensitivityTag, PIITag
52
+ from metadata.pii.tag_analyzer import TagAnalyzer
51
53
 
52
54
  T = TypeVar("T", bound=Hashable)
53
55
 
@@ -72,6 +74,11 @@ class ColumnClassifier(ABC, Generic[T]):
72
74
  higher scores indicate a higher likelihood of the class for the given inputs.
73
75
  """
74
76
 
77
+ def classify(self, column: Column, sample_data: Sequence[Any]) -> Mapping[T, float]:
78
+ return self.predict_scores(
79
+ sample_data, column_name=column.name.root, column_data_type=column.dataType
80
+ )
81
+
75
82
 
76
83
  @final
77
84
  class HeuristicPIIClassifier(ColumnClassifier[PIITag]):
@@ -178,3 +185,58 @@ class PIISensitiveClassifier(ColumnClassifier[PIISensitivityTag]):
178
185
  results[tag] /= counts[tag]
179
186
 
180
187
  return results
188
+
189
+
190
+ @final
191
+ class TagClassifier(ColumnClassifier[str]):
192
+ """
193
+ Heuristic PII Column Classifier
194
+ """
195
+
196
+ def __init__(
197
+ self,
198
+ *,
199
+ tag_analyzers: Iterable[TagAnalyzer],
200
+ column_name_contribution: float = 0.5,
201
+ score_cutoff: float = 0.1,
202
+ relative_cardinality_cutoff: float = 0.01,
203
+ ):
204
+ set_presidio_logger_level()
205
+
206
+ self._analyzers = tag_analyzers
207
+
208
+ self._column_name_contribution = column_name_contribution
209
+ self._score_cutoff = score_cutoff
210
+ self._relative_cardinality_cutoff = relative_cardinality_cutoff
211
+
212
+ def predict_scores(
213
+ self,
214
+ sample_data: Sequence[Any],
215
+ column_name: Optional[str] = None,
216
+ column_data_type: Optional[DataType] = None,
217
+ ) -> Mapping[str, float]:
218
+ str_values = preprocess_values(sample_data)
219
+
220
+ if not str_values:
221
+ return {}
222
+
223
+ # Relative cardinality test
224
+ unique_values = set(str_values)
225
+ if len(unique_values) / len(str_values) < self._relative_cardinality_cutoff:
226
+ return {}
227
+
228
+ results: dict[str, float] = defaultdict(float)
229
+ for analyzer in self._analyzers:
230
+ content_score = analyzer.analyze_content(values=str_values)
231
+ column_score = 0.0
232
+ if column_name is not None:
233
+ column_score = analyzer.analyze_column()
234
+ column_score *= max(column_score, self._column_name_contribution)
235
+
236
+ total_score = content_score + column_score
237
+ if total_score > self._score_cutoff:
238
+ results[str(analyzer.tag.fullyQualifiedName)] = (
239
+ content_score + column_score
240
+ )
241
+
242
+ return results
@@ -0,0 +1,302 @@
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
+ Factory for creating Presidio recognizers from OpenMetadata recognizer configurations.
13
+ """
14
+ import re
15
+ from typing import Dict, List, Optional, cast
16
+
17
+ from presidio_analyzer import EntityRecognizer
18
+ from presidio_analyzer import Pattern as PresidioPattern
19
+ from presidio_analyzer import PatternRecognizer as PresidioPatternRecognizer
20
+ from presidio_analyzer import predefined_recognizers
21
+
22
+ from metadata.generated.schema.entity.classification.tag import Tag
23
+ from metadata.generated.schema.type.contextRecognizer import ContextRecognizer
24
+ from metadata.generated.schema.type.customRecognizer import CustomRecognizer
25
+ from metadata.generated.schema.type.denyListRecognizer import DenyListRecognizer
26
+ from metadata.generated.schema.type.patternRecognizer import PatternRecognizer
27
+ from metadata.generated.schema.type.predefinedRecognizer import PredefinedRecognizer
28
+ from metadata.generated.schema.type.recognizer import Recognizer
29
+ from metadata.generated.schema.type.recognizers.regexFlags import RegexFlags
30
+ from metadata.pii.algorithms.presidio_utils import apply_confidence_threshold
31
+ from metadata.utils.logger import pii_logger
32
+
33
+ logger = pii_logger()
34
+
35
+
36
+ class PresidioRecognizerFactory:
37
+ """Factory for creating Presidio recognizers from OpenMetadata configurations."""
38
+
39
+ @staticmethod
40
+ def create_recognizer(recognizer_config: Recognizer) -> Optional[EntityRecognizer]:
41
+ """
42
+ Create a Presidio recognizer from an OpenMetadata recognizer configuration.
43
+
44
+ Args:
45
+ recognizer_config: The recognizer configuration from OpenMetadata
46
+ tag_name: The name of the tag this recognizer belongs to
47
+
48
+ Returns:
49
+ A Presidio EntityRecognizer or None if creation fails
50
+ """
51
+ if not recognizer_config.enabled:
52
+ return None
53
+
54
+ config = recognizer_config.recognizerConfig.root
55
+
56
+ if isinstance(config, PatternRecognizer):
57
+ recognizer = PresidioRecognizerFactory._create_pattern_recognizer(
58
+ config, recognizer_config
59
+ )
60
+ elif isinstance(config, DenyListRecognizer):
61
+ recognizer = PresidioRecognizerFactory._create_deny_list_recognizer(
62
+ config, recognizer_config
63
+ )
64
+ elif isinstance(config, ContextRecognizer):
65
+ recognizer = PresidioRecognizerFactory._create_context_recognizer(
66
+ config, recognizer_config
67
+ )
68
+ elif isinstance(config, CustomRecognizer):
69
+ recognizer = PresidioRecognizerFactory._create_custom_recognizer(
70
+ config, recognizer_config
71
+ )
72
+ elif isinstance(
73
+ config, PredefinedRecognizer
74
+ ): # pyright: ignore[reportUnnecessaryIsInstance]
75
+ recognizer = PresidioRecognizerFactory._create_predefined_recognizer(
76
+ config, recognizer_config
77
+ )
78
+ else:
79
+ logger.warning(f"Unknown recognizer type for {recognizer_config.name}")
80
+ return None
81
+
82
+ if recognizer and (threshold := recognizer_config.confidenceThreshold):
83
+ patch_analyze = apply_confidence_threshold(threshold)
84
+ recognizer = patch_analyze(recognizer)
85
+
86
+ return recognizer
87
+
88
+ @staticmethod
89
+ def _get_regex_flags(flags: Optional[RegexFlags]) -> Optional[int]:
90
+ if flags is None:
91
+ return re.IGNORECASE | re.DOTALL | re.MULTILINE
92
+
93
+ re_flags = 0
94
+ if flags.ignoreCase:
95
+ re_flags |= re.IGNORECASE
96
+ if flags.dotAll:
97
+ re_flags |= re.DOTALL
98
+ if flags.multiline:
99
+ re_flags |= re.MULTILINE
100
+
101
+ return re_flags
102
+
103
+ @staticmethod
104
+ def _create_pattern_recognizer(
105
+ config: PatternRecognizer,
106
+ recognizer_config: Recognizer,
107
+ ) -> PresidioPatternRecognizer:
108
+ """Create a pattern-based recognizer."""
109
+ patterns: List[PresidioPattern] = []
110
+ for pattern_config in config.patterns:
111
+ patterns.append(
112
+ PresidioPattern(
113
+ name=pattern_config.name,
114
+ regex=pattern_config.regex,
115
+ score=pattern_config.score or 0.8,
116
+ )
117
+ )
118
+
119
+ return PresidioPatternRecognizer(
120
+ supported_entity=config.supportedEntity.value,
121
+ patterns=patterns,
122
+ name=recognizer_config.name.root,
123
+ supported_language=config.supportedLanguage,
124
+ global_regex_flags=PresidioRecognizerFactory._get_regex_flags(
125
+ config.regexFlags
126
+ ),
127
+ )
128
+
129
+ @staticmethod
130
+ def _create_deny_list_recognizer(
131
+ config: DenyListRecognizer, recognizer_config: Recognizer
132
+ ) -> PresidioPatternRecognizer:
133
+ """Create a deny list recognizer using patterns."""
134
+ patterns: List[PresidioPattern] = []
135
+ for value in config.denyList:
136
+ # Escape special regex characters in the value
137
+ escaped_value = re.escape(value)
138
+
139
+ patterns.append(
140
+ PresidioPattern(
141
+ name=f"deny_{value}",
142
+ regex=escaped_value,
143
+ score=0.9, # High confidence for exact matches
144
+ )
145
+ )
146
+
147
+ return PresidioPatternRecognizer(
148
+ supported_entity=config.supportedEntity.value,
149
+ patterns=patterns,
150
+ name=recognizer_config.name.root,
151
+ supported_language=config.supportedLanguage,
152
+ global_regex_flags=PresidioRecognizerFactory._get_regex_flags(
153
+ config.regexFlags
154
+ ),
155
+ )
156
+
157
+ @staticmethod
158
+ def _create_context_recognizer(
159
+ config: ContextRecognizer, recognizer_config: Recognizer
160
+ ) -> PresidioPatternRecognizer:
161
+ """Create a context-aware recognizer."""
162
+ # For context recognizers, we can use a pattern recognizer with context words
163
+ # or implement a custom recognizer that uses NLP
164
+ context_patterns: List[PresidioPattern] = []
165
+
166
+ # Create patterns that look for context words near potential entities
167
+ for context_word in config.contextWords:
168
+ # Pattern to match words near context words
169
+ pattern = f"(?i)(?:{context_word})\\s+\\w+|\\w+\\s+(?:{context_word})"
170
+ context_patterns.append(
171
+ PresidioPattern(
172
+ name=f"context_{context_word}",
173
+ regex=pattern,
174
+ score=(config.minScore + config.maxScore) / 2
175
+ if config.minScore and config.maxScore
176
+ else 0.6,
177
+ )
178
+ )
179
+
180
+ return PresidioPatternRecognizer(
181
+ supported_entity=config.supportedEntity.value,
182
+ patterns=context_patterns,
183
+ name=recognizer_config.name.root,
184
+ supported_language=config.supportedLanguage,
185
+ )
186
+
187
+ @staticmethod
188
+ def _create_custom_recognizer(
189
+ config: CustomRecognizer, # pyright: ignore[reportUnusedParameter]
190
+ recognizer_config: Recognizer,
191
+ ) -> Optional[EntityRecognizer]:
192
+ """
193
+ Create a custom recognizer with user-defined logic.
194
+
195
+ For security reasons, we don't execute arbitrary Python code.
196
+ Instead, we could support a limited set of custom behaviors
197
+ or require custom recognizers to be implemented as plugins.
198
+ """
199
+ logger.warning(
200
+ f"Custom recognizer {recognizer_config.name} requires implementation. "
201
+ + "Consider using pattern, deny_list, or context recognizers instead."
202
+ )
203
+ return None
204
+
205
+ @staticmethod
206
+ def _create_predefined_recognizer(
207
+ config: PredefinedRecognizer,
208
+ recognizer: Recognizer, # pyright: ignore[reportUnusedParameter]
209
+ ) -> Optional[EntityRecognizer]:
210
+ """Create a custom recognizer with user-defined logic."""
211
+ try:
212
+ predefined_class = getattr(predefined_recognizers, config.name.value)
213
+ except AttributeError:
214
+ logger.error(f"Recognizer {config.name} not found")
215
+ return None
216
+
217
+ args = {}
218
+ if supported_language := config.supportedLanguage:
219
+ args["supported_language"] = supported_language
220
+ if context := config.context:
221
+ args["context"] = context
222
+
223
+ return predefined_class(**args)
224
+
225
+ @staticmethod
226
+ def create_recognizers_for_tag(tag: Tag) -> List[EntityRecognizer]:
227
+ """
228
+ Create all enabled recognizers for a given tag.
229
+
230
+ Args:
231
+ tag: The tag containing recognizer configurations
232
+
233
+ Returns:
234
+ List of Presidio EntityRecognizer instances
235
+ """
236
+ recognizers: List[EntityRecognizer] = []
237
+
238
+ if not tag.autoClassificationEnabled or not tag.recognizers:
239
+ return recognizers
240
+
241
+ for recognizer_config in tag.recognizers:
242
+ recognizer = PresidioRecognizerFactory.create_recognizer(recognizer_config)
243
+ if recognizer:
244
+ recognizers.append(recognizer)
245
+ logger.info(
246
+ f"Created recognizer {recognizer_config.name} for tag {tag.name}"
247
+ )
248
+
249
+ return recognizers
250
+
251
+
252
+ class RecognizerRegistry:
253
+ """Registry for managing custom recognizers from OpenMetadata."""
254
+
255
+ def __init__(self):
256
+ self.recognizers: Dict[str, List[EntityRecognizer]] = {}
257
+ self.tag_priority: Dict[str, int] = {}
258
+ self.tag_confidence_threshold: Dict[str, float] = {}
259
+
260
+ def register_tag_recognizers(self, tag: Tag) -> None:
261
+ """
262
+ Register all recognizers for a tag.
263
+
264
+ Args:
265
+ tag: The tag with recognizer configurations
266
+ """
267
+ if not tag.autoClassificationEnabled:
268
+ return
269
+
270
+ tag_fqn = cast(str, tag.fullyQualifiedName)
271
+ self.recognizers[
272
+ tag_fqn
273
+ ] = PresidioRecognizerFactory.create_recognizers_for_tag(tag)
274
+ self.tag_priority[tag_fqn] = tag.autoClassificationPriority or 50
275
+
276
+ # Calculate minimum confidence from all recognizers
277
+ min_confidence = 1.0
278
+ for recognizer_config in tag.recognizers or []:
279
+ if recognizer_config.confidenceThreshold:
280
+ min_confidence = min(
281
+ min_confidence, recognizer_config.confidenceThreshold
282
+ )
283
+ self.tag_confidence_threshold[tag_fqn] = min_confidence
284
+
285
+ def get_recognizers_for_tag(self, tag_fqn: str) -> List[EntityRecognizer]:
286
+ """Get all recognizers registered for a tag."""
287
+ return self.recognizers.get(tag_fqn, [])
288
+
289
+ def get_all_recognizers(self) -> List[EntityRecognizer]:
290
+ """Get all registered recognizers across all tags."""
291
+ all_recognizers: list[EntityRecognizer] = []
292
+ for recognizers in self.recognizers.values():
293
+ all_recognizers.extend(recognizers)
294
+ return all_recognizers
295
+
296
+ def get_tag_priority(self, tag_fqn: str) -> int:
297
+ """Get the priority for a tag (used in conflict resolution)."""
298
+ return self.tag_priority.get(tag_fqn, 50)
299
+
300
+ def get_tag_confidence_threshold(self, tag_fqn: str) -> float:
301
+ """Get the minimum confidence threshold for a tag."""
302
+ return self.tag_confidence_threshold.get(tag_fqn, 0.6)
@@ -13,16 +13,17 @@ Utilities for working with the Presidio Library.
13
13
  """
14
14
  import inspect
15
15
  import logging
16
- from typing import Iterable, Type, Union
16
+ from typing import Callable, Iterable, List, Type, Union
17
17
 
18
18
  import spacy
19
19
  from presidio_analyzer import (
20
20
  AnalyzerEngine,
21
21
  EntityRecognizer,
22
22
  PatternRecognizer,
23
+ RecognizerResult,
23
24
  predefined_recognizers,
24
25
  )
25
- from presidio_analyzer.nlp_engine import SpacyNlpEngine
26
+ from presidio_analyzer.nlp_engine import NlpArtifacts, SpacyNlpEngine
26
27
  from spacy.cli.download import download # pyright: ignore[reportUnknownVariableType]
27
28
 
28
29
  from metadata.pii.constants import PRESIDIO_LOGGER, SPACY_EN_MODEL, SUPPORTED_LANG
@@ -31,6 +32,17 @@ from metadata.utils.logger import pii_logger
31
32
  logger = pii_logger()
32
33
 
33
34
 
35
+ def load_nlp_engine(
36
+ model_name: str = SPACY_EN_MODEL, supported_language: str = SUPPORTED_LANG
37
+ ) -> SpacyNlpEngine:
38
+ _load_spacy_model(model_name)
39
+ model = {
40
+ "lang_code": supported_language,
41
+ "model_name": model_name,
42
+ }
43
+ return SpacyNlpEngine(models=[model])
44
+
45
+
34
46
  def build_analyzer_engine(
35
47
  model_name: str = SPACY_EN_MODEL,
36
48
  ) -> AnalyzerEngine:
@@ -39,14 +51,9 @@ def build_analyzer_engine(
39
51
 
40
52
  If the model is not found locally, it will be downloaded.
41
53
  """
42
- _load_spacy_model(model_name)
43
-
44
- model = {
45
- "lang_code": SUPPORTED_LANG,
46
- "model_name": model_name,
47
- }
48
-
49
- nlp_engine = SpacyNlpEngine(models=[model])
54
+ nlp_engine = load_nlp_engine(
55
+ model_name=model_name, supported_language=SUPPORTED_LANG
56
+ )
50
57
  analyzer_engine = AnalyzerEngine(
51
58
  nlp_engine=nlp_engine, supported_languages=[SUPPORTED_LANG]
52
59
  )
@@ -109,3 +116,24 @@ def _get_all_pattern_recognizers() -> Iterable[EntityRecognizer]:
109
116
  elif cls == predefined_recognizers.PhoneRecognizer:
110
117
  # Not a pattern recognizer, but pretty much the same
111
118
  yield predefined_recognizers.PhoneRecognizer()
119
+
120
+
121
+ def apply_confidence_threshold(
122
+ threshold: float,
123
+ ) -> Callable[[EntityRecognizer], EntityRecognizer]:
124
+ def decorate_entity_recognizer(recognizer: EntityRecognizer) -> EntityRecognizer:
125
+ original_analyze = recognizer.analyze
126
+
127
+ def analyze(
128
+ instance: EntityRecognizer, # pyright: ignore[reportUnusedParameter]
129
+ text: str,
130
+ entities: List[str],
131
+ nlp_artifacts: NlpArtifacts,
132
+ ) -> List[RecognizerResult]:
133
+ results = original_analyze(text, entities, nlp_artifacts)
134
+ return [result for result in results if result.score >= threshold]
135
+
136
+ recognizer.analyze = analyze.__get__(recognizer, type(recognizer))
137
+ return recognizer
138
+
139
+ return decorate_entity_recognizer
@@ -36,3 +36,7 @@ def get_top_classes(scores: Mapping[T, float], n: int, threshold: float) -> Sequ
36
36
  sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True)
37
37
  top_classes = [key for key, score in sorted_scores if score >= threshold]
38
38
  return top_classes[:n]
39
+
40
+
41
+ def build_reason(tag_name: str, score: float) -> str:
42
+ return f"Chose {tag_name} with a classification score of {score:.2f}"
@@ -100,7 +100,8 @@ class AutoClassificationProcessor(Processor, ABC):
100
100
 
101
101
  column_tags = []
102
102
 
103
- for idx, column in enumerate(record.table.columns):
103
+ for idx, column_name in enumerate(record.sample_data.data.columns):
104
+ column = next(c for c in record.table.columns if c.name == column_name)
104
105
  try:
105
106
  tags = self.create_column_tag_labels(
106
107
  column=column,