validio-sdk 0.25.2__tar.gz → 0.26.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.
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/PKG-INFO +1 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/pyproject.toml +6 -5
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/__init__.py +4 -7
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/_api/api.py +195 -53
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/client/__init__.py +1 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/code/apply.py +8 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/code/plan.py +36 -6
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/config.py +4 -4
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/dbt.py +6 -3
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/client.py +0 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_diff.py +71 -28
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_diffable.py +18 -2
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_resource.py +88 -10
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_serde.py +3 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_server_resources.py +145 -58
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_update_namespace.py +1 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/channels.py +21 -47
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/credentials.py +90 -24
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/filters.py +8 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/notification_rules.py +41 -7
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/segmentations.py +3 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/sources.py +28 -151
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tags.py +2 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/test__diff.py +1 -19
- validio_sdk-0.26.0/validio_sdk/resource/tests/test__plan.py +378 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/test__resource.py +28 -29
- validio_sdk-0.26.0/validio_sdk/resource/tests/test__sql_validation.py +135 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/test_import.py +1 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/thresholds.py +4 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/validators.py +121 -68
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/windows.py +28 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/validio_client.py +3 -3
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/LICENSE +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/README_PUBLIC.md +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/_api/__init__.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/client/client.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/code/__init__.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/code/_import.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/code/_progress.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/code/scaffold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/code/settings.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/exception.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/__init__.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/add_catalog_asset_tags.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/add_team_members.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/apply_validator_recommendation.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/async_base_client.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/aws_athena_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/aws_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/aws_redshift_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/azure_synapse_entra_id_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/azure_synapse_sql_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/backfill_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/base_model.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/click_house_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_aws_athena_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_aws_athena_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_aws_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_aws_kinesis_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_aws_redshift_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_aws_redshift_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_aws_s3_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_azure_synapse_entra_id_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_azure_synapse_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_azure_synapse_sql_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_boolean_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_categorical_distribution_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_categorical_distribution_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_categorical_distribution_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_click_house_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_click_house_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_databricks_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_databricks_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_dbt_cloud_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_dbt_core_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_dbt_model_run_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_dbt_test_result_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_demo_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_demo_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_enum_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_file_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_fixed_batch_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_freshness_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_freshness_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_freshness_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_gcp_big_query_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_gcp_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_gcp_pub_sub_lite_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_gcp_pub_sub_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_gcp_storage_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_global_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_kafka_sasl_ssl_plain_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_kafka_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_kafka_ssl_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_lineage_edge.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_looker_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_ms_power_bi_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_ms_teams_channel.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_namespace.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_notification_rule.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_null_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_anomaly_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_anomaly_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_anomaly_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_distribution_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_distribution_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_distribution_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_numeric_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_owner_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_postgre_sql_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_postgre_sql_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_relative_time_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_relative_time_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_relative_time_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_relative_volume_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_relative_volume_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_relative_volume_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_saml_identity_provider.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_segment_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_segmentation.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_severity_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_slack_channel.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_snowflake_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_snowflake_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_source_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_sql_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_sql_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_sql_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_sql_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_string_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_tableau_connected_app_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_tableau_personal_access_token_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_tag.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_tag_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_team.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_threshold_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_tumbling_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_type_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_user.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_volume_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_volume_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_volume_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/create_webhook_channel.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/databricks_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/dbt_artifact_multipart_upload_append_part.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/dbt_artifact_multipart_upload_complete.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/dbt_artifact_multipart_upload_create.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/dbt_artifact_upload.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/dbt_cloud_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_catalog_asset_tags.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_channel.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_credentials.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_filters.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_identity.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_identity_provider.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_lineage_edges.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_namespaces.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_notification_rule.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_segmentation.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_sources.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_tags.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_team.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_user.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_validators.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/delete_windows.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/dismiss_validator_recommendation.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/enums.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/exceptions.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/fragments.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/gcp_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_channel_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_credential_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_databricks_warehouse_info.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_group_incidents.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_identity_provider_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_incident_group.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_incident_groups.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_incident_past_groups.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_incident_related_groups.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_lineage_edge.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_lineage_graph.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_namespace.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_notification_rule.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_notification_rule_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_segmentation.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_segmentation_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_segments_by_segmentation.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_source_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_source_by_resource_name_deprecated.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_source_incident_groups.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_source_manual_poll_progress.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_source_recommended_validators.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_tag.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_team.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_teams.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_user_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_validator_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_validator_incidents.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_validator_metric_debug_info.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_validator_metric_debug_records.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_validator_segment_metrics.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/get_window_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_aws_athena_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_aws_kinesis_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_aws_redshift_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_aws_s3_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_azure_synapse_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_click_house_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_databricks_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_dbt_model_run_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_dbt_test_result_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_demo_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_gcp_big_query_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_gcp_pub_sub_lite_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_gcp_pub_sub_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_gcp_storage_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_kafka_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_postgre_sql_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_sample_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/infer_snowflake_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/input_types.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/kafka_sasl_ssl_plain_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/kafka_ssl_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_channels.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_credentials.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_filters.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_identity_providers.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_namespaces.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_notification_rules.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_resource_namespaces.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_segmentations.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_sources.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_tags.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_users.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_validators.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/list_windows.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/looker_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/ms_power_bi_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/ms_teams_channel_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/mute_incident_group.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/mute_incidents.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/mute_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/mute_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/poll_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/poll_source_manually.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/postgre_sql_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/remove_team_members.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/reset_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/revoke_namespace_roles.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/segments.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/segments_by_resource_name.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/slack_channel_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/snowflake_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/sql_filter_verification.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/sql_validator_query_verification.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/start_databricks_warehouse.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/start_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/stop_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/tableau_connected_app_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/tableau_personal_access_token_credential_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/translate_incident_v_1_to_group_id.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/unmute_incident_group.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/unmute_incidents.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/unmute_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/unmute_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_aws_athena_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_aws_athena_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_aws_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_aws_kinesis_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_aws_redshift_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_aws_redshift_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_aws_s3_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_azure_synapse_entra_id_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_azure_synapse_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_azure_synapse_sql_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_boolean_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_categorical_distribution_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_channel_namespace.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_click_house_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_click_house_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_credential_namespace.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_databricks_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_databricks_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_dbt_cloud_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_dbt_core_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_dbt_model_run_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_dbt_test_result_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_demo_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_demo_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_enum_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_file_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_fixed_batch_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_freshness_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_gcp_big_query_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_gcp_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_gcp_pub_sub_lite_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_gcp_pub_sub_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_gcp_storage_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_global_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_incident_group_owner.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_incident_group_status.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_incident_status.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_kafka_sasl_ssl_plain_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_kafka_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_kafka_ssl_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_local_identity_provider.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_looker_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_ms_power_bi_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_ms_teams_channel.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_namespace.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_namespace_roles.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_notification_rule.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_null_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_numeric_anomaly_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_numeric_distribution_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_numeric_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_owner_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_postgre_sql_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_postgre_sql_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_relative_time_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_relative_volume_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_saml_identity_provider.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_segment_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_segmentation.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_severity_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_slack_channel.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_snowflake_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_snowflake_source.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_source_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_source_owner.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_sql_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_sql_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_string_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_tableau_connected_app_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_tableau_personal_access_token_credential.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_tag.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_tag_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_team.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_threshold_filter.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_tumbling_window.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_type_notification_rule_condition.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_user.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_validator_with_difference_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_validator_with_dynamic_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_validator_with_fixed_threshold.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_volume_validator.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/update_webhook_channel.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/verify_source_schema.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/graphql_client/webhook_channel_secret_changed.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/metadata.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/py.typed +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/__init__.py +1 -1
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_diff_util.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_errors.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_field_selector.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_resource_graph.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/_util.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/replacement.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/__init__.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/assets/example_manifest.json +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/assets/expected_trimmed_manifest.json +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/test__channel.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/test__dbt.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/resource/tests/test__field_selector.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/scalars.py +0 -0
- {validio_sdk-0.25.2 → validio_sdk-0.26.0}/validio_sdk/util.py +0 -0
|
@@ -3,7 +3,7 @@ name = "validio-sdk"
|
|
|
3
3
|
# This version does not represent the released version or any tag. For each
|
|
4
4
|
# release we automatically bump this before building and publishing so this
|
|
5
5
|
# should be kept at 0.0.1dev1
|
|
6
|
-
version = "0.
|
|
6
|
+
version = "0.26.0"
|
|
7
7
|
description = "SDK to interact with the Validio platform"
|
|
8
8
|
authors = ["Validio <support@validio.io>"]
|
|
9
9
|
license = "Apache-2.0"
|
|
@@ -31,7 +31,7 @@ licensecheck = "^2023.1.1"
|
|
|
31
31
|
mypy = "^1.2.0"
|
|
32
32
|
pytest = "^7.3.1"
|
|
33
33
|
pytest-asyncio = "^0.21.0"
|
|
34
|
-
ruff = "^0.
|
|
34
|
+
ruff = "^0.9.6"
|
|
35
35
|
sphinx = "^6.2.1" # We use <7 because most themes only work with that.
|
|
36
36
|
sphinx-rtd-theme = "^1.2.1"
|
|
37
37
|
ariadne-codegen = "0.14.0"
|
|
@@ -126,6 +126,7 @@ exclude = [
|
|
|
126
126
|
"docs/*",
|
|
127
127
|
]
|
|
128
128
|
|
|
129
|
+
[tool.ruff.lint]
|
|
129
130
|
select = [
|
|
130
131
|
"ARG", # flake8-unused-argument
|
|
131
132
|
"C4", # flake8-comprehension
|
|
@@ -152,7 +153,7 @@ ignore = [
|
|
|
152
153
|
"PLR0913", # Too many arguments to function call (named arguments take care of this)
|
|
153
154
|
]
|
|
154
155
|
|
|
155
|
-
[tool.ruff.per-file-ignores]
|
|
156
|
+
[tool.ruff.lint.per-file-ignores]
|
|
156
157
|
"__init__.py" = [
|
|
157
158
|
# We don't need docstrings in __init__
|
|
158
159
|
"D104",
|
|
@@ -165,13 +166,13 @@ ignore = [
|
|
|
165
166
|
"*/graphql_client/*.py" = ["D"]
|
|
166
167
|
"*/tests/*.py" = ["D"]
|
|
167
168
|
|
|
168
|
-
[tool.ruff.pydocstyle]
|
|
169
|
+
[tool.ruff.lint.pydocstyle]
|
|
169
170
|
convention = "google"
|
|
170
171
|
|
|
171
172
|
[tool.mypy]
|
|
172
173
|
ignore_missing_imports = true
|
|
173
174
|
disallow_untyped_calls = true
|
|
174
|
-
disallow_untyped_defs = true
|
|
175
|
+
disallow_untyped_defs = false # TODO(Set to true when generated client is deleted)
|
|
175
176
|
disallow_incomplete_defs = true
|
|
176
177
|
check_untyped_defs = true
|
|
177
178
|
disallow_untyped_decorators = true
|
|
@@ -25,24 +25,21 @@ from validio_sdk.resource.filters import (
|
|
|
25
25
|
from validio_sdk.util import load_jtd_schema
|
|
26
26
|
|
|
27
27
|
__all__ = [
|
|
28
|
-
# Filters
|
|
29
28
|
"BooleanFilter",
|
|
30
29
|
"BooleanFilterOperator",
|
|
30
|
+
"ConfigInvalidError",
|
|
31
|
+
"ConfigNotFoundError",
|
|
31
32
|
"EnumFilter",
|
|
32
33
|
"EnumFilterOperator",
|
|
33
34
|
"NullFilter",
|
|
34
35
|
"NullFilterOperator",
|
|
36
|
+
"SqlFilter",
|
|
35
37
|
"StringFilter",
|
|
36
38
|
"StringFilterOperator",
|
|
37
39
|
"ThresholdFilter",
|
|
38
40
|
"ThresholdFilterOperator",
|
|
39
|
-
"SqlFilter",
|
|
40
|
-
# Exceptions
|
|
41
|
-
"ValidioError",
|
|
42
|
-
"ConfigNotFoundError",
|
|
43
|
-
"ConfigInvalidError",
|
|
44
41
|
"UnauthorizedError",
|
|
45
42
|
"ValidioConnectionError",
|
|
46
|
-
|
|
43
|
+
"ValidioError",
|
|
47
44
|
"load_jtd_schema",
|
|
48
45
|
]
|
|
@@ -241,6 +241,38 @@ class APIClient:
|
|
|
241
241
|
async with self.client as session:
|
|
242
242
|
return await delete_namespace(session, namespace_id)
|
|
243
243
|
|
|
244
|
+
async def delete_credentials(self, credential_ids: list[str]) -> Any:
|
|
245
|
+
async with self.client as session:
|
|
246
|
+
return await delete_credentials(session, credential_ids)
|
|
247
|
+
|
|
248
|
+
async def delete_channels(self, channel_ids: list[str]) -> Any:
|
|
249
|
+
async with self.client as session:
|
|
250
|
+
return await delete_channels(session, channel_ids)
|
|
251
|
+
|
|
252
|
+
async def delete_sources(self, source_ids: list[str]) -> Any:
|
|
253
|
+
async with self.client as session:
|
|
254
|
+
return await delete_sources(session, source_ids)
|
|
255
|
+
|
|
256
|
+
async def delete_windows(self, window_ids: list[str]) -> Any:
|
|
257
|
+
async with self.client as session:
|
|
258
|
+
return await delete_windows(session, window_ids)
|
|
259
|
+
|
|
260
|
+
async def delete_segmentations(self, segmentation_ids: list[str]) -> Any:
|
|
261
|
+
async with self.client as session:
|
|
262
|
+
return await delete_segmentations(session, segmentation_ids)
|
|
263
|
+
|
|
264
|
+
async def delete_filters(self, filter_ids: list[str]) -> Any:
|
|
265
|
+
async with self.client as session:
|
|
266
|
+
return await delete_filters(session, filter_ids)
|
|
267
|
+
|
|
268
|
+
async def delete_notification_rules(self, notification_rule_ids: list[str]) -> Any:
|
|
269
|
+
async with self.client as session:
|
|
270
|
+
return await delete_notification_rules(session, notification_rule_ids)
|
|
271
|
+
|
|
272
|
+
async def delete_validators(self, validator_ids: list[str]) -> Any:
|
|
273
|
+
async with self.client as session:
|
|
274
|
+
return await delete_validators(session, validator_ids)
|
|
275
|
+
|
|
244
276
|
async def get_recommendations(self, source_id: str) -> Any:
|
|
245
277
|
async with self.client as session:
|
|
246
278
|
return await get_recommendations(session, source_id)
|
|
@@ -368,17 +400,6 @@ async def get_sources(
|
|
|
368
400
|
}
|
|
369
401
|
}
|
|
370
402
|
}
|
|
371
|
-
... on GcpPubSubLiteSource {
|
|
372
|
-
config {
|
|
373
|
-
location
|
|
374
|
-
project
|
|
375
|
-
subscriptionId
|
|
376
|
-
messageFormat {
|
|
377
|
-
format
|
|
378
|
-
schema
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
403
|
... on AwsAthenaSource {
|
|
383
404
|
config {
|
|
384
405
|
catalog
|
|
@@ -554,7 +575,7 @@ async def get_sources(
|
|
|
554
575
|
async def secrets_changed_by_field(
|
|
555
576
|
session: Session,
|
|
556
577
|
class_name: str,
|
|
557
|
-
|
|
578
|
+
query_response_fields: str,
|
|
558
579
|
variable_values: dict[str, Any],
|
|
559
580
|
) -> Any:
|
|
560
581
|
"""Check if secrets changed. This is only compatible with APIs that return
|
|
@@ -562,8 +583,7 @@ async def secrets_changed_by_field(
|
|
|
562
583
|
|
|
563
584
|
Create a query and input types for the passed class name.
|
|
564
585
|
:param class_name: Name of resource class, e.g. RedshiftCredential
|
|
565
|
-
:param
|
|
566
|
-
the results of change per field
|
|
586
|
+
:param query_response_fields: Query response that contains secret fields changed.
|
|
567
587
|
:param variable_values: Dictionary with secret fields
|
|
568
588
|
:returns: GraphQL response containing which fields have changed
|
|
569
589
|
"""
|
|
@@ -571,13 +591,11 @@ async def secrets_changed_by_field(
|
|
|
571
591
|
method_name = f"{lc_first}SecretChanged"
|
|
572
592
|
input_type = f"{class_name}SecretChangedInput!"
|
|
573
593
|
|
|
574
|
-
return_fields_query: str = "\n".join(return_fields)
|
|
575
|
-
|
|
576
594
|
query = f"""
|
|
577
595
|
query Op($input: {input_type}) {{
|
|
578
596
|
{method_name}(input: $input) {{
|
|
579
|
-
{return_fields_query}
|
|
580
597
|
errors {{ code message }}
|
|
598
|
+
{query_response_fields}
|
|
581
599
|
}}
|
|
582
600
|
}}
|
|
583
601
|
"""
|
|
@@ -631,7 +649,7 @@ async def dbt_artifact_multipart_upload_create(
|
|
|
631
649
|
|
|
632
650
|
if response["errors"]:
|
|
633
651
|
raise ValidioError(
|
|
634
|
-
f
|
|
652
|
+
f"Failed to create dbt multipart upload: {response['errors']}",
|
|
635
653
|
)
|
|
636
654
|
|
|
637
655
|
return response["id"]
|
|
@@ -654,7 +672,7 @@ async def dbt_artifact_multipart_upload_append_part(
|
|
|
654
672
|
|
|
655
673
|
if response["errors"]:
|
|
656
674
|
raise ValidioError(
|
|
657
|
-
f
|
|
675
|
+
f"Failed to append dbt multipart upload: {response['errors']}",
|
|
658
676
|
)
|
|
659
677
|
|
|
660
678
|
|
|
@@ -670,7 +688,7 @@ async def dbt_artifact_multipart_upload_complete(
|
|
|
670
688
|
|
|
671
689
|
if response["errors"]:
|
|
672
690
|
raise ValidioError(
|
|
673
|
-
f
|
|
691
|
+
f"Failed to finalize dbt multipart upload: {response['errors']}",
|
|
674
692
|
)
|
|
675
693
|
|
|
676
694
|
|
|
@@ -710,7 +728,6 @@ async def validator_segment_metrics(
|
|
|
710
728
|
isIncident
|
|
711
729
|
value
|
|
712
730
|
severity
|
|
713
|
-
deviation
|
|
714
731
|
... on ValidatorMetricWithFixedThreshold {
|
|
715
732
|
operator
|
|
716
733
|
bound
|
|
@@ -1038,6 +1055,8 @@ async def get_credentials(
|
|
|
1038
1055
|
variable_values = _namespace_filter(namespace_id)
|
|
1039
1056
|
|
|
1040
1057
|
result = await execute(session, query, variable_values=variable_values)
|
|
1058
|
+
if not result:
|
|
1059
|
+
return result
|
|
1041
1060
|
|
|
1042
1061
|
if isinstance(result, list):
|
|
1043
1062
|
return_first = False
|
|
@@ -1071,7 +1090,6 @@ async def get_channels(
|
|
|
1071
1090
|
... on SlackChannel {
|
|
1072
1091
|
config {
|
|
1073
1092
|
slackWebhookUrl: webhookUrl
|
|
1074
|
-
timezone
|
|
1075
1093
|
applicationLinkUrl
|
|
1076
1094
|
slackChannelId
|
|
1077
1095
|
interactiveMessageEnabled
|
|
@@ -1081,13 +1099,11 @@ async def get_channels(
|
|
|
1081
1099
|
config {
|
|
1082
1100
|
webhookUrl
|
|
1083
1101
|
applicationLinkUrl
|
|
1084
|
-
authHeader
|
|
1085
1102
|
}
|
|
1086
1103
|
}
|
|
1087
1104
|
... on MsTeamsChannel {
|
|
1088
1105
|
config {
|
|
1089
1106
|
msTeamsWebhookUrl: webhookUrl
|
|
1090
|
-
timezone
|
|
1091
1107
|
applicationLinkUrl
|
|
1092
1108
|
msTeamsChannelId
|
|
1093
1109
|
msTeamsInteractiveMessageEnabled: interactiveMessageEnabled
|
|
@@ -1126,6 +1142,8 @@ async def get_channels(
|
|
|
1126
1142
|
variable_values = _namespace_filter(namespace_id)
|
|
1127
1143
|
|
|
1128
1144
|
result = await execute(session, query, variable_values=variable_values)
|
|
1145
|
+
if not result:
|
|
1146
|
+
return result
|
|
1129
1147
|
|
|
1130
1148
|
if isinstance(result, list):
|
|
1131
1149
|
return_first = False
|
|
@@ -1273,7 +1291,6 @@ async def get_segments(
|
|
|
1273
1291
|
segment_details = """
|
|
1274
1292
|
fragment SegmentDetails on Segment {
|
|
1275
1293
|
id
|
|
1276
|
-
muted
|
|
1277
1294
|
fields {
|
|
1278
1295
|
field
|
|
1279
1296
|
value
|
|
@@ -1342,12 +1359,21 @@ async def get_windows(
|
|
|
1342
1359
|
}
|
|
1343
1360
|
... on FileWindow {
|
|
1344
1361
|
dataTimeField
|
|
1362
|
+
config {
|
|
1363
|
+
segmentRetentionPeriodDays
|
|
1364
|
+
}
|
|
1365
|
+
}
|
|
1366
|
+
... on GlobalWindow {
|
|
1367
|
+
config {
|
|
1368
|
+
segmentRetentionPeriodDays
|
|
1369
|
+
}
|
|
1345
1370
|
}
|
|
1346
1371
|
... on FixedBatchWindow {
|
|
1347
1372
|
config {
|
|
1348
1373
|
batchSize
|
|
1349
1374
|
segmentedBatching
|
|
1350
1375
|
batchTimeoutSecs
|
|
1376
|
+
segmentRetentionPeriodDays
|
|
1351
1377
|
}
|
|
1352
1378
|
dataTimeField
|
|
1353
1379
|
}
|
|
@@ -1356,6 +1382,7 @@ async def get_windows(
|
|
|
1356
1382
|
windowSize
|
|
1357
1383
|
timeUnit
|
|
1358
1384
|
windowTimeoutDisabled
|
|
1385
|
+
segmentRetentionPeriodDays
|
|
1359
1386
|
}
|
|
1360
1387
|
dataTimeField
|
|
1361
1388
|
}
|
|
@@ -1565,12 +1592,6 @@ async def get_validators(
|
|
|
1565
1592
|
|
|
1566
1593
|
reference_source_config = """
|
|
1567
1594
|
referenceSourceConfig {
|
|
1568
|
-
source {
|
|
1569
|
-
...ReferenceSourceConfigDetails
|
|
1570
|
-
}
|
|
1571
|
-
window {
|
|
1572
|
-
...WindowDetails
|
|
1573
|
-
}
|
|
1574
1595
|
history
|
|
1575
1596
|
offset
|
|
1576
1597
|
sourceFilter {
|
|
@@ -1598,28 +1619,6 @@ async def get_validators(
|
|
|
1598
1619
|
}}
|
|
1599
1620
|
}}
|
|
1600
1621
|
|
|
1601
|
-
fragment ReferenceSourceConfigDetails on Source {{
|
|
1602
|
-
__typename
|
|
1603
|
-
id
|
|
1604
|
-
name
|
|
1605
|
-
resourceName
|
|
1606
|
-
namespaceId
|
|
1607
|
-
namespace {{
|
|
1608
|
-
id
|
|
1609
|
-
}}
|
|
1610
|
-
}}
|
|
1611
|
-
|
|
1612
|
-
fragment WindowDetails on Window {{
|
|
1613
|
-
__typename
|
|
1614
|
-
id
|
|
1615
|
-
name
|
|
1616
|
-
resourceName
|
|
1617
|
-
namespaceId
|
|
1618
|
-
namespace {{
|
|
1619
|
-
id
|
|
1620
|
-
}}
|
|
1621
|
-
}}
|
|
1622
|
-
|
|
1623
1622
|
fragment ValidatorDetails on Validator {{
|
|
1624
1623
|
__typename
|
|
1625
1624
|
id
|
|
@@ -1695,6 +1694,7 @@ async def get_validators(
|
|
|
1695
1694
|
sourceFields
|
|
1696
1695
|
volumeMetric: metric
|
|
1697
1696
|
initializeWithBackfill
|
|
1697
|
+
metadataEnabled
|
|
1698
1698
|
threshold {{
|
|
1699
1699
|
...ThresholdDetails
|
|
1700
1700
|
}}
|
|
@@ -1730,6 +1730,7 @@ async def get_validators(
|
|
|
1730
1730
|
... on FreshnessValidator {{
|
|
1731
1731
|
config {{
|
|
1732
1732
|
initializeWithBackfill
|
|
1733
|
+
metadataEnabled
|
|
1733
1734
|
optionalSourceField: sourceField
|
|
1734
1735
|
threshold {{
|
|
1735
1736
|
...ThresholdDetails
|
|
@@ -2125,6 +2126,80 @@ async def delete_namespace(session: Session, namespace_id: str) -> Any:
|
|
|
2125
2126
|
)
|
|
2126
2127
|
|
|
2127
2128
|
|
|
2129
|
+
async def delete_credentials(session: Session, window_ids: list[str]) -> Any:
|
|
2130
|
+
return await execute_mutation(
|
|
2131
|
+
session,
|
|
2132
|
+
"credentialsDelete",
|
|
2133
|
+
argument_types={"ids": "[CredentialId!]!"},
|
|
2134
|
+
variable_values={"ids": window_ids},
|
|
2135
|
+
)
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
async def delete_channels(session: Session, channel_ids: list[str]) -> Any:
|
|
2139
|
+
return await execute_mutation(
|
|
2140
|
+
session,
|
|
2141
|
+
"channelsDelete",
|
|
2142
|
+
argument_types={"ids": "[ChannelId!]!"},
|
|
2143
|
+
variable_values={"ids": channel_ids},
|
|
2144
|
+
)
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
async def delete_sources(session: Session, source_ids: list[str]) -> Any:
|
|
2148
|
+
return await execute_mutation(
|
|
2149
|
+
session,
|
|
2150
|
+
"sourcesDelete",
|
|
2151
|
+
argument_types={"ids": "[SourceId!]!"},
|
|
2152
|
+
variable_values={"ids": source_ids},
|
|
2153
|
+
)
|
|
2154
|
+
|
|
2155
|
+
|
|
2156
|
+
async def delete_windows(session: Session, window_ids: list[str]) -> Any:
|
|
2157
|
+
return await execute_mutation(
|
|
2158
|
+
session,
|
|
2159
|
+
"windowsDelete",
|
|
2160
|
+
argument_types={"ids": "[WindowId!]!"},
|
|
2161
|
+
variable_values={"ids": window_ids},
|
|
2162
|
+
)
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
async def delete_segmentations(session: Session, segmentation_ids: list[str]) -> Any:
|
|
2166
|
+
return await execute_mutation(
|
|
2167
|
+
session,
|
|
2168
|
+
"segmentationsDelete",
|
|
2169
|
+
argument_types={"ids": "[SegmentationId!]!"},
|
|
2170
|
+
variable_values={"ids": segmentation_ids},
|
|
2171
|
+
)
|
|
2172
|
+
|
|
2173
|
+
|
|
2174
|
+
async def delete_filters(session: Session, filter_ids: list[str]) -> Any:
|
|
2175
|
+
return await execute_mutation(
|
|
2176
|
+
session,
|
|
2177
|
+
"filtersDelete",
|
|
2178
|
+
argument_types={"ids": "[FilterId!]!"},
|
|
2179
|
+
variable_values={"ids": filter_ids},
|
|
2180
|
+
)
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
async def delete_notification_rules(
|
|
2184
|
+
session: Session, notification_rule_ids: list[str]
|
|
2185
|
+
) -> Any:
|
|
2186
|
+
return await execute_mutation(
|
|
2187
|
+
session,
|
|
2188
|
+
"notificationRulesDelete",
|
|
2189
|
+
argument_types={"ids": "[NotificationRuleId!]!"},
|
|
2190
|
+
variable_values={"ids": notification_rule_ids},
|
|
2191
|
+
)
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
async def delete_validators(session: Session, validator_ids: list[str]) -> Any:
|
|
2195
|
+
return await execute_mutation(
|
|
2196
|
+
session,
|
|
2197
|
+
"validatorsDelete",
|
|
2198
|
+
argument_types={"ids": "[ValidatorId!]!"},
|
|
2199
|
+
variable_values={"ids": validator_ids},
|
|
2200
|
+
)
|
|
2201
|
+
|
|
2202
|
+
|
|
2128
2203
|
async def get_recommendations(session: Session, source_id: str) -> Any:
|
|
2129
2204
|
query = """
|
|
2130
2205
|
query GetSourceRecommendedValidators($id: SourceId!) {
|
|
@@ -2437,6 +2512,73 @@ async def apply_source_action(
|
|
|
2437
2512
|
return result[f"source{action.value}"]
|
|
2438
2513
|
|
|
2439
2514
|
|
|
2515
|
+
async def validate_sql_validator_query(
|
|
2516
|
+
session: Session,
|
|
2517
|
+
query: str,
|
|
2518
|
+
validator_display_name: str,
|
|
2519
|
+
source_id: str,
|
|
2520
|
+
segmentation_id: str,
|
|
2521
|
+
window_id: str,
|
|
2522
|
+
) -> None:
|
|
2523
|
+
gql_query = """
|
|
2524
|
+
query S($input: SqlValidatorQueryVerificationInput!) {
|
|
2525
|
+
sqlValidatorQueryVerification(input: $input) {
|
|
2526
|
+
queryError
|
|
2527
|
+
}
|
|
2528
|
+
}
|
|
2529
|
+
"""
|
|
2530
|
+
result = await execute(
|
|
2531
|
+
session,
|
|
2532
|
+
gql_query,
|
|
2533
|
+
variable_values={
|
|
2534
|
+
"input": {
|
|
2535
|
+
"query": query,
|
|
2536
|
+
"sourceConfig": {
|
|
2537
|
+
"segmentationId": segmentation_id,
|
|
2538
|
+
"windowId": window_id,
|
|
2539
|
+
"sourceId": source_id,
|
|
2540
|
+
},
|
|
2541
|
+
"dryRun": True,
|
|
2542
|
+
}
|
|
2543
|
+
},
|
|
2544
|
+
)
|
|
2545
|
+
if "queryError" in result and result["queryError"] is not None:
|
|
2546
|
+
raise ValidioError(
|
|
2547
|
+
f"""Sql query for validator '{validator_display_name}' is not valid:
|
|
2548
|
+
{result["queryError"]}"""
|
|
2549
|
+
)
|
|
2550
|
+
|
|
2551
|
+
|
|
2552
|
+
async def validate_sql_filter_query(
|
|
2553
|
+
session: Session,
|
|
2554
|
+
query: str,
|
|
2555
|
+
filter_display_name: str,
|
|
2556
|
+
source_id: str,
|
|
2557
|
+
) -> None:
|
|
2558
|
+
gql_query = """
|
|
2559
|
+
query S($input: SqlFilterVerificationInput!) {
|
|
2560
|
+
sqlFilterVerification(input: $input) {
|
|
2561
|
+
queryError
|
|
2562
|
+
}
|
|
2563
|
+
}
|
|
2564
|
+
"""
|
|
2565
|
+
result = await execute(
|
|
2566
|
+
session,
|
|
2567
|
+
gql_query,
|
|
2568
|
+
variable_values={
|
|
2569
|
+
"input": {
|
|
2570
|
+
"query": query,
|
|
2571
|
+
"sourceId": source_id,
|
|
2572
|
+
}
|
|
2573
|
+
},
|
|
2574
|
+
)
|
|
2575
|
+
if "queryError" in result and result["queryError"] is not None:
|
|
2576
|
+
raise ValidioError(
|
|
2577
|
+
f"""Sql query for filter '{filter_display_name}' is not valid:
|
|
2578
|
+
{result["queryError"]}"""
|
|
2579
|
+
)
|
|
2580
|
+
|
|
2581
|
+
|
|
2440
2582
|
def split_to_chunks(data: list[Any]) -> list[list[Any]]:
|
|
2441
2583
|
return split_to_n_chunks(data, NUM_CONCURRENT_CONNECTIONS)
|
|
2442
2584
|
|
|
@@ -14,6 +14,7 @@ async def apply(
|
|
|
14
14
|
diff: GraphDiff,
|
|
15
15
|
show_secrets: bool,
|
|
16
16
|
show_progress: bool = True,
|
|
17
|
+
dry_run_sql: bool = False,
|
|
17
18
|
) -> None:
|
|
18
19
|
"""Applies the provided diff operations on the server."""
|
|
19
20
|
progress_bar = ProgressBar(
|
|
@@ -24,5 +25,11 @@ async def apply(
|
|
|
24
25
|
with progress_bar:
|
|
25
26
|
async with client.client as session:
|
|
26
27
|
await apply_updates_on_server(
|
|
27
|
-
namespace,
|
|
28
|
+
namespace,
|
|
29
|
+
ctx,
|
|
30
|
+
diff,
|
|
31
|
+
session,
|
|
32
|
+
show_secrets,
|
|
33
|
+
progress_bar,
|
|
34
|
+
dry_run_sql,
|
|
28
35
|
)
|
|
@@ -24,7 +24,7 @@ from validio_sdk.resource._resource import (
|
|
|
24
24
|
)
|
|
25
25
|
from validio_sdk.resource._server_resources import load_resources
|
|
26
26
|
from validio_sdk.resource._util import SourceSchemaReinference
|
|
27
|
-
from validio_sdk.resource.channels import Channel
|
|
27
|
+
from validio_sdk.resource.channels import Channel, WebhookChannel
|
|
28
28
|
from validio_sdk.resource.tags import Tag
|
|
29
29
|
|
|
30
30
|
|
|
@@ -229,12 +229,15 @@ def _create_resource_diff_object(
|
|
|
229
229
|
r: Resource | Diffable | dict,
|
|
230
230
|
show_secrets: bool,
|
|
231
231
|
rewrites: dict[str, Any] | None = None,
|
|
232
|
-
|
|
232
|
+
secret_fields_changed: dict[str, Any] | None = None,
|
|
233
233
|
is_manifest: bool = False,
|
|
234
234
|
) -> dict[str, object]:
|
|
235
235
|
if rewrites is None:
|
|
236
236
|
rewrites = {}
|
|
237
237
|
|
|
238
|
+
if secret_fields_changed is None:
|
|
239
|
+
secret_fields_changed = {}
|
|
240
|
+
|
|
238
241
|
data = dict(r) if not isinstance(r, dict) else r
|
|
239
242
|
|
|
240
243
|
diff_object = {}
|
|
@@ -245,17 +248,19 @@ def _create_resource_diff_object(
|
|
|
245
248
|
if k in rewrites:
|
|
246
249
|
diff_object[k] = rewrites[k]
|
|
247
250
|
elif isinstance(v, Resource | Diffable | dict):
|
|
251
|
+
ch = secret_fields_changed.get(k)
|
|
248
252
|
diff_object[k] = _create_resource_diff_object(
|
|
249
253
|
v,
|
|
250
254
|
show_secrets,
|
|
251
|
-
|
|
255
|
+
secret_fields_changed=ch if not isinstance(ch, bool) else {},
|
|
252
256
|
is_manifest=is_manifest,
|
|
253
257
|
)
|
|
254
258
|
elif hasattr(v, "__dict__") and not isinstance(v, Enum):
|
|
259
|
+
ch = secret_fields_changed.get(k)
|
|
255
260
|
diff_object[k] = _create_resource_diff_object(
|
|
256
261
|
v.__dict__,
|
|
257
262
|
show_secrets,
|
|
258
|
-
|
|
263
|
+
secret_fields_changed=ch if not isinstance(ch, bool) else {},
|
|
259
264
|
is_manifest=is_manifest,
|
|
260
265
|
)
|
|
261
266
|
elif isinstance(v, list):
|
|
@@ -269,7 +274,6 @@ def _create_resource_diff_object(
|
|
|
269
274
|
_create_resource_diff_object(
|
|
270
275
|
item.__dict__,
|
|
271
276
|
show_secrets,
|
|
272
|
-
secrets_changed=secrets_changed,
|
|
273
277
|
is_manifest=is_manifest,
|
|
274
278
|
)
|
|
275
279
|
)
|
|
@@ -288,7 +292,33 @@ def _create_resource_diff_object(
|
|
|
288
292
|
|
|
289
293
|
if secret_fields:
|
|
290
294
|
for field in secret_fields:
|
|
291
|
-
if
|
|
295
|
+
# We want to avoid overriding webhook_url if it is None already
|
|
296
|
+
# which may give a misleading impression that it is set to a value.
|
|
297
|
+
#
|
|
298
|
+
# For any channel that is not the WebhookChannel, we will always
|
|
299
|
+
# flag it as changed if any secrets have changed, which is consistent
|
|
300
|
+
# with existing behavior.
|
|
301
|
+
#
|
|
302
|
+
# This workaround until webhook URL is deprecated fully from some
|
|
303
|
+
# channels (VR-4047).
|
|
304
|
+
flag_webhook_url_as_changed = False
|
|
305
|
+
if not isinstance(r, WebhookChannel) and field == "webhook_url":
|
|
306
|
+
if hasattr(r, "webhook_url") and not r.webhook_url:
|
|
307
|
+
continue
|
|
308
|
+
if any(
|
|
309
|
+
secret_fields_changed[secret_field]
|
|
310
|
+
for secret_field in secret_fields_changed
|
|
311
|
+
):
|
|
312
|
+
flag_webhook_url_as_changed = True
|
|
313
|
+
|
|
314
|
+
if (
|
|
315
|
+
# Special case handling for webhook URL
|
|
316
|
+
flag_webhook_url_as_changed
|
|
317
|
+
or
|
|
318
|
+
# If the field does not exist in the secrets changed dict then
|
|
319
|
+
# don't flag it as changed
|
|
320
|
+
secret_fields_changed.get(field)
|
|
321
|
+
) and not is_manifest:
|
|
292
322
|
diff_object[field] = "REDACTED-PREVIOUS"
|
|
293
323
|
else:
|
|
294
324
|
diff_object[field] = "REDACTED"
|
|
@@ -77,10 +77,10 @@ class ValidioConfig:
|
|
|
77
77
|
Will ensure we don't print sensitive information.
|
|
78
78
|
"""
|
|
79
79
|
return (
|
|
80
|
-
f'
|
|
81
|
-
f'
|
|
82
|
-
f'
|
|
83
|
-
f'
|
|
80
|
+
f"{'Default namespace':<20} | {self.default_namespace}\n"
|
|
81
|
+
f"{'Endpoint':<20} | {self.endpoint}\n"
|
|
82
|
+
f"{'Access key':<20} | {self.access_key}\n"
|
|
83
|
+
f"{'Access secret':<20} | {self._none_or_hidden(self.access_secret)}\n"
|
|
84
84
|
)
|
|
85
85
|
|
|
86
86
|
|
|
@@ -10,6 +10,7 @@ from validio_sdk._api.api import (
|
|
|
10
10
|
dbt_artifact_multipart_upload_complete,
|
|
11
11
|
dbt_artifact_multipart_upload_create,
|
|
12
12
|
)
|
|
13
|
+
from validio_sdk.client.client import Client
|
|
13
14
|
|
|
14
15
|
_DBT_MULTIPART_UPLOAD_CHUNK_SIZE_BYTES = 2 * 1000 * 1000 # 2MB
|
|
15
16
|
|
|
@@ -164,7 +165,7 @@ def _extract_sources(manifest: dict, relevant_sources: set) -> dict:
|
|
|
164
165
|
|
|
165
166
|
|
|
166
167
|
async def upload_artifacts(
|
|
167
|
-
client: APIClient,
|
|
168
|
+
client: APIClient | Client,
|
|
168
169
|
credential_id: str,
|
|
169
170
|
job_name: str,
|
|
170
171
|
manifest: dict,
|
|
@@ -174,13 +175,15 @@ async def upload_artifacts(
|
|
|
174
175
|
Helper function to upload dbt artifacts.
|
|
175
176
|
The artifacts are additionally trimmed before uploading.
|
|
176
177
|
|
|
177
|
-
:param client:
|
|
178
|
+
:param client: Client to use for the artifacts upload.
|
|
178
179
|
:param credential_id: DBTCore credential id to upload artifacts on behalf of.
|
|
179
180
|
:param job_name: Job associated with the artifacts.
|
|
180
181
|
:param manifest: manifest.json payload
|
|
181
182
|
:param run_results: run_results.json payload
|
|
182
183
|
"""
|
|
183
|
-
|
|
184
|
+
client = client if isinstance(client, Client) else client.client
|
|
185
|
+
|
|
186
|
+
async with client as session:
|
|
184
187
|
upload_id = await dbt_artifact_multipart_upload_create(
|
|
185
188
|
session,
|
|
186
189
|
credential_id=credential_id,
|
|
@@ -27967,7 +27967,6 @@ class Client(AsyncBaseClient):
|
|
|
27967
27967
|
isIncident
|
|
27968
27968
|
value
|
|
27969
27969
|
severity
|
|
27970
|
-
deviation
|
|
27971
27970
|
... on ValidatorMetricWithFixedThreshold {
|
|
27972
27971
|
operator
|
|
27973
27972
|
bound
|