req
*args, cancel_output=False) req(
Throw a silent exception for falsy values.
This is a convenient shorthand for throwing SilentException
/ SilentCancelOutputException
if any of the arguments are falsy.
The term "falsy" generally indicates that a value is considered False
when encountered in a logical context. We use the term a little loosely here; our usage tries to match the intuitive notions of "Is this value missing or available?", or "Has the user provided an answer?", or in the case of action buttons, "Has the button been clicked?". So False
, None
, 0
, and ""
would be examples of Falsy values.
Parameters
*args :
T
= ()-
Any number of arguments to check.
cancel_output : bool | Literal[‘progress’] = False
-
If
True
, throwSilentCancelOutputException
instead ofSilentException
.
Returns
:
T
| None-
The first argument. If no arguments are provided, returns
None
.
Examples
#| standalone: true
#| components: [editor, viewer]
#| layout: vertical
#| viewerHeight: 400
## file: app.py
from shiny import App, Inputs, Outputs, Session, reactive, render, req, ui
from shiny.types import SafeException
app_ui = ui.page_fluid(
ui.input_action_button("safe", "Throw a safe error"),
ui.output_ui("safe"),
ui.input_action_button("unsafe", "Throw an unsafe error"),
ui.output_ui("unsafe"),
ui.input_text(
"txt",
"Enter some text below, then remove it. Notice how the text is never fully removed.",
),
ui.output_ui("txt_out"),
)
def server(input: Inputs, output: Outputs, session: Session):
@reactive.calc
def safe_click():
req(input.safe())
return input.safe()
@render.ui
def safe():
raise SafeException(f"You've clicked {str(safe_click())} times")
@render.ui
def unsafe():
req(input.unsafe())
raise Exception(f"Super secret number of clicks: {str(input.unsafe())}")
@reactive.effect
def _():
req(input.unsafe())
print("unsafe clicks:", input.unsafe())
# raise Exception("Observer exception: this should cause a crash")
@render.ui
def txt_out():
req(input.txt(), cancel_output=True)
return input.txt()
app = App(app_ui, server)
app.sanitize_errors = True