import gradio as gr def failure(): raise gr.Error("This should fail!") def exception(): raise ValueError("Something went wrong") def success(): return True def warning_fn(): gr.Warning("This is a warning!") def info_fn(): gr.Info("This is some info") with gr.Blocks() as demo: gr.Markdown("Used in E2E tests of success event trigger. The then event covered in chatbot E2E tests." " Also testing that the status modals show up.") with gr.Row(): result = gr.Textbox(label="Result") result_2 = gr.Textbox(label="Consecutive Event") with gr.Row(): success_btn = gr.Button(value="Trigger Success") success_btn_2 = gr.Button(value="Trigger Consecutive Success") failure_btn = gr.Button(value="Trigger Failure") failure_exception = gr.Button(value="Trigger Failure With ValueError") with gr.Row(): trigger_warning = gr.Button(value="Trigger Warning") trigger_info = gr.Button(value="Trigger Info") success_btn_2.click(success, None, None).success(lambda: "First Event Trigered", None, result).success(lambda: "Consecutive Event Triggered", None, result_2) success_btn.click(success, None, None).success(lambda: "Success event triggered", inputs=None, outputs=result) failure_btn.click(failure, None, None).success(lambda: "Should not be triggered", inputs=None, outputs=result) failure_exception.click(exception, None, None) trigger_warning.click(warning_fn, None, None) trigger_info.click(info_fn, None, None) if __name__ == "__main__": demo.launch(show_error=True)