feat: add suppress_skipped option and skipped flag for skipped checks#1063
Conversation
|
All commits in PR should be signed ('git commit -S ...'). See https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits |
12491be to
a0cf8bd
Compare
|
Hi @mwojtyczka @pratikk-databricks , just wanted to follow up on this PR when you get a chance. Happy to make any changes needed! |
|
❌ 556/680 passed, 124 failed, 41 skipped, 4h1m0s total ❌ test_define_user_metadata_and_extract_dq_results: pyspark.errors.exceptions.base.PySparkValueError: [AXIS_LENGTH_MISMATCH] Length mismatch: Expected axis has 11 element, new values have 10 elements. (10.237s)❌ test_validate_checks_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.584s)❌ test_validate_checks_with_custom_folder_invalid_checks: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (6.423s)❌ test_workflows_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.889s)❌ test_logs_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.307s)❌ test_open_remote_config: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.175s)❌ test_validate_checks_with_custom_folder_missing_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.866s)❌ test_open_dashboards_directory: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.079s)❌ test_load_workspace_config_from_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.071s)❌ test_load_workspace_config_from_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.966s)❌ test_installations_output: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.635s)❌ test_load_workspace_config_from_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.121s)❌ test_installations_output_not_found: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.838s)❌ test_load_run_config_from_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.71s)❌ test_load_run_config_from_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.842s)❌ test_installations_output_serde_error: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.206s)❌ test_load_run_config_from_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.156s)❌ test_validate_checks: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.493s)❌ test_save_workspace_config_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.973s)❌ test_update_workspace_config_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.01s)❌ test_validate_checks_when_given_invalid_checks: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (6.053s)❌ test_save_workspace_config_in_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.147s)❌ test_validate_checks_disable_validate_custom_check_functions: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.018s)❌ test_validate_checks_invalid_run_config: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.22s)❌ test_save_run_config_new_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.237s)❌ test_update_run_config_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.754s)❌ test_save_run_config_in_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.934s)❌ test_save_run_config_in_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.845s)❌ test_save_workspace_config_with_extra_fields_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.922s)❌ test_validate_checks_when_checks_file_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.608s)❌ test_profiler_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.389s)❌ test_profiler_no_input_configured: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.678s)❌ test_quality_checker_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.619s)❌ test_quality_checker_no_input_configured: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.305s)❌ test_e2e_workflow_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (6.867s)❌ test_profiler_when_run_config_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.905s)❌ test_quality_checker_when_run_config_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.792s)❌ test_workflows: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.808s)❌ test_workflows_not_installed: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.102s)❌ test_logs: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.854s)❌ test_open_remote_config_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.1s)❌ test_open_dashboards_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.176s)❌ test_e2e_workflow_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.861s)❌ test_fresh_global_config_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.072s)❌ test_fresh_user_config_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.356s)❌ test_fresh_custom_folder_config_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.225s)❌ test_complete_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.905s)❌ test_dashboard_repeated_workspace_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.825s)❌ test_complete_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.069s)❌ test_installation_when_dashboard_is_trashed: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.903s)❌ test_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.896s)❌ test_installation_with_custom_folder_when_dashboard_is_trashed: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.928s)❌ test_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.76s)❌ test_installation_when_dashboard_state_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.896s)❌ test_dashboard_state_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.944s)❌ test_installation_with_custom_folder_when_dashboard_state_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.82s)❌ test_dashboard_state_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.772s)❌ test_uninstallation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.903s)❌ test_dashboard_workspace_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.961s)❌ test_uninstallation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.851s)❌ test_dashboard_workspace_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.767s)❌ test_uninstallation_dashboard_does_not_exist_anymore: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.148s)❌ test_dashboard_repeated_workspace_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.094s)❌ test_uninstallation_with_custom_folder_dashboard_does_not_exist_anymore: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.046s)❌ test_uninstallation_job_does_not_exist_anymore: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.84s)❌ test_installation_stores_install_state_keys: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.958s)❌ test_uninstallation_with_custom_folder_job_does_not_exist_anymore: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.029s)❌ test_installation_with_custom_folder_stores_install_state_keys: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.025s)❌ test_workflows_deployment_creates_jobs_with_remove_after_tag: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (27ms)❌ test_global_installation_on_existing_global_install: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.049s)❌ test_get_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.011s)❌ test_load_checks_when_checks_file_does_not_exist_in_workspace: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.567s)❌ test_custom_folder_installation_upgrade: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.85s)❌ test_load_checks_from_installation_when_checks_file_does_not_exist_in_workspace: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.152s)❌ test_load_checks_from_volume_in_installation_when_checks_file_does_not_exist: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (8.275s)❌ test_load_checks_from_yaml_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.057s)❌ test_load_checks_from_json_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.898s)❌ test_load_invalid_checks_from_yaml_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.969s)❌ test_save_load_checks_from_volume_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (10.873s)❌ test_load_invalid_checks_from_json_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.952s)❌ test_load_checks_from_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.807s)❌ test_load_checks_from_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.432s)❌ test_load_checks_from_absolute_path: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.814s)❌ test_load_checks_from_installation_overwrite_location: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.554s)❌ test_load_invalid_checks_from_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.432s)❌ test_save_checks_in_volume_file_as_yml: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.315s)❌ test_load_checks_from_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.204s)❌ test_save_checks_in_volume_file_as_json: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.366s)❌ test_profiler_workflow_with_ai_rules_generation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.438s)❌ test_quality_checker_workflow_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.55s)❌ test_profiler_workflow_with_ai_rules_generation_and_model_api_keys_as_secrets: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.399s)❌ test_profiler_workflow_with_ai_rules_generation_with_custom_funcs: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.658s)❌ test_profiler_workflow_with_llm_pk_detection: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.444s)❌ test_quality_checker_workflow_streaming: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.583s)❌ test_quality_checker_workflow_with_quarantine: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.574s)❌ test_quality_checker_workflow_with_custom_check_func: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.349s)❌ test_quality_checker_workflow_when_missing_checks_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.464s)❌ test_quality_checker_workflow_with_custom_check_func_in_volume: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.558s)❌ test_quality_checker_workflow_with_custom_check_func_rel_path: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.696s)❌ test_quality_checker_workflow_with_ref: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.919s)❌ test_profiler_runner_raise_error_when_profile_summary_stats_file_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.179s)❌ test_profiler_workflow_class_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.335s)❌ test_profiler_workflow_when_missing_input_location_in_config: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.543s)❌ test_profiler_workflow_when_timeout: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.452s)❌ test_profiler_workflow_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.292s)❌ test_runtime_config: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.753s)❌ test_save_load_checks_from_table_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (12.501s)❌ test_save_checks_in_workspace_file_as_json: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.781s)❌ test_save_checks_in_user_installation_in_yaml_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.944s)❌ test_save_checks_in_user_installation_in_json_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (8.233s)❌ test_save_checks_in_workspace_file_as_yaml: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.977s)❌ test_save_checks_in_global_installation_as_yaml: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.575s)❌ test_save_checks_in_custom_folder_installation_in_yaml_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.711s)❌ test_save_results_in_table_in_user_installation_only_quarantine: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (9.285s)❌ test_save_results_in_table_in_user_installation_output_table_provided: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (12.122s)❌ test_save_results_in_table_in_user_installation_quarantine_table_provided: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (14.786s)❌ test_save_results_in_table_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (14.822s)❌ test_save_results_in_table_in_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (11.62s)❌ test_save_results_in_table_in_user_installation_missing_output_and_quarantine_table: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (9.751s)❌ test_save_results_in_table_in_user_installation_only_output: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (9.125s)❌ test_workflow_deployment_uploads_dependencies: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.112s)❌ test_dependency_discovery_includes_extras: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.116s)❌ test_end_to_end_installation_and_workflow_with_upload_dependencies: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (6.638s)❌ test_save_and_load_checks_from_lakebase_table_with_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (9m22.224s)Running from acceptance #4238 |
…d field Signed-off-by: Roshan1299 <banisettirosh@gmail.com>
mwojtyczka
left a comment
There was a problem hiding this comment.
Code Review
Overview
Clean, focused implementation of two orthogonal features from #953: skip_quietly suppresses skipped-check entries entirely, and skipped=True on the result struct enables structured identification of skipped checks without string-parsing the message. The propagation chain (ExtraParams → DQEngineCore → DQRuleManager) is correct.
Issues
F.lit(None)type mismatch risk — the null returned whenskip_quietly=Trueis untyped (NullType); all other conditions in the array are of the result struct type. Should be cast explicitly.- Schema field insertion order — adding
skippedbetweenuser_metadataandrule_fingerprintrather than appending it at the end is a larger breaking change for consumers using positional access. - No
DQRuleManagerunit tests — theskip_quietlybranch inprocess()is only covered by integration tests; a unit test withcreate_autospec(DataFrame)would be faster and more targeted. - No CHANGELOG entry — both features are user-visible and warrant a changelog entry.
True if skipped else None— minor style nit, can be simplified.
… condition Signed-off-by: Roshan1299 <banisettirosh@gmail.com>
Signed-off-by: Roshan1299 <banisettirosh@gmail.com>
…ntry Signed-off-by: Roshan1299 <banisettirosh@gmail.com>
|
Hi @mwojtyczka , addressed all the review feedback:
|
Signed-off-by: Roshan1299 <banisettirosh@gmail.com>
mwojtyczka
left a comment
There was a problem hiding this comment.
LGTM - will merge once all tests pass
Changes
Implements Prio 1 and Prio 3 from #953:
suppress_skipped: bool = FalsetoExtraParams. WhenTrue, checks skipped due to missing columns or invalid filters produce no entry in_errors/_warningsand do not cause rows to appear in the invalid DataFrame.skippedboolean field todq_result_item_schema. Skipped checks now haveskipped=Truein their result entry, enabling structured identification without string-parsing the message.Linked issues
Resolves #953
Tests