elementary-data 0.23.3__tar.gz → 0.24.0__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.3 → elementary_data-0.24.0}/PKG-INFO +4 -5
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/formats/block_kit.py +42 -21
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/report/report.py +2 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/tests/tests.py +4 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/report/index.html +1652 -1286
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/base_queries/current_tests_run_results_query.sql +2 -2
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_adapter_type_and_unique_id.sql +4 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_test_results.sql +33 -18
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/package-lock.yml +2 -2
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/packages.yml +2 -2
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/tests/tests.py +2 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/pyproject.toml +11 -10
- elementary_data-0.23.3/elementary.pth +0 -1
- {elementary_data-0.23.3 → elementary_data-0.24.0}/LICENSE +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/README.md +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/.prettierignore +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/cli/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/cli/cli.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/cli/logo.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/cli/upgrade.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/api/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/api/api_client.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/azure/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/azure/client.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/api_dbt_runner.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/base_dbt_runner.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/command_line_dbt_runner.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/dbt_fusion_runner.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/dbt_log.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/factory.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/subprocess_dbt_runner.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/dbt/transient_errors.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/fetcher/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/fetcher/fetcher.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/gcs/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/gcs/client.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/s3/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/s3/client.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/slack/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/slack/client.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/slack/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/clients/slack/slack_message_builder.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/config/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/config/config.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/exceptions/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/exceptions/exceptions.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/README.md +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/block_builders.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/blocks.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/formats/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/formats/adaptive_cards.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/formats/html.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/formats/markdown.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/formats/text.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/formats/unicode.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/message_body.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/README.md +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/base_messaging_integration.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/empty_message_context.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/exceptions.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/file_system.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/mapped.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/slack_web.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/slack_webhook.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/messages/messaging_integrations/teams_webhook.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/alert.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/alert_messages/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/alert_messages/alert_fields.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/alert_messages/builder.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/alerts_groups/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/alerts_groups/alerts_group.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/alerts_groups/base_alerts_group.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/alerts_groups/grouped_by_table.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/grouping_type.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/model_alert.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/source_freshness_alert.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/alerts/test_alert.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/alerts/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/alerts/alert_filters.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/alerts/alerts.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/filters/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/filters/filters.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/filters/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/groups/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/groups/groups.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/groups/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/groups/tree_builder.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/invocations/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/invocations/invocations.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/invocations/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/lineage/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/lineage/lineage.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/lineage/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/models/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/models/models.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/models/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/report/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/report/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/report/totals_utils.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/selector/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/selector/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/selector/selector.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/source_freshnesses/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/source_freshnesses/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/source_freshnesses/source_freshnesses.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/tests/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/tests/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/tests/utils.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/api/totals_schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/cli.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/data_monitoring_alerts.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/README.md +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/base_integration.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/integrations.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/slack/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/slack/message_builder.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/slack/slack.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/utils/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/utils/orchestrator_link.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/integrations/utils/report_link.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/alerts/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/data_monitoring.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/report/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/report/data_monitoring_report.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/report/slack_report_summary_message_builder.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/data_monitoring/selector_filter.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_init.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/.gitignore +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/README.md +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/analyses/.gitkeep +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/dbt_project.yml +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/fetchers/get_alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/manage/update_sent_alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/manage/update_skipped_alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/population/model_alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/population/populate_alerts_table.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/population/source_freshness_alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/population/test_alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/population/utils/empty_alert_tables.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/population/utils/generate_alert_object.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/population/utils/get_alerts_model_detected_at_expr.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/alerts/population/utils/get_new_alerts_where_clause.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/base_queries/owners.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/base_queries/resources.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/base_queries/tags.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/can_upload_source_freshness.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/empty_elementary_exposures.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_alerts_time_limit.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_dbt_models_test_coverage.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_elementary_database_and_schema.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_elementary_table_nodes.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_exposures.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_latest_invocation.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_models.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_models_latest_invocation.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_models_latest_invocations_data.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_models_runs.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_nodes_depends_on_nodes.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_result_rows_agate.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_seeds.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_singular_tests.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_snapshots.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_source_freshness_results.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_sources.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_test_last_invocation.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_test_rows_sample.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/get_tests.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/internal_tests/validate_alert_statuses_are_updated.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/materializations/nothing.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/overrides/ref.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/test_conn.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/tests/unique_if_exists.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/upload_source_freshness.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/utils/edr_quote_identifier.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/macros/utils/normalized_source_freshness_status.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/alerts/alerts_v2.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts_models.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/alerts/deprecated/alerts_source_freshness.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/elementary.yml +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/elementary_exposures/elementary_exposures.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/elementary_exposures.yml +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/enriched_exposures/enriched_exposures.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/update_alerts/update_sent_alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/models/update_alerts/update_skipped_alerts.sql +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/snapshots/.gitkeep +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project/tests/.gitkeep +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/dbt_project_utils.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/debug.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/alerts/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/alerts/alerts.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/alerts/schema/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/alerts/schema/alert_data.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/alerts/schema/pending_alerts.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/base_fetcher.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/invocations/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/invocations/invocations.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/invocations/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/lineage/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/lineage/lineage.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/models/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/models/models.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/models/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/selector/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/selector/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/selector/selector.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/source_freshnesses/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/source_freshnesses/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/source_freshnesses/source_freshnesses.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/tests/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/monitor/fetchers/tests/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/operations/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/operations/cli.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/operations/upload_source_freshness.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/py.typed +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/tracking/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/tracking/anonymous_tracking.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/tracking/runner.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/tracking/tracking_interface.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/__init__.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/bucket_path.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/cli_utils.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/cwd.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/dicts.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/env_vars.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/env_vars_context.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/hash.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/json_utils.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/log.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/models.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/ordered_yaml.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/package.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/pydantic_shim.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/schema.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/ssl.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/strings.py +0 -0
- {elementary_data-0.23.3 → elementary_data-0.24.0}/elementary/utils/time.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: elementary-data
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.24.0
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
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)
|
|
@@ -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(
|