Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| def validate_input(age, location): | |
| is_age_valid = True | |
| is_location_valid = True | |
| if not age or age < 3: | |
| is_age_valid = False | |
| if "london" in location.lower(): | |
| is_location_valid = False | |
| return [ | |
| gr.validate(is_age_valid, "Age must be at least 3"), | |
| gr.validate(is_location_valid, "Location must not be in London"), | |
| ] | |
| def process_text(age, location): | |
| result = f"Processed: {age} -- {location.upper()}" | |
| return result | |
| def validate_image(image): | |
| # we don't want to error when a user is clearing the image | |
| if not image: | |
| return None | |
| is_portrait = image.width < image.height | |
| return gr.validate(is_portrait, "Image must be in portrait mode") | |
| def process_image(image): | |
| if not image: | |
| return "No image uploaded" | |
| return "HELLO IMAGE!!!" | |
| def raise_error(): | |
| raise ValueError("test error") | |
| with gr.Blocks() as demo: | |
| with gr.Tab("Text"): | |
| gr.Markdown("# Validator Parameter Test Demo") | |
| with gr.Row(): | |
| with gr.Column(): | |
| age = gr.Number( | |
| label="Enter age", | |
| placeholder="Enter age", | |
| ) | |
| location = gr.Textbox( | |
| max_lines=3, | |
| label="Enter location", | |
| placeholder="Enter location", | |
| ) | |
| validate_btn = gr.Button("Process with Validation", variant="primary") | |
| output_with_validation = gr.Textbox( | |
| label="Output (with validation)", interactive=False | |
| ) | |
| validate_btn.click( | |
| fn=process_text, | |
| validator=validate_input, | |
| inputs=[age, location], | |
| outputs=output_with_validation, | |
| ) | |
| with gr.Tab("Image"): | |
| im = gr.Image(label="Enter image", placeholder="Enter image", type="pil") | |
| t = gr.Textbox(label="Enter text", placeholder="Enter text") | |
| im.change( | |
| fn=process_image, | |
| validator=validate_image, | |
| inputs=im, | |
| outputs=t, | |
| ) | |
| with gr.Tab("Validation Error"): | |
| error_btn = gr.Button("Raise Validation Error", variant="primary") | |
| error_btn.click( | |
| validator=raise_error, | |
| fn=raise_error, | |
| inputs=[], | |
| outputs=[], | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |