elementary-data 0.23.4__tar.gz → 0.24.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. {elementary_data-0.23.4 → elementary_data-0.24.1}/PKG-INFO +4 -5
  2. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/formats/block_kit.py +42 -21
  3. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/alerts/alert_filters.py +11 -1
  4. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/report/report.py +2 -0
  5. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/tests/tests.py +4 -0
  6. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/report/index.html +1675 -1278
  7. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/dbt_project.yml +3 -3
  8. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/base_queries/current_tests_run_results_query.sql +2 -2
  9. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_adapter_type_and_unique_id.sql +4 -0
  10. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_test_results.sql +33 -18
  11. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/package-lock.yml +2 -2
  12. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/packages.yml +2 -2
  13. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/tests/tests.py +2 -0
  14. {elementary_data-0.23.4 → elementary_data-0.24.1}/pyproject.toml +9 -8
  15. {elementary_data-0.23.4 → elementary_data-0.24.1}/LICENSE +0 -0
  16. {elementary_data-0.23.4 → elementary_data-0.24.1}/README.md +0 -0
  17. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/.prettierignore +0 -0
  18. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/__init__.py +0 -0
  19. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/cli/__init__.py +0 -0
  20. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/cli/cli.py +0 -0
  21. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/cli/logo.py +0 -0
  22. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/cli/upgrade.py +0 -0
  23. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/__init__.py +0 -0
  24. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/api/__init__.py +0 -0
  25. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/api/api_client.py +0 -0
  26. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/azure/__init__.py +0 -0
  27. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/azure/client.py +0 -0
  28. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/__init__.py +0 -0
  29. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/api_dbt_runner.py +0 -0
  30. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/base_dbt_runner.py +0 -0
  31. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/command_line_dbt_runner.py +0 -0
  32. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/dbt_fusion_runner.py +0 -0
  33. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/dbt_log.py +0 -0
  34. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/factory.py +0 -0
  35. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/subprocess_dbt_runner.py +0 -0
  36. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/dbt/transient_errors.py +0 -0
  37. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/fetcher/__init__.py +0 -0
  38. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/fetcher/fetcher.py +0 -0
  39. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/gcs/__init__.py +0 -0
  40. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/gcs/client.py +0 -0
  41. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/s3/__init__.py +0 -0
  42. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/s3/client.py +0 -0
  43. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/slack/__init__.py +0 -0
  44. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/slack/client.py +0 -0
  45. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/slack/schema.py +0 -0
  46. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/clients/slack/slack_message_builder.py +0 -0
  47. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/config/__init__.py +0 -0
  48. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/config/config.py +0 -0
  49. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/exceptions/__init__.py +0 -0
  50. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/exceptions/exceptions.py +0 -0
  51. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/README.md +0 -0
  52. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/__init__.py +0 -0
  53. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/block_builders.py +0 -0
  54. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/blocks.py +0 -0
  55. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/formats/__init__.py +0 -0
  56. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/formats/adaptive_cards.py +0 -0
  57. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/formats/html.py +0 -0
  58. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/formats/markdown.py +0 -0
  59. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/formats/text.py +0 -0
  60. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/formats/unicode.py +0 -0
  61. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/message_body.py +0 -0
  62. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/README.md +0 -0
  63. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/__init__.py +0 -0
  64. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/base_messaging_integration.py +0 -0
  65. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/empty_message_context.py +0 -0
  66. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/exceptions.py +0 -0
  67. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/file_system.py +0 -0
  68. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/mapped.py +0 -0
  69. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/slack_web.py +0 -0
  70. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/slack_webhook.py +0 -0
  71. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/messages/messaging_integrations/teams_webhook.py +0 -0
  72. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/__init__.py +0 -0
  73. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/__init__.py +0 -0
  74. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/alert.py +0 -0
  75. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/alert_messages/__init__.py +0 -0
  76. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/alert_messages/alert_fields.py +0 -0
  77. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/alert_messages/builder.py +0 -0
  78. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/alerts_groups/__init__.py +0 -0
  79. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/alerts_groups/alerts_group.py +0 -0
  80. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/alerts_groups/base_alerts_group.py +0 -0
  81. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/alerts_groups/grouped_by_table.py +0 -0
  82. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/grouping_type.py +0 -0
  83. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/model_alert.py +0 -0
  84. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/source_freshness_alert.py +0 -0
  85. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/alerts/test_alert.py +0 -0
  86. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/__init__.py +0 -0
  87. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/alerts/__init__.py +0 -0
  88. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/alerts/alerts.py +0 -0
  89. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/filters/__init__.py +0 -0
  90. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/filters/filters.py +0 -0
  91. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/filters/schema.py +0 -0
  92. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/groups/__init__.py +0 -0
  93. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/groups/groups.py +0 -0
  94. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/groups/schema.py +0 -0
  95. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/groups/tree_builder.py +0 -0
  96. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/invocations/__init__.py +0 -0
  97. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/invocations/invocations.py +0 -0
  98. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/invocations/schema.py +0 -0
  99. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/lineage/__init__.py +0 -0
  100. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/lineage/lineage.py +0 -0
  101. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/lineage/schema.py +0 -0
  102. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/models/__init__.py +0 -0
  103. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/models/models.py +0 -0
  104. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/models/schema.py +0 -0
  105. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/report/__init__.py +0 -0
  106. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/report/schema.py +0 -0
  107. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/report/totals_utils.py +0 -0
  108. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/selector/__init__.py +0 -0
  109. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/selector/schema.py +0 -0
  110. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/selector/selector.py +0 -0
  111. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/source_freshnesses/__init__.py +0 -0
  112. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/source_freshnesses/schema.py +0 -0
  113. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/source_freshnesses/source_freshnesses.py +0 -0
  114. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/tests/__init__.py +0 -0
  115. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/tests/schema.py +0 -0
  116. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/tests/utils.py +0 -0
  117. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/api/totals_schema.py +0 -0
  118. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/cli.py +0 -0
  119. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/__init__.py +0 -0
  120. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/__init__.py +0 -0
  121. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/data_monitoring_alerts.py +0 -0
  122. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/README.md +0 -0
  123. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/__init__.py +0 -0
  124. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/base_integration.py +0 -0
  125. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/integrations.py +0 -0
  126. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/slack/__init__.py +0 -0
  127. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/slack/message_builder.py +0 -0
  128. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/slack/slack.py +0 -0
  129. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/utils/__init__.py +0 -0
  130. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/utils/orchestrator_link.py +0 -0
  131. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/integrations/utils/report_link.py +0 -0
  132. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/alerts/schema.py +0 -0
  133. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/data_monitoring.py +0 -0
  134. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/report/__init__.py +0 -0
  135. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/report/data_monitoring_report.py +0 -0
  136. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/report/slack_report_summary_message_builder.py +0 -0
  137. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/schema.py +0 -0
  138. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/data_monitoring/selector_filter.py +0 -0
  139. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_init.py +0 -0
  140. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/.gitignore +0 -0
  141. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/README.md +0 -0
  142. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/analyses/.gitkeep +0 -0
  143. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/fetchers/get_alerts.sql +0 -0
  144. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/manage/update_sent_alerts.sql +0 -0
  145. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/manage/update_skipped_alerts.sql +0 -0
  146. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/population/model_alerts.sql +0 -0
  147. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/population/populate_alerts_table.sql +0 -0
  148. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/population/source_freshness_alerts.sql +0 -0
  149. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/population/test_alerts.sql +0 -0
  150. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/population/utils/empty_alert_tables.sql +0 -0
  151. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/population/utils/generate_alert_object.sql +0 -0
  152. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/population/utils/get_alerts_model_detected_at_expr.sql +0 -0
  153. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/alerts/population/utils/get_new_alerts_where_clause.sql +0 -0
  154. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/base_queries/owners.sql +0 -0
  155. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/base_queries/resources.sql +0 -0
  156. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/base_queries/tags.sql +0 -0
  157. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/can_upload_source_freshness.sql +0 -0
  158. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/empty_elementary_exposures.sql +0 -0
  159. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_alerts_time_limit.sql +0 -0
  160. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_dbt_models_test_coverage.sql +0 -0
  161. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_elementary_database_and_schema.sql +0 -0
  162. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_elementary_table_nodes.sql +0 -0
  163. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_exposures.sql +0 -0
  164. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_latest_invocation.sql +0 -0
  165. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_models.sql +0 -0
  166. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_models_latest_invocation.sql +0 -0
  167. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_models_latest_invocations_data.sql +0 -0
  168. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_models_runs.sql +0 -0
  169. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_nodes_depends_on_nodes.sql +0 -0
  170. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_result_rows_agate.sql +0 -0
  171. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_seeds.sql +0 -0
  172. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_singular_tests.sql +0 -0
  173. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_snapshots.sql +0 -0
  174. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_source_freshness_results.sql +0 -0
  175. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_sources.sql +0 -0
  176. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_test_last_invocation.sql +0 -0
  177. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_test_rows_sample.sql +0 -0
  178. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/get_tests.sql +0 -0
  179. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/internal_tests/validate_alert_statuses_are_updated.sql +0 -0
  180. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/materializations/nothing.sql +0 -0
  181. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/overrides/ref.sql +0 -0
  182. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/test_conn.sql +0 -0
  183. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/tests/unique_if_exists.sql +0 -0
  184. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/upload_source_freshness.sql +0 -0
  185. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/utils/edr_quote_identifier.sql +0 -0
  186. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/macros/utils/normalized_source_freshness_status.sql +0 -0
  187. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/alerts/alerts_v2.sql +0 -0
  188. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts.sql +0 -0
  189. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts_models.sql +0 -0
  190. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts_source_freshness.sql +0 -0
  191. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/elementary.yml +0 -0
  192. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/elementary_exposures/elementary_exposures.sql +0 -0
  193. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/elementary_exposures.yml +0 -0
  194. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/enriched_exposures/enriched_exposures.sql +0 -0
  195. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/update_alerts/update_sent_alerts.sql +0 -0
  196. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/models/update_alerts/update_skipped_alerts.sql +0 -0
  197. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/snapshots/.gitkeep +0 -0
  198. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project/tests/.gitkeep +0 -0
  199. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/dbt_project_utils.py +0 -0
  200. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/debug.py +0 -0
  201. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/__init__.py +0 -0
  202. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/alerts/__init__.py +0 -0
  203. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/alerts/alerts.py +0 -0
  204. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/alerts/schema/__init__.py +0 -0
  205. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/alerts/schema/alert_data.py +0 -0
  206. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/alerts/schema/pending_alerts.py +0 -0
  207. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/base_fetcher.py +0 -0
  208. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/invocations/__init__.py +0 -0
  209. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/invocations/invocations.py +0 -0
  210. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/invocations/schema.py +0 -0
  211. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/lineage/__init__.py +0 -0
  212. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/lineage/lineage.py +0 -0
  213. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/models/__init__.py +0 -0
  214. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/models/models.py +0 -0
  215. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/models/schema.py +0 -0
  216. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/selector/__init__.py +0 -0
  217. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/selector/schema.py +0 -0
  218. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/selector/selector.py +0 -0
  219. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/source_freshnesses/__init__.py +0 -0
  220. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/source_freshnesses/schema.py +0 -0
  221. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/source_freshnesses/source_freshnesses.py +0 -0
  222. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/tests/__init__.py +0 -0
  223. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/monitor/fetchers/tests/schema.py +0 -0
  224. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/operations/__init__.py +0 -0
  225. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/operations/cli.py +0 -0
  226. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/operations/upload_source_freshness.py +0 -0
  227. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/py.typed +0 -0
  228. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/tracking/__init__.py +0 -0
  229. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/tracking/anonymous_tracking.py +0 -0
  230. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/tracking/runner.py +0 -0
  231. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/tracking/tracking_interface.py +0 -0
  232. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/__init__.py +0 -0
  233. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/bucket_path.py +0 -0
  234. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/cli_utils.py +0 -0
  235. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/cwd.py +0 -0
  236. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/dicts.py +0 -0
  237. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/env_vars.py +0 -0
  238. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/env_vars_context.py +0 -0
  239. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/hash.py +0 -0
  240. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/json_utils.py +0 -0
  241. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/log.py +0 -0
  242. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/models.py +0 -0
  243. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/ordered_yaml.py +0 -0
  244. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/package.py +0 -0
  245. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/pydantic_shim.py +0 -0
  246. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/schema.py +0 -0
  247. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/ssl.py +0 -0
  248. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/strings.py +0 -0
  249. {elementary_data-0.23.4 → elementary_data-0.24.1}/elementary/utils/time.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: elementary-data
3
- Version: 0.23.4
3
+ Version: 0.24.1
4
4
  Summary: Data monitoring and lineage
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -24,14 +24,12 @@ Provides-Extra: databricks
24
24
  Provides-Extra: dremio
25
25
  Provides-Extra: duckdb
26
26
  Provides-Extra: fabric
27
- Provides-Extra: fabricspark
28
27
  Provides-Extra: postgres
29
28
  Provides-Extra: redshift
30
29
  Provides-Extra: snowflake
31
30
  Provides-Extra: spark
32
31
  Provides-Extra: sqlserver
33
32
  Provides-Extra: trino
34
- Provides-Extra: vertica
35
33
  Requires-Dist: alive-progress (<=2.3.1)
36
34
  Requires-Dist: azure-storage-blob (>=12.11.0)
37
35
  Requires-Dist: beautifulsoup4 (<5.0.0)
@@ -45,15 +43,15 @@ Requires-Dist: dbt-databricks (>=1.8,<2.0.0) ; extra == "databricks" or extra ==
45
43
  Requires-Dist: dbt-dremio (>=1.8,<2.0.0) ; extra == "dremio" or extra == "all"
46
44
  Requires-Dist: dbt-duckdb (>=1.8,<2.0.0) ; extra == "duckdb" or extra == "all"
47
45
  Requires-Dist: dbt-fabric (>=1.8,<2.0.0) ; extra == "fabric" or extra == "all"
48
- Requires-Dist: dbt-fabricspark (>=1.8,<2.0.0) ; extra == "fabricspark"
49
46
  Requires-Dist: dbt-postgres (>=1.8,<2.0.0) ; extra == "postgres" or extra == "all"
50
47
  Requires-Dist: dbt-redshift (>=1.8,<2.0.0) ; extra == "redshift" or extra == "all"
51
48
  Requires-Dist: dbt-snowflake (>=1.8,<2.0.0) ; extra == "snowflake" or extra == "all"
52
49
  Requires-Dist: dbt-spark (>=1.8,<2.0.0) ; extra == "spark" or extra == "all"
53
50
  Requires-Dist: dbt-sqlserver (>=1.8,<2.0.0) ; extra == "sqlserver" or extra == "all"
54
51
  Requires-Dist: dbt-trino (>=1.8,<2.0.0) ; extra == "trino" or extra == "all"
55
- Requires-Dist: dbt-vertica (>=1.8,<2.0.0) ; extra == "vertica"
56
52
  Requires-Dist: google-cloud-storage (>=2.4,<3.2)
53
+ Requires-Dist: idna (>=3.15,<4)
54
+ Requires-Dist: lxml (>=6.1.0)
57
55
  Requires-Dist: networkx (>=2.3,<3)
58
56
  Requires-Dist: packaging (>=20.9)
59
57
  Requires-Dist: posthog (<3.0.0)
@@ -66,6 +64,7 @@ Requires-Dist: ruamel.yaml (<1.0.0)
66
64
  Requires-Dist: slack-sdk (>=3.20.1,<4.0.0)
67
65
  Requires-Dist: tabulate (>=0.9.0)
68
66
  Requires-Dist: tenacity (>=8.0,<10.0)
67
+ Requires-Dist: urllib3 (>=2.7.0,<3.0.0)
69
68
  Project-URL: Documentation, https://docs.elementary-data.com
70
69
  Project-URL: Homepage, https://www.elementary-data.com
71
70
  Project-URL: Repository, https://github.com/elementary-data/elementary
@@ -2,7 +2,6 @@ import json
2
2
  from typing import Any, Callable, List, Optional, Tuple
3
3
 
4
4
  from slack_sdk.models import blocks as slack_blocks
5
- from tabulate import tabulate
6
5
 
7
6
  from elementary.messages.blocks import (
8
7
  ActionBlock,
@@ -50,7 +49,8 @@ ResolveMentionCallback = Callable[[str], Optional[str]]
50
49
  class BlockKitBuilder:
51
50
  _SECONDARY_FACT_CHUNK_SIZE = 2
52
51
  _LONGEST_MARKDOWN_SUFFIX_LEN = 3 # length of markdown's code suffix (```)
53
- _MAX_CELL_LENGTH_BY_COLUMN_COUNT = {4: 11, 3: 14, 2: 22, 1: 40, 0: 40}
52
+ _MAX_SLACK_TABLE_COLUMNS = 20
53
+ _MAX_SLACK_TABLE_ROWS = 100
54
54
 
55
55
  def __init__(
56
56
  self, resolve_mention: Optional[ResolveMentionCallback] = None
@@ -58,6 +58,7 @@ class BlockKitBuilder:
58
58
  self._blocks: List[dict] = []
59
59
  self._attachment_blocks: List[dict] = []
60
60
  self._is_divided = False
61
+ self._has_table_block = False
61
62
  self._resolve_mention = resolve_mention or (lambda x: None)
62
63
 
63
64
  def _format_icon(self, icon: Icon) -> str:
@@ -98,13 +99,6 @@ class BlockKitBuilder:
98
99
  [self._format_inline_block(inline) for inline in block.inlines]
99
100
  )
100
101
 
101
- def _format_table_cell(self, cell_value: Any, column_count: int) -> str:
102
- value = str(cell_value)
103
- max_cell_length = self._MAX_CELL_LENGTH_BY_COLUMN_COUNT[column_count]
104
- if len(value) > max_cell_length:
105
- return value[: max_cell_length - 2] + ".."
106
- return value
107
-
108
102
  def _format_markdown_section_text(self, text: str) -> dict:
109
103
  if len(text) > slack_blocks.SectionBlock.text_max_length:
110
104
  text = (
@@ -257,24 +251,50 @@ class BlockKitBuilder:
257
251
  self._add_block({"type": "divider"})
258
252
  self._is_divided = True
259
253
 
254
+ def _make_header_cell(self, text: str) -> dict:
255
+ return {
256
+ "type": "rich_text",
257
+ "elements": [
258
+ {
259
+ "type": "rich_text_section",
260
+ "elements": [
261
+ {"type": "text", "text": str(text), "style": {"bold": True}}
262
+ ],
263
+ }
264
+ ],
265
+ }
266
+
267
+ def _make_data_cell(self, value: Any) -> dict:
268
+ text = str(value) if value is not None else "NULL"
269
+ return {"type": "raw_text", "text": text or " "}
270
+
260
271
  def _add_table_block(self, block: TableBlock) -> None:
261
272
  column_count = len(block.headers)
262
- if column_count not in self._MAX_CELL_LENGTH_BY_COLUMN_COUNT:
273
+
274
+ if column_count > self._MAX_SLACK_TABLE_COLUMNS or self._has_table_block:
263
275
  dicts = [
264
276
  {header: cell for header, cell in zip(block.headers, row)}
265
277
  for row in block.rows
266
278
  ]
267
- table_text = json.dumps(dicts, indent=2)
268
- else:
269
- new_rows = [
270
- [self._format_table_cell(cell, column_count) for cell in row]
271
- for row in block.rows
272
- ]
273
- new_headers = [
274
- self._format_table_cell(cell, column_count) for cell in block.headers
275
- ]
276
- table_text = tabulate(new_rows, headers=new_headers, tablefmt="simple")
277
- self._add_block(self._format_markdown_section(f"```{table_text}```"))
279
+ self._add_block(
280
+ self._format_markdown_section(f"```{json.dumps(dicts, indent=2)}```")
281
+ )
282
+ return
283
+
284
+ rows: List[List[dict]] = [[self._make_header_cell(h) for h in block.headers]]
285
+ for row in block.rows[: self._MAX_SLACK_TABLE_ROWS - 1]:
286
+ rows.append([self._make_data_cell(v) for v in row])
287
+
288
+ self._add_block(
289
+ {
290
+ "type": "table",
291
+ "rows": rows,
292
+ "column_settings": [
293
+ {"align": "left", "is_wrapped": False} for _ in block.headers
294
+ ],
295
+ }
296
+ )
297
+ self._has_table_block = True
278
298
 
279
299
  def _add_actions_block(self, block: ActionsBlock) -> None:
280
300
  self._add_block(
@@ -337,6 +357,7 @@ class BlockKitBuilder:
337
357
  def build(self, message: MessageBody) -> FormattedBlockKitMessage:
338
358
  self._blocks = []
339
359
  self._attachment_blocks = []
360
+ self._has_table_block = False
340
361
  self._add_message_blocks(message.blocks)
341
362
  color_code = COLOR_MAP.get(message.color) if message.color else None
342
363
  blocks, attachment_blocks = self._get_final_blocks(message.color)
@@ -37,6 +37,14 @@ def _get_alert_node_name(alert: PendingAlertSchema) -> Optional[str]:
37
37
  return alert_node_name
38
38
 
39
39
 
40
+ def _safe_parse_status(raw_status: Optional[str]) -> Optional[Status]:
41
+ """Parse a raw alert status into a Status enum, or None if it isn't recognized."""
42
+ try:
43
+ return Status(raw_status)
44
+ except ValueError:
45
+ return None
46
+
47
+
40
48
  def apply_filters_schema_on_alert(
41
49
  alert: PendingAlertSchema, filters_schema: FiltersSchema
42
50
  ) -> bool:
@@ -50,7 +58,9 @@ def apply_filters_schema_on_alert(
50
58
  else []
51
59
  )
52
60
  owners = alert.data.unified_owners or []
53
- status = Status(alert.data.status)
61
+ status = _safe_parse_status(alert.data.status)
62
+ if status is None:
63
+ return False
54
64
  resource_type = ResourceType(alert.data.resource_type)
55
65
  if hasattr(alert.data, "test_unique_id"):
56
66
  test_ids = [alert.data.test_unique_id] if alert.data.test_unique_id else []
@@ -76,6 +76,7 @@ class ReportAPI(APIClient):
76
76
  exclude_elementary_models: bool = False,
77
77
  project_name: Optional[str] = None,
78
78
  disable_samples: bool = False,
79
+ skip_test_result_rows: bool = False,
79
80
  filter: SelectorFilterSchema = SelectorFilterSchema(),
80
81
  env: Optional[str] = None,
81
82
  warehouse_type: Optional[str] = None,
@@ -86,6 +87,7 @@ class ReportAPI(APIClient):
86
87
  days_back=days_back,
87
88
  invocations_per_test=test_runs_amount,
88
89
  disable_passed_test_metrics=disable_passed_test_metrics,
90
+ skip_test_result_rows=skip_test_result_rows,
89
91
  )
90
92
  source_freshnesses_api = SourceFreshnessesAPI(
91
93
  dbt_runner=self.dbt_runner,
@@ -46,6 +46,7 @@ class TestsAPI(APIClient):
46
46
  days_back: int = 7,
47
47
  invocations_per_test: int = 720,
48
48
  disable_passed_test_metrics: bool = False,
49
+ skip_test_result_rows: bool = False,
49
50
  ):
50
51
  super().__init__(dbt_runner)
51
52
  self.tests_fetcher = TestsFetcher(dbt_runner=self.dbt_runner)
@@ -53,6 +54,7 @@ class TestsAPI(APIClient):
53
54
  days_back=days_back,
54
55
  invocations_per_test=invocations_per_test,
55
56
  disable_passed_test_metrics=disable_passed_test_metrics,
57
+ skip_test_result_rows=skip_test_result_rows,
56
58
  )
57
59
 
58
60
  def _get_test_results_db_rows(
@@ -60,11 +62,13 @@ class TestsAPI(APIClient):
60
62
  days_back: Optional[int] = 7,
61
63
  invocations_per_test: int = 720,
62
64
  disable_passed_test_metrics: bool = False,
65
+ skip_test_result_rows: bool = False,
63
66
  ) -> List[TestResultDBRowSchema]:
64
67
  return self.tests_fetcher.get_all_test_results_db_rows(
65
68
  days_back=days_back,
66
69
  invocations_per_test=invocations_per_test,
67
70
  disable_passed_test_metrics=disable_passed_test_metrics,
71
+ skip_test_result_rows=skip_test_result_rows,
68
72
  )
69
73
 
70
74
  def get_test_results_summary(