This is a python implementation of shinyvalidate, which provides input validation for Shiny for Python applications.
Install from Pypi with:
pip install shiny_validate
Or, you can install the latest development version from GitHub:
pip install git+https://github.com/posit-dev/py-shiny-validate.git
To add validation to your Shiny app, you need to:
-
Create an InputValidator object:
iv = InputValidator()
-
Add one or more validation rules to the InputValidator:
iv.add_rule("title", check.required())
-
Turn the validator on:
iv.enable()
That's all you need to do to get validation messages to show up.
from shiny import App, ui, render, req
from shiny_validate import InputValidator, check
app_ui = ui.page_fluid(
ui.input_text("name", "Name"),
ui.input_text("email", "Email"),
ui.output_text("greeting"),
)
def server(input, output, session):
iv = InputValidator()
iv.add_rule("name", check.required())
iv.add_rule("email", check.required())
iv.add_rule("email", check.email())
iv.enable()
@render.text
def greeting():
req(iv.is_valid())
return f"Nice to meet you, {input.name()} <{input.email()}>!"
app = App(app_ui, server)
You can also use the .is_valid()
method to ensure that the inputs are valid before rendering an output:
@render.plot
def plot():
req(iv.is_valid())
# Build and return a plot if the inputs are valid