elementary-data 0.23.1__tar.gz → 0.23.3__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.
- {elementary_data-0.23.1 → elementary_data-0.23.3}/PKG-INFO +1 -1
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/teams_webhook.py +15 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/alert.py +6 -2
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/alert_messages/builder.py +14 -40
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/alerts_groups/alerts_group.py +6 -7
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/alerts_groups/base_alerts_group.py +3 -7
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/model_alert.py +9 -7
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/source_freshness_alert.py +5 -1
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/test_alert.py +4 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/alerts/alert_filters.py +1 -1
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/data_monitoring_alerts.py +2 -7
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/base_integration.py +4 -20
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/slack/slack.py +8 -51
- elementary_data-0.23.3/elementary/monitor/data_monitoring/report/index.html +6431 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/package-lock.yml +2 -2
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/packages.yml +3 -3
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/alerts/schema/alert_data.py +2 -1
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/alerts/schema/pending_alerts.py +3 -4
- elementary_data-0.23.3/elementary.pth +1 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/pyproject.toml +3 -3
- elementary_data-0.23.1/elementary/monitor/data_monitoring/report/index.html +0 -5915
- {elementary_data-0.23.1 → elementary_data-0.23.3}/LICENSE +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/README.md +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/.prettierignore +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/cli/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/cli/cli.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/cli/logo.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/cli/upgrade.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/api/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/api/api_client.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/azure/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/azure/client.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/api_dbt_runner.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/base_dbt_runner.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/command_line_dbt_runner.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/dbt_fusion_runner.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/dbt_log.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/factory.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/subprocess_dbt_runner.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/dbt/transient_errors.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/fetcher/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/fetcher/fetcher.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/gcs/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/gcs/client.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/s3/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/s3/client.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/slack/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/slack/client.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/slack/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/clients/slack/slack_message_builder.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/config/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/config/config.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/exceptions/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/exceptions/exceptions.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/README.md +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/block_builders.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/blocks.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/formats/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/formats/adaptive_cards.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/formats/block_kit.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/formats/html.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/formats/markdown.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/formats/text.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/formats/unicode.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/message_body.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/README.md +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/base_messaging_integration.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/empty_message_context.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/exceptions.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/file_system.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/mapped.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/slack_web.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/messages/messaging_integrations/slack_webhook.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/alert_messages/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/alert_messages/alert_fields.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/alerts_groups/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/alerts_groups/grouped_by_table.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/alerts/grouping_type.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/alerts/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/alerts/alerts.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/filters/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/filters/filters.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/filters/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/groups/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/groups/groups.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/groups/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/groups/tree_builder.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/invocations/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/invocations/invocations.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/invocations/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/lineage/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/lineage/lineage.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/lineage/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/models/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/models/models.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/models/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/report/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/report/report.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/report/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/report/totals_utils.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/selector/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/selector/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/selector/selector.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/source_freshnesses/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/source_freshnesses/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/source_freshnesses/source_freshnesses.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/tests/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/tests/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/tests/tests.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/tests/utils.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/totals_schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/cli.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/README.md +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/integrations.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/slack/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/slack/message_builder.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/utils/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/utils/orchestrator_link.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/integrations/utils/report_link.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/alerts/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/data_monitoring.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/report/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/report/data_monitoring_report.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/report/slack_report_summary_message_builder.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/data_monitoring/selector_filter.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_init.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/.gitignore +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/README.md +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/analyses/.gitkeep +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/dbt_project.yml +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/fetchers/get_alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/manage/update_sent_alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/manage/update_skipped_alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/population/model_alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/population/populate_alerts_table.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/population/source_freshness_alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/population/test_alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/population/utils/empty_alert_tables.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/population/utils/generate_alert_object.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/population/utils/get_alerts_model_detected_at_expr.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/alerts/population/utils/get_new_alerts_where_clause.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/base_queries/current_tests_run_results_query.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/base_queries/owners.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/base_queries/resources.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/base_queries/tags.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/can_upload_source_freshness.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/empty_elementary_exposures.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_adapter_type_and_unique_id.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_alerts_time_limit.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_dbt_models_test_coverage.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_elementary_database_and_schema.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_elementary_table_nodes.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_exposures.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_latest_invocation.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_models.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_models_latest_invocation.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_models_latest_invocations_data.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_models_runs.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_nodes_depends_on_nodes.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_result_rows_agate.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_seeds.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_singular_tests.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_snapshots.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_source_freshness_results.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_sources.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_test_last_invocation.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_test_results.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_test_rows_sample.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/get_tests.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/internal_tests/validate_alert_statuses_are_updated.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/materializations/nothing.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/overrides/ref.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/test_conn.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/tests/unique_if_exists.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/upload_source_freshness.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/utils/edr_quote_identifier.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/macros/utils/normalized_source_freshness_status.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/alerts/alerts_v2.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts_models.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts_source_freshness.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/elementary.yml +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/elementary_exposures/elementary_exposures.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/elementary_exposures.yml +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/enriched_exposures/enriched_exposures.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/update_alerts/update_sent_alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/models/update_alerts/update_skipped_alerts.sql +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/snapshots/.gitkeep +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project/tests/.gitkeep +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/dbt_project_utils.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/debug.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/alerts/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/alerts/alerts.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/alerts/schema/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/base_fetcher.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/invocations/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/invocations/invocations.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/invocations/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/lineage/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/lineage/lineage.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/models/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/models/models.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/models/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/selector/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/selector/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/selector/selector.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/source_freshnesses/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/source_freshnesses/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/source_freshnesses/source_freshnesses.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/tests/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/tests/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/fetchers/tests/tests.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/operations/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/operations/cli.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/operations/upload_source_freshness.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/py.typed +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/tracking/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/tracking/anonymous_tracking.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/tracking/runner.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/tracking/tracking_interface.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/__init__.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/bucket_path.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/cli_utils.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/cwd.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/dicts.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/env_vars.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/env_vars_context.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/hash.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/json_utils.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/log.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/models.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/ordered_yaml.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/package.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/pydantic_shim.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/schema.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/ssl.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/strings.py +0 -0
- {elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/utils/time.py +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import json
|
|
1
2
|
from datetime import datetime, timezone
|
|
2
3
|
from http import HTTPStatus
|
|
3
4
|
from typing import Any, Optional
|
|
@@ -36,6 +37,14 @@ class TeamsWebhookHttpError(MessagingIntegrationError):
|
|
|
36
37
|
)
|
|
37
38
|
|
|
38
39
|
|
|
40
|
+
class TeamsWebhookPayloadTooLargeError(MessagingIntegrationError):
|
|
41
|
+
def __init__(self, response: requests.Response, payload_size: int | None = None):
|
|
42
|
+
self.status_code = response.status_code
|
|
43
|
+
self.response = response
|
|
44
|
+
size_info = f" ({payload_size} bytes)" if payload_size is not None else ""
|
|
45
|
+
super().__init__(f"Teams webhook payload size{size_info} exceeds limit")
|
|
46
|
+
|
|
47
|
+
|
|
39
48
|
def send_adaptive_card(webhook_url: str, card: dict) -> requests.Response:
|
|
40
49
|
payload = {
|
|
41
50
|
"type": "message",
|
|
@@ -78,6 +87,7 @@ class TeamsWebhookMessagingIntegration(
|
|
|
78
87
|
body: MessageBody,
|
|
79
88
|
) -> MessageSendResult[EmptyMessageContext]:
|
|
80
89
|
card = format_adaptive_card(body)
|
|
90
|
+
payload_json = json.dumps(card)
|
|
81
91
|
try:
|
|
82
92
|
response = send_adaptive_card(self.url, card)
|
|
83
93
|
# For the old teams webhook version of Teams simply returning status code 200
|
|
@@ -89,6 +99,11 @@ class TeamsWebhookMessagingIntegration(
|
|
|
89
99
|
if response.status_code not in (HTTPStatus.OK, HTTPStatus.ACCEPTED) or (
|
|
90
100
|
response.status_code == HTTPStatus.OK and len(response.text) > 1
|
|
91
101
|
):
|
|
102
|
+
if "HTTP error 413" in response.text:
|
|
103
|
+
raise TeamsWebhookPayloadTooLargeError(
|
|
104
|
+
response, payload_size=len(payload_json)
|
|
105
|
+
)
|
|
106
|
+
|
|
92
107
|
raise MessagingIntegrationError(
|
|
93
108
|
f"Could not post message to Teams via webhook. Status code: {response.status_code}, Error: {response.text}"
|
|
94
109
|
)
|
|
@@ -99,8 +99,12 @@ class AlertModel:
|
|
|
99
99
|
raise NotImplementedError
|
|
100
100
|
|
|
101
101
|
@property
|
|
102
|
-
def concise_name(self):
|
|
103
|
-
|
|
102
|
+
def concise_name(self) -> str:
|
|
103
|
+
raise NotImplementedError
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def asset_type(self) -> str:
|
|
107
|
+
raise NotImplementedError
|
|
104
108
|
|
|
105
109
|
@property
|
|
106
110
|
def summary(self) -> str:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from datetime import timedelta
|
|
2
|
-
from typing import Any, Dict, List,
|
|
2
|
+
from typing import Any, Dict, List, Optional, Sequence, Tuple, Union
|
|
3
3
|
|
|
4
4
|
from elementary.messages.block_builders import (
|
|
5
5
|
BoldTextBlock,
|
|
@@ -33,7 +33,7 @@ from elementary.messages.blocks import (
|
|
|
33
33
|
TextStyle,
|
|
34
34
|
)
|
|
35
35
|
from elementary.messages.message_body import Color, MessageBlock, MessageBody
|
|
36
|
-
from elementary.monitor.alerts.alert import OrchestratorInfo
|
|
36
|
+
from elementary.monitor.alerts.alert import AlertModel, OrchestratorInfo
|
|
37
37
|
from elementary.monitor.alerts.alert_messages.alert_fields import AlertField
|
|
38
38
|
from elementary.monitor.alerts.alerts_groups.alerts_group import AlertsGroup
|
|
39
39
|
from elementary.monitor.alerts.alerts_groups.base_alerts_group import BaseAlertsGroup
|
|
@@ -51,12 +51,7 @@ from elementary.monitor.data_monitoring.alerts.integrations.utils.report_link im
|
|
|
51
51
|
)
|
|
52
52
|
from elementary.utils.pydantic_shim import BaseModel
|
|
53
53
|
|
|
54
|
-
AlertType = Union[
|
|
55
|
-
TestAlertModel,
|
|
56
|
-
ModelAlertModel,
|
|
57
|
-
SourceFreshnessAlertModel,
|
|
58
|
-
BaseAlertsGroup,
|
|
59
|
-
]
|
|
54
|
+
AlertType = Union[AlertModel, BaseAlertsGroup]
|
|
60
55
|
|
|
61
56
|
|
|
62
57
|
class MessageBuilderConfig(BaseModel):
|
|
@@ -104,7 +99,7 @@ class AlertMessageBuilder:
|
|
|
104
99
|
|
|
105
100
|
def _get_run_alert_subtitle_block(
|
|
106
101
|
self,
|
|
107
|
-
type:
|
|
102
|
+
type: str,
|
|
108
103
|
name: str,
|
|
109
104
|
status: Optional[str] = None,
|
|
110
105
|
detected_at_str: Optional[str] = None,
|
|
@@ -172,7 +167,7 @@ class AlertMessageBuilder:
|
|
|
172
167
|
|
|
173
168
|
def _get_run_alert_subtitle_links(
|
|
174
169
|
self,
|
|
175
|
-
alert:
|
|
170
|
+
alert: AlertModel,
|
|
176
171
|
) -> List[ReportLinkData]:
|
|
177
172
|
report_link = alert.get_report_link()
|
|
178
173
|
if report_link:
|
|
@@ -181,25 +176,14 @@ class AlertMessageBuilder:
|
|
|
181
176
|
|
|
182
177
|
def _get_run_alert_subtitle_blocks(
|
|
183
178
|
self,
|
|
184
|
-
alert:
|
|
179
|
+
alert: AlertModel,
|
|
185
180
|
) -> List[MessageBlock]:
|
|
186
|
-
asset_type: Literal["test", "snapshot", "model", "source"]
|
|
187
|
-
asset_name: str
|
|
188
|
-
if isinstance(alert, TestAlertModel):
|
|
189
|
-
asset_type = "test"
|
|
190
|
-
asset_name = alert.concise_name
|
|
191
|
-
elif isinstance(alert, SourceFreshnessAlertModel):
|
|
192
|
-
asset_type = "source"
|
|
193
|
-
asset_name = f"{alert.source_name}.{alert.identifier}"
|
|
194
|
-
elif isinstance(alert, ModelAlertModel):
|
|
195
|
-
asset_type = "snapshot" if alert.materialization == "snapshot" else "model"
|
|
196
|
-
asset_name = alert.alias
|
|
197
181
|
links = self._get_run_alert_subtitle_links(alert)
|
|
198
182
|
orchestrator_info = alert.orchestrator_info
|
|
199
183
|
return [
|
|
200
184
|
self._get_run_alert_subtitle_block(
|
|
201
|
-
type=asset_type,
|
|
202
|
-
name=
|
|
185
|
+
type=alert.asset_type,
|
|
186
|
+
name=alert.concise_name,
|
|
203
187
|
status=alert.status,
|
|
204
188
|
detected_at_str=alert.detected_at_str,
|
|
205
189
|
suppression_interval=alert.suppression_interval,
|
|
@@ -472,11 +456,7 @@ class AlertMessageBuilder:
|
|
|
472
456
|
|
|
473
457
|
def _get_alert_list_line(
|
|
474
458
|
self,
|
|
475
|
-
alert:
|
|
476
|
-
TestAlertModel,
|
|
477
|
-
ModelAlertModel,
|
|
478
|
-
SourceFreshnessAlertModel,
|
|
479
|
-
],
|
|
459
|
+
alert: AlertModel,
|
|
480
460
|
) -> LineBlock:
|
|
481
461
|
inlines: List[InlineBlock] = [
|
|
482
462
|
TextBlock(text=alert.summary, style=TextStyle.BOLD),
|
|
@@ -507,13 +487,7 @@ class AlertMessageBuilder:
|
|
|
507
487
|
self,
|
|
508
488
|
title: str,
|
|
509
489
|
bullet_icon: Icon,
|
|
510
|
-
alerts: Sequence[
|
|
511
|
-
Union[
|
|
512
|
-
TestAlertModel,
|
|
513
|
-
ModelAlertModel,
|
|
514
|
-
SourceFreshnessAlertModel,
|
|
515
|
-
]
|
|
516
|
-
],
|
|
490
|
+
alerts: Sequence[AlertModel],
|
|
517
491
|
) -> List[MessageBlock]:
|
|
518
492
|
blocks: List[MessageBlock] = []
|
|
519
493
|
if not alerts:
|
|
@@ -526,10 +500,10 @@ class AlertMessageBuilder:
|
|
|
526
500
|
|
|
527
501
|
def _get_sub_alert_groups_blocks(
|
|
528
502
|
self,
|
|
529
|
-
test_errors:
|
|
530
|
-
test_warnings:
|
|
531
|
-
test_failures:
|
|
532
|
-
model_errors:
|
|
503
|
+
test_errors: Sequence[AlertModel],
|
|
504
|
+
test_warnings: Sequence[AlertModel],
|
|
505
|
+
test_failures: Sequence[AlertModel],
|
|
506
|
+
model_errors: Sequence[AlertModel],
|
|
533
507
|
) -> List[MessageBlock]:
|
|
534
508
|
blocks: List[MessageBlock] = []
|
|
535
509
|
model_errors_alert_list_blocks = self._get_alert_list_blocks(
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
from typing import List, Optional,
|
|
1
|
+
from typing import List, Optional, Sequence
|
|
2
2
|
|
|
3
|
+
from elementary.monitor.alerts.alert import AlertModel
|
|
3
4
|
from elementary.monitor.alerts.alerts_groups.base_alerts_group import BaseAlertsGroup
|
|
4
5
|
from elementary.monitor.alerts.model_alert import ModelAlertModel
|
|
5
|
-
from elementary.monitor.alerts.source_freshness_alert import SourceFreshnessAlertModel
|
|
6
|
-
from elementary.monitor.alerts.test_alert import TestAlertModel
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class AlertsGroup(BaseAlertsGroup):
|
|
10
|
-
test_errors: List[
|
|
11
|
-
test_warnings: List[
|
|
12
|
-
test_failures: List[
|
|
9
|
+
test_errors: List[AlertModel]
|
|
10
|
+
test_warnings: List[AlertModel]
|
|
11
|
+
test_failures: List[AlertModel]
|
|
13
12
|
model_errors: List[ModelAlertModel]
|
|
14
13
|
|
|
15
14
|
def __init__(
|
|
16
15
|
self,
|
|
17
|
-
alerts:
|
|
16
|
+
alerts: Sequence[AlertModel],
|
|
18
17
|
env: Optional[str] = None,
|
|
19
18
|
) -> None:
|
|
20
19
|
super().__init__(alerts, env=env)
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
2
|
from datetime import datetime
|
|
3
|
-
from typing import Dict, List, Optional, Sequence
|
|
3
|
+
from typing import Dict, List, Optional, Sequence
|
|
4
4
|
|
|
5
|
-
from elementary.monitor.alerts.
|
|
6
|
-
from elementary.monitor.alerts.source_freshness_alert import SourceFreshnessAlertModel
|
|
7
|
-
from elementary.monitor.alerts.test_alert import TestAlertModel
|
|
5
|
+
from elementary.monitor.alerts.alert import AlertModel
|
|
8
6
|
|
|
9
7
|
|
|
10
8
|
class BaseAlertsGroup(ABC):
|
|
11
9
|
def __init__(
|
|
12
10
|
self,
|
|
13
|
-
alerts: Sequence[
|
|
14
|
-
Union[TestAlertModel, ModelAlertModel, SourceFreshnessAlertModel]
|
|
15
|
-
],
|
|
11
|
+
alerts: Sequence[AlertModel],
|
|
16
12
|
env: Optional[str] = None,
|
|
17
13
|
) -> None:
|
|
18
14
|
self.alerts = alerts
|
|
@@ -18,9 +18,9 @@ class ModelAlertModel(AlertModel):
|
|
|
18
18
|
alias: str,
|
|
19
19
|
path: str,
|
|
20
20
|
original_path: str,
|
|
21
|
-
materialization: str,
|
|
22
21
|
full_refresh: bool,
|
|
23
22
|
alert_class_id: str,
|
|
23
|
+
materialization: Optional[str] = None,
|
|
24
24
|
message: Optional[str] = None,
|
|
25
25
|
model_unique_id: Optional[str] = None,
|
|
26
26
|
detected_at: Optional[datetime] = None,
|
|
@@ -100,17 +100,19 @@ class ModelAlertModel(AlertModel):
|
|
|
100
100
|
full_refresh=self.full_refresh,
|
|
101
101
|
)
|
|
102
102
|
|
|
103
|
+
@property
|
|
104
|
+
def asset_type(self) -> str:
|
|
105
|
+
return "snapshot" if self.materialization == "snapshot" else "model"
|
|
106
|
+
|
|
103
107
|
@property
|
|
104
108
|
def concise_name(self) -> str:
|
|
105
|
-
|
|
106
|
-
dbt_type = "snapshot"
|
|
107
|
-
else:
|
|
108
|
-
dbt_type = "model"
|
|
109
|
-
return f"dbt {dbt_type} alert - {self.alias}"
|
|
109
|
+
return self.alias
|
|
110
110
|
|
|
111
111
|
@property
|
|
112
112
|
def summary(self) -> str:
|
|
113
|
-
|
|
113
|
+
if self.materialization:
|
|
114
|
+
return f'dbt failed to build {self.materialization} "{self.alias}"'
|
|
115
|
+
return f'dbt failed to build "{self.alias}"'
|
|
114
116
|
|
|
115
117
|
def get_report_link(self) -> Optional[ReportLinkData]:
|
|
116
118
|
return get_model_runs_link(self.report_url, self.model_unique_id)
|
|
@@ -155,9 +155,13 @@ class SourceFreshnessAlertModel(AlertModel):
|
|
|
155
155
|
freshness_description=self.freshness_description,
|
|
156
156
|
)
|
|
157
157
|
|
|
158
|
+
@property
|
|
159
|
+
def asset_type(self) -> str:
|
|
160
|
+
return "source"
|
|
161
|
+
|
|
158
162
|
@property
|
|
159
163
|
def concise_name(self) -> str:
|
|
160
|
-
return f"
|
|
164
|
+
return f"{self.source_name}.{self.identifier}"
|
|
161
165
|
|
|
162
166
|
@property
|
|
163
167
|
def error_message(self) -> str:
|
{elementary_data-0.23.1 → elementary_data-0.23.3}/elementary/monitor/api/alerts/alert_filters.py
RENAMED
|
@@ -29,7 +29,7 @@ def _get_alert_node_name(alert: PendingAlertSchema) -> Optional[str]:
|
|
|
29
29
|
alert_node_name = None
|
|
30
30
|
alert_type = AlertTypes(alert.type)
|
|
31
31
|
if alert_type is AlertTypes.TEST:
|
|
32
|
-
alert_node_name = alert.data.test_name # type: ignore[
|
|
32
|
+
alert_node_name = alert.data.test_name # type: ignore[attr-defined]
|
|
33
33
|
elif alert_type is AlertTypes.MODEL or alert_type is AlertTypes.SOURCE_FRESHNESS:
|
|
34
34
|
alert_node_name = alert.data.model_unique_id
|
|
35
35
|
else:
|
|
@@ -22,6 +22,7 @@ from elementary.messages.messaging_integrations.base_messaging_integration impor
|
|
|
22
22
|
from elementary.messages.messaging_integrations.exceptions import (
|
|
23
23
|
MessagingIntegrationError,
|
|
24
24
|
)
|
|
25
|
+
from elementary.monitor.alerts.alert import AlertModel
|
|
25
26
|
from elementary.monitor.alerts.alert_messages.builder import (
|
|
26
27
|
AlertMessageBuilder,
|
|
27
28
|
MessageBuilderConfig,
|
|
@@ -385,13 +386,7 @@ class DataMonitoringAlerts(DataMonitoring):
|
|
|
385
386
|
self.execution_properties["sent_alert_count"] = self.sent_alert_count
|
|
386
387
|
return
|
|
387
388
|
|
|
388
|
-
sent_successfully_alerts: List[
|
|
389
|
-
Union[
|
|
390
|
-
TestAlertModel,
|
|
391
|
-
ModelAlertModel,
|
|
392
|
-
SourceFreshnessAlertModel,
|
|
393
|
-
]
|
|
394
|
-
] = []
|
|
389
|
+
sent_successfully_alerts: List[AlertModel] = []
|
|
395
390
|
|
|
396
391
|
with alive_bar(len(alerts), title="Sending alerts") as bar:
|
|
397
392
|
for alert in alerts:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
2
|
from typing import Union
|
|
3
3
|
|
|
4
|
+
from elementary.monitor.alerts.alert import AlertModel
|
|
4
5
|
from elementary.monitor.alerts.alerts_groups import GroupedByTableAlerts
|
|
5
6
|
from elementary.monitor.alerts.alerts_groups.base_alerts_group import BaseAlertsGroup
|
|
6
7
|
from elementary.monitor.alerts.model_alert import ModelAlertModel
|
|
@@ -21,13 +22,7 @@ class BaseIntegration(ABC):
|
|
|
21
22
|
|
|
22
23
|
def _get_alert_template(
|
|
23
24
|
self,
|
|
24
|
-
alert: Union[
|
|
25
|
-
TestAlertModel,
|
|
26
|
-
ModelAlertModel,
|
|
27
|
-
SourceFreshnessAlertModel,
|
|
28
|
-
GroupedByTableAlerts,
|
|
29
|
-
BaseAlertsGroup,
|
|
30
|
-
],
|
|
25
|
+
alert: Union[AlertModel, GroupedByTableAlerts, BaseAlertsGroup],
|
|
31
26
|
*args,
|
|
32
27
|
**kwargs,
|
|
33
28
|
):
|
|
@@ -83,12 +78,7 @@ class BaseIntegration(ABC):
|
|
|
83
78
|
@abstractmethod
|
|
84
79
|
def _get_fallback_template(
|
|
85
80
|
self,
|
|
86
|
-
alert: Union[
|
|
87
|
-
TestAlertModel,
|
|
88
|
-
ModelAlertModel,
|
|
89
|
-
SourceFreshnessAlertModel,
|
|
90
|
-
GroupedByTableAlerts,
|
|
91
|
-
],
|
|
81
|
+
alert: Union[AlertModel, GroupedByTableAlerts],
|
|
92
82
|
*args,
|
|
93
83
|
**kwargs,
|
|
94
84
|
):
|
|
@@ -97,13 +87,7 @@ class BaseIntegration(ABC):
|
|
|
97
87
|
@abstractmethod
|
|
98
88
|
def send_alert(
|
|
99
89
|
self,
|
|
100
|
-
alert: Union[
|
|
101
|
-
TestAlertModel,
|
|
102
|
-
ModelAlertModel,
|
|
103
|
-
SourceFreshnessAlertModel,
|
|
104
|
-
GroupedByTableAlerts,
|
|
105
|
-
BaseAlertsGroup,
|
|
106
|
-
],
|
|
90
|
+
alert: Union[AlertModel, GroupedByTableAlerts, BaseAlertsGroup],
|
|
107
91
|
*args,
|
|
108
92
|
**kwargs,
|
|
109
93
|
) -> bool:
|
|
@@ -9,6 +9,7 @@ from elementary.clients.slack.client import SlackClient, SlackWebClient
|
|
|
9
9
|
from elementary.clients.slack.schema import SlackBlocksType, SlackMessageSchema
|
|
10
10
|
from elementary.clients.slack.slack_message_builder import MessageColor
|
|
11
11
|
from elementary.config.config import Config
|
|
12
|
+
from elementary.monitor.alerts.alert import AlertModel
|
|
12
13
|
from elementary.monitor.alerts.alerts_groups import AlertsGroup, GroupedByTableAlerts
|
|
13
14
|
from elementary.monitor.alerts.alerts_groups.base_alerts_group import BaseAlertsGroup
|
|
14
15
|
from elementary.monitor.alerts.model_alert import ModelAlertModel
|
|
@@ -94,13 +95,7 @@ class SlackIntegration(BaseIntegration):
|
|
|
94
95
|
|
|
95
96
|
def _get_alert_template(
|
|
96
97
|
self,
|
|
97
|
-
alert: Union[
|
|
98
|
-
TestAlertModel,
|
|
99
|
-
ModelAlertModel,
|
|
100
|
-
SourceFreshnessAlertModel,
|
|
101
|
-
GroupedByTableAlerts,
|
|
102
|
-
BaseAlertsGroup,
|
|
103
|
-
],
|
|
98
|
+
alert: Union[AlertModel, GroupedByTableAlerts, BaseAlertsGroup],
|
|
104
99
|
*args,
|
|
105
100
|
**kwargs,
|
|
106
101
|
) -> SlackMessageSchema:
|
|
@@ -875,14 +870,7 @@ class SlackIntegration(BaseIntegration):
|
|
|
875
870
|
def _add_compact_sub_group_details_block(
|
|
876
871
|
self,
|
|
877
872
|
details_blocks: list,
|
|
878
|
-
alerts: Sequence[
|
|
879
|
-
Union[
|
|
880
|
-
TestAlertModel,
|
|
881
|
-
ModelAlertModel,
|
|
882
|
-
SourceFreshnessAlertModel,
|
|
883
|
-
GroupedByTableAlerts,
|
|
884
|
-
],
|
|
885
|
-
],
|
|
873
|
+
alerts: Sequence[Union[AlertModel, GroupedByTableAlerts]],
|
|
886
874
|
sub_title: str,
|
|
887
875
|
bullet_icon: str,
|
|
888
876
|
) -> None:
|
|
@@ -941,14 +929,7 @@ class SlackIntegration(BaseIntegration):
|
|
|
941
929
|
def _add_sub_group_details_block(
|
|
942
930
|
self,
|
|
943
931
|
details_blocks: list,
|
|
944
|
-
alerts: Sequence[
|
|
945
|
-
Union[
|
|
946
|
-
TestAlertModel,
|
|
947
|
-
ModelAlertModel,
|
|
948
|
-
SourceFreshnessAlertModel,
|
|
949
|
-
GroupedByTableAlerts,
|
|
950
|
-
],
|
|
951
|
-
],
|
|
932
|
+
alerts: Sequence[Union[AlertModel, GroupedByTableAlerts]],
|
|
952
933
|
sub_title: str,
|
|
953
934
|
bullet_icon: str,
|
|
954
935
|
) -> None:
|
|
@@ -1036,13 +1017,7 @@ class SlackIntegration(BaseIntegration):
|
|
|
1036
1017
|
|
|
1037
1018
|
def _get_fallback_template(
|
|
1038
1019
|
self,
|
|
1039
|
-
alert: Union[
|
|
1040
|
-
TestAlertModel,
|
|
1041
|
-
ModelAlertModel,
|
|
1042
|
-
SourceFreshnessAlertModel,
|
|
1043
|
-
GroupedByTableAlerts,
|
|
1044
|
-
BaseAlertsGroup,
|
|
1045
|
-
],
|
|
1020
|
+
alert: Union[AlertModel, GroupedByTableAlerts, BaseAlertsGroup],
|
|
1046
1021
|
*args,
|
|
1047
1022
|
**kwargs,
|
|
1048
1023
|
) -> SlackMessageSchema:
|
|
@@ -1079,13 +1054,7 @@ class SlackIntegration(BaseIntegration):
|
|
|
1079
1054
|
|
|
1080
1055
|
def _fix_owners_and_subscribers(
|
|
1081
1056
|
self,
|
|
1082
|
-
alert: Union[
|
|
1083
|
-
TestAlertModel,
|
|
1084
|
-
ModelAlertModel,
|
|
1085
|
-
SourceFreshnessAlertModel,
|
|
1086
|
-
GroupedByTableAlerts,
|
|
1087
|
-
BaseAlertsGroup,
|
|
1088
|
-
],
|
|
1057
|
+
alert: Union[AlertModel, GroupedByTableAlerts, BaseAlertsGroup],
|
|
1089
1058
|
):
|
|
1090
1059
|
if isinstance(alert, BaseAlertsGroup):
|
|
1091
1060
|
for inner_alert in alert.alerts:
|
|
@@ -1099,13 +1068,7 @@ class SlackIntegration(BaseIntegration):
|
|
|
1099
1068
|
|
|
1100
1069
|
def send_alert(
|
|
1101
1070
|
self,
|
|
1102
|
-
alert: Union[
|
|
1103
|
-
TestAlertModel,
|
|
1104
|
-
ModelAlertModel,
|
|
1105
|
-
SourceFreshnessAlertModel,
|
|
1106
|
-
GroupedByTableAlerts,
|
|
1107
|
-
BaseAlertsGroup,
|
|
1108
|
-
],
|
|
1071
|
+
alert: Union[AlertModel, GroupedByTableAlerts, BaseAlertsGroup],
|
|
1109
1072
|
*args,
|
|
1110
1073
|
**kwargs,
|
|
1111
1074
|
) -> bool:
|
|
@@ -1164,13 +1127,7 @@ class SlackIntegration(BaseIntegration):
|
|
|
1164
1127
|
|
|
1165
1128
|
def _get_integration_params(
|
|
1166
1129
|
self,
|
|
1167
|
-
alert: Union[
|
|
1168
|
-
TestAlertModel,
|
|
1169
|
-
ModelAlertModel,
|
|
1170
|
-
SourceFreshnessAlertModel,
|
|
1171
|
-
GroupedByTableAlerts,
|
|
1172
|
-
BaseAlertsGroup,
|
|
1173
|
-
],
|
|
1130
|
+
alert: Union[AlertModel, GroupedByTableAlerts, BaseAlertsGroup],
|
|
1174
1131
|
*args,
|
|
1175
1132
|
**kwargs,
|
|
1176
1133
|
) -> Dict[str, Any]:
|