def checkpoint_script(checkpoint, directory): """ Create a python script to run a checkpoint. (Experimental) Checkpoints can be run directly without this script using the `great_expectations checkpoint run` command. This script is provided for those who wish to run checkpoints via python. """ context = toolkit.load_data_context_with_error_handling(directory) usage_event = "cli.checkpoint.script" # Attempt to load the checkpoint and deal with errors _ = toolkit.load_checkpoint(context, checkpoint, usage_event) script_name = f"run_{checkpoint}.py" script_path = os.path.join(context.root_directory, context.GE_UNCOMMITTED_DIR, script_name) if os.path.isfile(script_path): toolkit.exit_with_failure_message_and_stats( context, usage_event, f"""<red>Warning! A script named {script_name} already exists and this command will not overwrite it.</red> - Existing file path: {script_path}""", ) _write_checkpoint_script_to_disk(context.root_directory, checkpoint, script_path) cli_message( f"""<green>A python script was created that runs the checkpoint named: `{checkpoint}`</green> - The script is located in `great_expectations/uncommitted/run_{checkpoint}.py` - The script can be run with `python great_expectations/uncommitted/run_{checkpoint}.py`""" ) send_usage_message(context, event=usage_event, success=True)
def checkpoint_run(checkpoint, directory): """Run a checkpoint. (Experimental)""" context = toolkit.load_data_context_with_error_handling( directory=directory, from_cli_upgrade_command=False) usage_event = "cli.checkpoint.run" checkpoint: Checkpoint = toolkit.load_checkpoint( context, checkpoint, usage_event, ) try: results = checkpoint.run() except Exception as e: toolkit.exit_with_failure_message_and_stats(context, usage_event, f"<red>{e}</red>") if not results["success"]: cli_message("Validation failed!") send_usage_message(context, event=usage_event, success=True) print_validation_operator_results_details(results) sys.exit(1) cli_message("Validation succeeded!") send_usage_message(context, event=usage_event, success=True) print_validation_operator_results_details(results) sys.exit(0)
def checkpoint_run(checkpoint, directory): """Run a checkpoint. (Experimental)""" context = toolkit.load_data_context_with_error_handling(directory) usage_event = "cli.checkpoint.run" checkpoint_config = toolkit.load_checkpoint(context, checkpoint, usage_event) checkpoint_file = f"great_expectations/checkpoints/{checkpoint}.yml" # TODO loading batches will move into DataContext eventually batches_to_validate = [] for batch in checkpoint_config["batches"]: _validate_at_least_one_suite_is_listed(context, batch, checkpoint_file) batch_kwargs = batch["batch_kwargs"] for suite_name in batch["expectation_suite_names"]: suite = toolkit.load_expectation_suite(context, suite_name, usage_event) try: batch = toolkit.load_batch(context, suite, batch_kwargs) except (FileNotFoundError, SQLAlchemyError, OSError, DataContextError) as e: toolkit.exit_with_failure_message_and_stats( context, usage_event, f"""<red>There was a problem loading a batch: - Batch: {batch_kwargs} - {e} - Please verify these batch kwargs in the checkpoint file: `{checkpoint_file}`</red>""", ) batches_to_validate.append(batch) try: results = context.run_validation_operator( checkpoint_config["validation_operator_name"], assets_to_validate=batches_to_validate, # TODO prepare for new RunID - checkpoint name and timestamp # run_id=RunID(checkpoint) ) except DataContextError as e: toolkit.exit_with_failure_message_and_stats(context, usage_event, f"<red>{e}</red>") if not results["success"]: cli_message("Validation failed!") send_usage_message(context, event=usage_event, success=True) print_validation_operator_results_details(results) sys.exit(1) cli_message("Validation succeeded!") send_usage_message(context, event=usage_event, success=True) print_validation_operator_results_details(results) sys.exit(0)
def checkpoint_run(checkpoint, directory): """Run a checkpoint. (Experimental)""" usage_event = "cli.checkpoint.run" context = toolkit.load_data_context_with_error_handling( directory=directory, from_cli_upgrade_command=False) ge_config_version = context.get_config().config_version if ge_config_version >= 3: cli_message( f"""<red>The `checkpoint run` CLI command is not yet implemented for GE config versions >= 3.</red>""" ) send_usage_message(context, usage_event, success=False) sys.exit(1) checkpoint: Checkpoint = toolkit.load_checkpoint( context, checkpoint, usage_event, ) try: results = checkpoint.run() except Exception as e: toolkit.exit_with_failure_message_and_stats(context, usage_event, f"<red>{e}</red>") if not results["success"]: cli_message("Validation failed!") send_usage_message(context, event=usage_event, success=True) print_validation_operator_results_details(results) sys.exit(1) cli_message("Validation succeeded!") send_usage_message(context, event=usage_event, success=True) print_validation_operator_results_details(results) sys.exit(0)