From 40ccc0ba69df340b9f92469326cd36ff1b224cea Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Mon, 24 Feb 2025 22:52:50 -0800 Subject: [PATCH 01/15] reorg menus for getting started and concepts, add tutorials from #245 --- _quarto.yml | 57 +- tutorials/index.qmd | 124 +++ tutorials/intro-express/1-welcome.qmd | 310 ++++++++ tutorials/intro-express/2-ui.qmd | 232 ++++++ tutorials/intro-express/3-inputs.qmd | 209 ++++++ tutorials/intro-express/4-external.qmd | 196 +++++ tutorials/intro-express/5-outputs.qmd | 793 ++++++++++++++++++++ tutorials/intro-express/6-reactivity.qmd | 143 ++++ tutorials/intro-express/7-publish.qmd | 77 ++ tutorials/intro-express/8-next.qmd | 46 ++ tutorials/intro-express/img/010-run_app.png | Bin 0 -> 231791 bytes tutorials/intro-express/tips.csv | 245 ++++++ 12 files changed, 2421 insertions(+), 11 deletions(-) create mode 100644 tutorials/index.qmd create mode 100644 tutorials/intro-express/1-welcome.qmd create mode 100644 tutorials/intro-express/2-ui.qmd create mode 100644 tutorials/intro-express/3-inputs.qmd create mode 100644 tutorials/intro-express/4-external.qmd create mode 100644 tutorials/intro-express/5-outputs.qmd create mode 100644 tutorials/intro-express/6-reactivity.qmd create mode 100644 tutorials/intro-express/7-publish.qmd create mode 100644 tutorials/intro-express/8-next.qmd create mode 100644 tutorials/intro-express/img/010-run_app.png create mode 100644 tutorials/intro-express/tips.csv diff --git a/_quarto.yml b/_quarto.yml index c78f875c..53d98f85 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -19,6 +19,7 @@ project: - api/core - api/testing - templates + - tutorials resources: - /pypi/** - /robots.txt @@ -73,19 +74,21 @@ website: logo-alt: The logo for Shiny for Python search: true left: - - text: "Learn Shiny" + - text: "Getting Started" file: docs/overview.qmd + - text: "Concepts" + file: docs/ui-overview.qmd - text: "Components" menu: - - text: "Components" - file: components/index.qmd + - text: "Inputs" + href: components/index.qmd#inputs icon: sliders - - text: "Layouts" + - text: "Outputs" + file: components/index.qmd#outputs + icon: sliders + - text: "UI Layouts" file: layouts/index.qmd icon: layout-text-window-reverse - - text: "Templates" - file: templates/index.qmd - icon: code-square - text: "Deploy" menu: - text: "Overview" @@ -93,12 +96,18 @@ website: - docs/deploy-cloud.qmd - docs/deploy-on-prem.qmd - docs/shinylive.qmd - - text: "Gallery" - file: gallery/index.qmd + - text: "Examples" + menu: + - text: "Templates" + file: templates/index.qmd + icon: code-square + - text: "Gallery" + file: gallery/index.qmd + icon: code-square - text: "Playground" href: https://shinylive.io/py/examples/ target: _blank - - text: "Reference" + - text: "API Reference" menu: - text: "Shiny Express" href: api/express/index.qmd @@ -226,7 +235,7 @@ website: - text: "Controlling for Page Size" href: "/layouts/arrange/index.html#controlling-for-page-width-and-height" - - id: docs + - id: getting_started style: "floating" collapse-level: 2 align: left @@ -239,6 +248,15 @@ website: contents: - docs/install-create-run.qmd - docs/debug.qmd + - section: "Tutorials" + contents: + - tutorials/index.qmd + + - id: concepts + style: "floating" + collapse-level: 2 + align: left + contents: - section: "User interfaces" contents: - docs/ui-overview.qmd @@ -277,6 +295,23 @@ website: contents: - docs/nonblocking.qmd - docs/routing.qmd + + - id: tutorial-express-intro + style: "floating" + align: left + contents: + - section: "Learn Shiny Express" + contents: + - tutorials/intro-express/1-welcome.qmd + - tutorials/intro-express/2-ui.qmd + - tutorials/intro-express/3-inputs.qmd + - tutorials/intro-express/4-external.qmd + - tutorials/intro-express/5-outputs.qmd + - tutorials/intro-express/6-reactivity.qmd + - tutorials/intro-express/7-publish.qmd + - tutorials/intro-express/8-next.qmd + + # TODO: if the sidebar only has 1 entry, then it displays for the entire site... # added entry below to prevent this. - id: deploy diff --git a/tutorials/index.qmd b/tutorials/index.qmd new file mode 100644 index 00000000..b2fa1e9c --- /dev/null +++ b/tutorials/index.qmd @@ -0,0 +1,124 @@ +--- +title: "Tutorials" +--- + +```{=html} + +``` + +## Express-Only Tutorials + +Shiny Express is the easiest and quickest way to start with Shiny. +Create applications at the speed of thought. + +```{=html} +
+ +

Getting Started with Shiny

+

Install and build your first Shiny Application.

+

Updated: Feb 14, 2024

+ Start Tutorial +
+
+``` + +## Express and Core Tutorials + +Here are the more general tutorials to get you started with all things Shiny. + +```{=html} +
+ +

Shiny Express to Shiny Core

+

Learn how to transition from Shiny Express to Shiny Core.

+

Updated: Feb 5, 2024

+ Start Tutorial +
+ +

Shiny Modules

+

Create Shiny Modules to make more maintanable applications.

+

Updated: Mar 15, 2024

+ Start Tutorial +
+ +

Make your own component

+

Create your own custom javasscript components.

+

Updated: Apr 20, 2024

+ Start Tutorial +
+ +

Testing your application

+

Write unit tests and end-to-end tests with pytest and playwright.

+

Updated: Apr 20, 2024

+ Start Tutorial +
+
+``` + +## Core-Only Tutorials + +Shiny Core provides you all the flexibility and complexity you need. +The syntax is a bit more verbose, +but you can create more complex applications using the core syntax. + +```{=html} +
+ +

Getting Started with Shiny

+

Install and build your first Shiny Application with the Core syntax.

+

Updated: Feb 14, 2024

+ Start Tutorial +
+
+``` diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd new file mode 100644 index 00000000..4c4f7a16 --- /dev/null +++ b/tutorials/intro-express/1-welcome.qmd @@ -0,0 +1,310 @@ +--- +title: Getting Started +--- + +Shiny for Python is a web application framework that helps tell your +data story. +If you've landed on this page, +you probably have a bit of Python experience, +worked with data, +and now need a way to publish an interactive +web application to help tell your data story. + +## Installing Shiny + +:::::: {.panel-tabset} + +## Windows + +::: {.panel-tabset} + +## pip + +```bash +python -m venv shiny-env # create virtual environment +shiny-env\Scripts\activate # activate environment +pip install -U shiny # install shiny +``` + +## conda + +```bash +# create virtual environment and install shiny +conda create -n shiny-env -c conda-forge shiny + +# activate environment +conda activate shiny-env +``` + +## mamba + +```bash +# create virtual environment and install shiny +mamba create -n shiny-env -c conda-forge shiny + +# activate environment +mamba activate shiny-env +``` + +::: + +## MacOS + +::: {.panel-tabset} + +## pip + +```bash +python -m venv shiny-env # create virtual environment +source shiny-env/bin/activate # activate environment +pip install -U shiny # install shiny +``` + +## conda + +```bash +# create virtual environment and install shiny +conda create -n shiny-env -c conda-forge shiny + +# activate environment +conda activate shiny-env +``` + +## mamba + +```bash +# create virtual environment and install shiny +mamba create -n shiny-env -c conda-forge shiny + +# activate environment +mamba activate shiny-env +``` +::: + +## Linux + +::: {.panel-tabset} + +## pip + +```bash +python -m venv shiny-env # create virtual environment +source shiny-env/bin/activate # activate environment +pip install -U shiny # install shiny +``` + +## conda + +```bash +# create virtual environment and install shiny +conda create -n shiny-env -c conda-forge shiny + +# activate environment +conda activate shiny-env +``` + +## mamba + +```bash +# create virtual environment and install shiny +mamba create -n shiny-env -c conda-forge shiny + +# activate environment +mamba activate shiny-env +``` +::: + +:::::: + + +We will be using [Positron](https://positron.posit.co/) in our tutorials, +but you can also use [Visual Studio Code](https://code.visualstudio.com/). +Whether you are using Positron, or VS Code, +you will need to make sure you have the +[VS Code Shiny Extension](https://marketplace.visualstudio.com/items?itemName=Posit.shiny) +installed. + +If you are working with VSCode and Positron, +make sure your current python environment has +the `ipykernel` package installed. +We assume you are already in the environment we set up in the previous installing shiny section. + + +::: {.panel-tabset} + +## pip + +```bash +pip install ipykernel +``` + +## conda + +```bash +conda install -c conda-forge ipykernel +``` + +## mamba + +```bash +mamba install -c conda-forge ipykernel +``` + +::: + +## Parts of a Shiny Application + +This is a 1 to 2 Hour tutorial to get you started and familiar with all the basic +parts of creating and deploying a Shiny for Python application. + +Shiny express allows us to write shiny apps with a minimal amount of code. +This lets us rapidly link interactive components with our data +in our web application. + +There are 3 main parts of a shiny express application + +1. [input components](/components/#inputs): + provide user interactions that can be used as inputs in other parts of the web application. +2. [output components](/components/#outputs): + results that are displayed on the web application. +3. [layout and ui components](/layouts): + how and where the inputs and output of the web application are displayed. + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 150 +from shiny.express import input, render, ui + +ui.input_slider("val", "Slider label", min=0, max=100, value=50) + +@render.text +def slider_val(): + return f"Slider value: {input.val()}" +``` + +This example demonstrates the basic mechanics behind Shiny apps. +As you move the slider (an input component), +the text (output component) will react and update to the corresponding input value. + +* Inputs are created via `ui.input_*()` functions. + * The first argument is the input's `id`, which is used to read the input's value. +* Outputs are created by decorating a function with `@render.*`. + * Inside a `render` function, `input` values can be read [reactively](#reactivity). + * When those `input` values change, Shiny knows how to minimally re-render output. +* Layouts are inferred automatically based on what items you place in your application. + * We will learn more about layouts and user interfaces in the next lesson of this tutorial. + +::: {.callout-note} +## Exercise + +Let's make and run our first shiny for python application. + +1. Take the above code and save it to a file. Here we named it `app.py` +2. Click on the play button (red circle in the image below)j + +You will see the terminal run the `shiny run` command for you automatically. +The output will look something like this + + +```bash +$ python -m shiny run --port 55901 --reload --autoreload-port 55902 app-010-simple.py +INFO: Will watch for changes in these directories: ['~/Desktop/py-shiny-example'] +INFO: Uvicorn running on http://127.0.0.1:55901 (Press CTRL+C to quit) +INFO: Started reloader process [24969] using WatchFiles +INFO: Started server process [24986] +INFO: Waiting for application startup. +INFO: Application startup complete. +INFO: 127.0.0.1:56426 - "GET /?vscodeBrowserReqId=1737097751843 HTTP/1.1" 200 OK +``` + +This will run the application on port `55901` and automatically reload and update +as you make changes to the `app.py` file. + +1. You will see the app build in the bottom terminal and open in the viewer on the side +2. Move the slider and see how the output reacts +3. Congratulations, you made your first shiny for python application! + +![](img/010-run_app.png) + +::: {.callout-tip} +## Naming your files + +If you start your file with the word `app`, +the shiny for python extension will recognize +it as an application and you will be able to see the "play" button to run your application. +You can also name your file `app-getting_started.py` +and you will still get the shiny extension play button. + +To have Shiny for Python work well with the VS Code extensions and for you to go through +the next series of lessons. +We recommend either one of the following file naming conventions: + +1. Create separate folders for each app example you will create and save separate `app.py` files in each folder +2. Create separate `app*.py` files in the same directory (e.g., `app-01.py`, `app-02.py`) +::: + +::: + +## Run your shiny application + +In addition to the play button in Positron, you can manually run your application from +the command line. +This is useful if you wish to specify your own port or want to rename your application +without the `app` prefix. + +```bash +shiny run my_app.py +``` + +::: {.callout-note} +If you named your application `app.py` you can omit it form the command and only use `shiny run`. +The `app.py` is the default file shiny looks for to run in the current directory. +Otherwise, you can pass in the name of the file that you wish to run. +The `app` prefix used in the example above is used to signal the VS Code shiny extension +to display the run app button. +::: + +:::{.callout-tip} +## Helpful run options + +Some useful options you can pass the `shiny run` command are: + +- `--port`: pass in a custom port, e.g., `--port 8000`. + This will run the app on the specified port, + instead of a random port. + This makes it easier to have the same browser window open as you stop and start your application. +- `--reload`: Enables auto-reload + +You can learn more about these run options on the +[`run_app` documentation page](https://shiny.posit.co/py/api/core/run_app.html). +::: + +## Shiny Express: Your first application + +The rest of this tutorial will work on creating this +[Restaurant Tipping Dashboard](https://gallery.shinyapps.io/template-dashboard-tips1/). + +::::: {.column-screen .hero-image .pt-4 .pb-5 style="margin-top:0px;max-width:1600px;"} +::: {.hello-output .g-col-12 .g-col-xl-12} + + + +::: + +::::: diff --git a/tutorials/intro-express/2-ui.qmd b/tutorials/intro-express/2-ui.qmd new file mode 100644 index 00000000..e0230819 --- /dev/null +++ b/tutorials/intro-express/2-ui.qmd @@ -0,0 +1,232 @@ +--- +title: User Interfaces and Layouts +--- + + + +In the previous lesson, +we saw how to create and run a basic shiny for python application. + +Now let's see how we can layout different user interfaces. + +If you are trying to whip up a quick application that needs input controls +and reactive outputs, shiny express tries to make this as simple as possible +by inferring the user interface and page layout for you. +However, +you have the option (and ability) to override these default layouts. + +We will assume that you have the pre-existing knowledge on how to +load a dataframe from a csv file, filter the data, calculate summaries from the data, +and plot results. +Here we will set the foundation on how to set up the UI that our code will +insert into to be displayed in a web application or dashboard. + +:::{.callout-tip} +When building your Shiny applications, +a general good practice is break up the application into two (2) separate steps + +1. Write the code for whatever interactive components you want + and use variables as place holders for the code. + It isn't interactive without code modifications yet, + but it'll help to make sure you have all the code working as you add interactive + components to it. +2. Outline the general user interface either literally on paper and/or put in + placeholder UI elements to get a sense of the look and feel of your application. + +You can do these steps in whatever asynchronously and in whatever order you'd like. +By keeping these steps separate, +especially as you are learning the framework, +you'll reduce the risks of creating errors and bugs that may be hard to point down. +::: + +## Layout User Interfaces + +We can lay out the input and output components on our web application using different +[shiny layouts](/layouts/). +We can have different navigation bars, sidebars, tabs, panels, and cards to control where each +component is displayed on the page. + +:::{.callout-note} +We will talk about the different input and output components separately in +later lessons of this tutorial. + +All the individual input components begin with a `input_*()` function. +You can find a list of all the inputs in the +[input components gallery](/components/#inputs). + +Outputs are created by decorating a function with the `@render.*()` decorator. +You can find a list of all the outputs in the +[outputs components gallery](/components/#outputs). +::: + + +Layouts in Shiny Express begin with the `with ui.*():` python context manager. +Here is an example of an Shiny Express application with a sidebar on the left. +One use case for this kind of layout is to provide the user the ability to interact +with components on the page +but also hide away the components to declutter +the application when they are not needed. + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 150 +from shiny.express import ui + +with ui.sidebar(bg="#f8f8f8"): + "Sidebar" + +"Main content" +``` + +You can use navigation bars (navbars) to add different pages to your application. +Let's build on our current sidebar layout, +and add a navigation bar to the top of the application. +We can nest layouts by nesting the context managers. + +:::{.callout-note} +Context managers are not specific to Shiny for Python. +They are features and tools used thought the Python ecosystem. +Typically you will not have to write your own context manager in Python +and use the `with` statement for an existing context manager. + +For Shiny, all you need to remember that Shiny Express uses context managers +to layout each part of the user interface. +You can also nest shiny layout context managers, +but be mindful where the `with` statement is and where the indentations are. +::: + +## Page Layouts + +If you need to embed different page layouts, you will need to look for the `ui.layout_*()` functions. + +:::{.column-body-outset-right} +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 200 +from shiny.express import ui + +with ui.nav_panel("A"): + with ui.layout_sidebar(): + with ui.sidebar(id="sidebar_left", open="desktop"): + "Left sidebar content" + "Main content" + +with ui.nav_panel("B"): + "Page 2 content" + +with ui.nav_panel("C"): + "Page C content" +``` +::: + +## Restaurant Tips UI + +For a given page, there are a few ways you can +[layout specific elements](layouts/panels-cards/#content-divided-by-cards). + +Let's sketch out the basic outline of the shiny application. + +![](../../docs/assets/tipping-dashboard.png) + +:::{.callout-note} +## Exercise + +Let's replicate the restaurant tipping dashboard, +but only put in the UI elements. + +The Restaurant Tipping dashboard has the following parts: + +1. Title: "Restaurant tipping" + - You can use the [`ui.page_opts()`](https://shiny.posit.co/py/api/express/express.ui.page_opts.html) + and pass in a `title=''` parameter to add an application title. +1. Sidebar for a few input components (we'll add those later) + - You can put some text here as a place holder, e.g., `"sidebar inputs"` +2. A full width column with 3 value boxes + - Each value box will take up the same width of space + - The value boxes will have labels for "Total tippers", "Average tip", and "Average bill" + - The value boxes will need a placeholder value (we will populate them with a reactive value later) +3. A full width column with 2 cards, one for a dataframe and another for a scatter plot + - Each card will share the same width of space + - The care headers will have values of "Tips data" and "Total bill vs tip" +4. a full width column with 1 card + - The card has a header of "Tip percentages" + + +::::::{.callout-tip} +Here are the documentation pages for functions that may be useful for this exercise: + +- `ui.page_opts()`: +- `ui.sidebar()`: +- `ui.layout_columns()`: +- `ui.card()`: +- `ui.card_header()`: +:::::: +::: + +::: {.callout-caution collapse="true"} +## Solution + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 150 +from shiny.express import input, ui + +# title +ui.page_opts(title="Restaurant tipping", fillable=True) + +# sidebar (empty for now) +with ui.sidebar(open="desktop"): + "sidebar inputs" + +# body of application + +# first row of value boxes +with ui.layout_columns(fill=False): + with ui.value_box(): + "Total tippers" + 42 + + with ui.value_box(): + "Average tip" + 42 + + with ui.value_box(): + "Average bill" + 42 + +# second row of cards +with ui.layout_columns(col_widths=[6, 6]): + with ui.card(full_screen=True): + ui.card_header("Tips data") + with ui.card(full_screen=True): + ui.card_header("Total bill vs tip") + +with ui.layout_columns(): + with ui.card(full_screen=True): + ui.card_header("Tip percentages") + +``` +::: + + +## Context managers + +You will typically not need to write your own context managers using the Python `with` statement. +If you would like to learn more about what context managers are, +and how to potentially write your own, you can check out +this +[context managers tutorial from Real Python](https://realpython.com/python-with-statement/) + +## Summary + +We have now created a skeleton for our dashboard by laying out the main UI components. +We will now be able to add input components. diff --git a/tutorials/intro-express/3-inputs.qmd b/tutorials/intro-express/3-inputs.qmd new file mode 100644 index 00000000..0b422a19 --- /dev/null +++ b/tutorials/intro-express/3-inputs.qmd @@ -0,0 +1,209 @@ +--- +title: Input Components +--- + + + +So far we've seen how to customize our user interface, +and saw how we can use layouts, cards, and the 12-Grid CSS Bootstrap layout +to help place different elements on our web application. +Now let's get a sense of all the different kinds of input components we can work with. +You can see a list of all the possible input components in the +[components gallery](/components/). + +In general, all the input components are imported with `from shiny.express import ui`, +and we can access each of the input components from the corresponding input +component function, `ui.input_*()`. +We typically pass in the input `id` as the first parameter, +and the `label` as the second parameter. +The `id` is a unique name for **each** input component that we can use +to look up its (reactive) value. +The `label` is the text that is displayed along with the input component, +it is usually the name or really short description for what the input component controls. +The rest of the arguments will differ for each component, +such as what values to be displayed for button choices, +or starting and ending range for a slider. +Each input component also has their own parameters for customizations specific for that particular input. + +:::{.callout-tip} +The [components gallery](/components/) is a great way to quickly see all the possible components +that come with Shiny for Python. +Each component page has their own mini example tutorial how to use the corresponding component. +It's useful to have the components page open to the side as you are +planning and building your application. +::: + +Let's combine a few of our layout knowledge from the previous lesson, +and add some input components to a shiny application. + +Here we have a fillable page with 2 columns, each containing a card +with a different UI component in it. + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 300 +from shiny.express import ui + +ui.page_opts(fillable=True) + +with ui.layout_columns(): + with ui.card(): + ui.card_header("Card 1 header") + ui.p("Card 1 body") + ui.input_slider("slider", "Slider", 0, 10, 5) + + with ui.card(): + ui.card_header("Card 2 header") + ui.p("Card 2 body") + ui.input_text("text", "Add text", "") +``` + + + +:::{.callout-note .column-page-right} +## Exercise + +Now that you have a bit more practice with UIs and Input components, +Let's build add a few inputs to our existing tips dashboard. + +![](../../docs/assets/tipping-dashboard.png) + +Our application only has inputs in the left sidebar. +Let's add them to the application (we will work on connecting them with data later) + +1. [`input_slider()`](https://shiny.posit.co/py/components/inputs/slider-range/): + We'll use `0` and `100` as the lower and upper bounds for now. + When we load our data we can calculate actual data range. +2. [`input_checkbox_group()`](https://shiny.posit.co/py/components/inputs/checkbox-group/): + With a label of `Food service` and options for `Lunch` and `Dinner`. +3. [`input_action_button()`](https://shiny.posit.co/py/components/inputs/action-button/): + Labeled `Reset filter`. + +We will connect these inputs to outputs in the next lesson. + +For reference, here's our current code and application: + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 500 +from shiny.express import input, ui + +# title +ui.page_opts(title="Restaurant tipping", fillable=True) + +# sidebar (empty for now) +with ui.sidebar(open="desktop"): + "sidebar inputs" + +# body of application + +# first row of value boxes +with ui.layout_columns(fill=False): + with ui.value_box(): + "Total tippers" + "Value 1" + + with ui.value_box(): + "Average tip" + "Value 2" + + with ui.value_box(): + "Average bill" + "Value 3" + +# second row of cards +with ui.layout_columns(col_widths=[6, 6]): + with ui.card(full_screen=True): + ui.card_header("Tips data") + "Tips DataFrame" + + with ui.card(full_screen=True): + ui.card_header("Total bill vs tip") + "Scatterplot" + +with ui.layout_columns(): + with ui.card(full_screen=True): + ui.card_header("Tip percentages") + "ridgeplot" + +``` + +::: + +::: {.callout-caution collapse="true" .column-page-right} + +## Solution + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 500 +from shiny.express import input, ui + +# title +ui.page_opts(title="Restaurant tipping", fillable=True) + +# sidebar +with ui.sidebar(open="desktop"): + ui.input_slider( + id="slider", + label="Bill amount", + min=0, + max=100, + value=[0, 100], + ) + ui.input_checkbox_group( + id="checkbox_group", + label="Food service", + choices={ + "Lunch": "Lunch", + "Dinner": "Dinner", + }, + selected=[ + "Lunch", + "Dinner", + ], + ) + ui.input_action_button("action_button", "Reset filter") + + +# body of application + +# first row of value boxes +with ui.layout_columns(fill=False): + with ui.value_box(): + "Total tippers" + "Value 1" + + with ui.value_box(): + "Average tip" + "Value 2" + + with ui.value_box(): + "Average bill" + "Value 3" + +# second row of cards +with ui.layout_columns(col_widths=[6, 6]): + with ui.card(full_screen=True): + ui.card_header("Tips data") + "Tips DataFrame" + + with ui.card(full_screen=True): + ui.card_header("Total bill vs tip") + "Scatterplot" + +with ui.layout_columns(): + with ui.card(full_screen=True): + ui.card_header("Tip percentages") + "ridgeplot" + +``` +::: diff --git a/tutorials/intro-express/4-external.qmd b/tutorials/intro-express/4-external.qmd new file mode 100644 index 00000000..05b902ff --- /dev/null +++ b/tutorials/intro-express/4-external.qmd @@ -0,0 +1,196 @@ +--- +title: External Resources +--- + +It's good to keep the UI and code logic separate. +Since we have an outline of the application UI, +let's make sure we can get all the logic working for the code. + +Let's take a look at the application we're planning to make and make sure we +can code up all the individual parts first. + +![](../../docs/assets/tipping-dashboard.png) + +From the dashboard sketch we need to make the following outputs + +1. Load the tips data that can be filtered byt the bill amount and food service time +2. Display the tips data after filtering +3. Calculate the total number of tippers (i.e., number of rows after filtering) +4. Calculate average tip percentage after filtering +5. Calculate average bill after filtering +6. [Plotly scatterplot](https://plotly.com/python/line-and-scatter/) + comparing `tip` vs `total_bill` of the filtered data +7. [ridgeplot](https://ridgeplot.readthedocs.io/en/stable/) + comparing days of the week vs tip percentages of the filtered data + +Now that we can lay out components and have the output components react to the input components, +let's see how we can incorporate modules, packages, and external data into our application. + +Before we start, make sure you have pandas, plotly, and ridgeplot installed. +If you are following along this tutorial from the beginning, +make sure you are in the proper virtual environment + +::: {.panel-tabset} + +## pip + +```bash +pip install pandas plotly ridgeplot +``` + +## conda + +```bash +conda install -c conda-forge pandas plotly +pip install ridgeplot +``` + +## mamba + +```bash +mamba install install -c conda-forge pandas plotly +pip install ridgeplot +``` + +::: + + +## External Data + +External data can be read into a Shiny for Python just like any other +python data science project, e.g., pandas, polars, ibis, eager, duckdb, etc. + +:::{.callout-note} +You can use the Python `narwhals` library to convert between +different dataframe backends. + + +::: + +For example, if we wanted to read in data from the `tips.csv` file in pandas, +we can use the same code in our shiny for python application. + +```{python} +#| include: false + +import pandas as pd + +try: + tips = pd.read_csv("tips.csv") +except FileNotFoundError: + tips = pd.read_csv("tutorials/intro-express/tips.csv") +``` + +```python +import pandas as pd + +tips = pd.read_csv("tips.csv") +``` + +Next, let's create a few variables to serve as placeholders for the input components: + +```{python} +total_lower = tips.total_bill.min() +total_upper = tips.total_bill.max() +time_selected = tips.time.unique().tolist() +``` + +And a placeholder for the filtered tips dataframe: + +```{python} +idx1 = tips.total_bill.between( + left=total_lower, + right=total_upper, + inclusive="both", +) + +idx2 = tips.time.isin(time_selected) + +tips_filtered = tips[idx1 & idx2] +``` + +Now that we have a placeholder for the filtered dataframe, +we can write the code for the other components of the application. + +```{python} +tips_filtered.head() +``` + +## Individual values + +Now, let's calculate the individual numbers that are showed in the value boxes. + +```{python} +# total tippers +total_tippers = tips_filtered.shape[0] +total_tippers +``` + +```{python} +# average tip +perc = tips_filtered.tip / tips_filtered.total_bill +average_tip = f"{perc.mean():.1%}" +average_tip +``` + +```{python} +# average bill +bill = tips_filtered.total_bill.mean() +average_bill = f"${bill:.2f}" +average_bill +``` + +## Plots + +We now need to create 2 figures, a scatterplot and a ridgeplot. + +The scatterplot will use the `plotly` library + +```{python} +import plotly.express as px + +px.scatter( + tips_filtered, + x="total_bill", + y="tip", + trendline="lowess" +) +``` + +The ridgeplot will use the `ridgeplot` library + +```{python} +from ridgeplot import ridgeplot + +tips_filtered["percent"] = tips_filtered.tip / tips_filtered.total_bill + +uvals = tips_filtered.day.unique() +samples = [[tips_filtered.percent[tips_filtered.day == val]] for val in uvals] + +plt = ridgeplot( + samples=samples, + labels=uvals, + bandwidth=0.01, + colorscale="viridis", + colormode="row-index" +) + +plt.update_layout( + legend=dict( + orientation="h", + yanchor="bottom", + y=1.02, + xanchor="center", + x=0.5 + ) +) + +plt +``` + +## Next steps + +Now we have the working code for all the parts of our application. +Next we will add these outputs to the application +and then link the input components to our placeholder variables +to filtered the data. diff --git a/tutorials/intro-express/5-outputs.qmd b/tutorials/intro-express/5-outputs.qmd new file mode 100644 index 00000000..d368ec3f --- /dev/null +++ b/tutorials/intro-express/5-outputs.qmd @@ -0,0 +1,793 @@ +--- +title: Output Components +--- + + + +Now that we know how to lay our the application and insert input components for the user to interact with, +let's create some output components that **react** to the input components. + +Output components all begin with a function with a `ui.render_*` decorator above a function definition. +The decorator is one of the ways that you signal to Shiny that the code will react to some change +in the application. +The name of the function does not matter to shiny, but you should pick a name +that hints at what value is going to be returned. +Finally, the body of the function should return the corresponding object for the output component. +Again, the decorator function signals to Shiny what kind of output component is displayed in the application. + +In Shiny Express, wherever the output function is defined +(i.e., where we are using the `ui.render_*` decorator), +is where the output will be displayed. +So it's perfectly normal to see function definitions throughout the application. + +:::{.callout-important} +In Shiny Express, +the name of the function is used as the output ID. +Each function that is decorated with a `@rander.*` decorator should have a unique name. +::: + + +The `@render.text` output is one way you can help debug your application visually. +Similar to `print()` statement debugging, +except the print statement will be rendered in your application. + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 150 +from shiny.express import input, render, ui + +ui.input_slider("val", "Slider label", min=0, max=100, value=50) + +@render.text +def slider_val(): + return f"Slider value: {input.val()}" +``` + +:::{.callout-note} +Since we are now using output components, you will need to also +import the `render` module from `shiny.express` + + +```python +from shiny.express import input, render, ui +``` +::: + + +## Use input values + +In the application above, we had this particular line in our function body, `input.var()`. +This line shows one of the main features in Shiny, reactive values. + +- The `input` variable automatically holds all the values from the input components as a Python dictionary +- We can access the input component value with dot notation and + use the same `id` we defined in the `ui.input_*()` function +- The `input.var` represents the actual reactive value object, + if we want to actually calculate the current reactive value, + we need to call it as a function with `input.var()` + + + +:::{.callout-tip .column-page-right} +## Exercise + + +Let's add `@render.text` outputs to the sidebar so we can confirm what the code will see from the input components. +We will work with the slider and checkbox components. + +1. Our current application should already have `input_slider()` and `input_checkbox_group()` components +2. Define separate output functions in the sidebar under the reset button, + one for the `input_sider()` values, and another for the `input_checkbox_group()` values. + - Use the `input.()` pattern to have shiny reactively get the input component values + - Return the value you want to use in the application (returning the input values directly is fine) +3. Decorate the functions with `@render.text` to signal that we want the returned value rendered as text in the application +4. Add 2 additional text outputs, one for the lower bound of the input slider, + and another for the upper bound of the input slider + +:::{.callout-tip} +The `ui.input_slider()` component returns a list of values +where the first (`0` index) is the lower slider value, +and the second (`1` index) is the upper slider value. +::: + +Here is our current application for reference: + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 500 +from shiny.express import input, ui + +# title +ui.page_opts(title="Restaurant tipping", fillable=True) + +# sidebar +with ui.sidebar(open="desktop"): + ui.input_slider( + id="slider", + label="Bill amount", + min=0, + max=100, + value=[0, 100], + ) + ui.input_checkbox_group( + id="checkbox_group", + label="Food service", + choices={ + "Lunch": "Lunch", + "Dinner": "Dinner", + }, + selected=[ + "Lunch", + "Dinner", + ], + ) + ui.input_action_button("action_button", "Reset filter") + + + +# body of application + +# first row of value boxes +with ui.layout_columns(fill=False): + with ui.value_box(): + "Total tippers" + "Value 1" + + with ui.value_box(): + "Average tip" + "Value 2" + + with ui.value_box(): + "Average bill" + "Value 3" + +# second row of cards +with ui.layout_columns(col_widths=[6, 6]): + with ui.card(full_screen=True): + ui.card_header("Tips data") + "Tips DataFrame" + + with ui.card(full_screen=True): + ui.card_header("Total bill vs tip") + "Scatterplot" + +with ui.layout_columns(): + with ui.card(full_screen=True): + ui.card_header("Tip percentages") + "ridgeplot" + +``` +::: + + +::: {.callout-caution collapse="true" .column-page-right} + +## Solution + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 500 +from shiny.express import input, ui, render + +# title +ui.page_opts(title="Restaurant tipping", fillable=True) + +# sidebar +with ui.sidebar(open="desktop"): + ui.input_slider( + id="slider", + label="Bill amount", + min=0, + max=100, + value=[0, 100], + ) + ui.input_checkbox_group( + id="checkbox_group", + label="Food service", + choices={ + "Lunch": "Lunch", + "Dinner": "Dinner", + }, + selected=[ + "Lunch", + "Dinner", + ], + ) + ui.input_action_button("action_button", "Reset filter") + + + @render.text + def slider_val(): + return f"Slider values: {input.slider()}" + + @render.text + def checkbox_group_val(): + return f"Checkbox values: {input.checkbox_group()}" + + @render.text + def slider_val_0(): + return f"Slider value (lower): {input.slider()[0]}" + + @render.text + def slider_val_1(): + return f"Slider value (upper): {input.slider()[1]}" + + +# body of application + +# first row of value boxes +with ui.layout_columns(fill=False): + with ui.value_box(): + "Total tippers" + "Value 1" + + with ui.value_box(): + "Average tip" + "Value 2" + + with ui.value_box(): + "Average bill" + "Value 3" + +# second row of cards +with ui.layout_columns(col_widths=[6, 6]): + with ui.card(full_screen=True): + ui.card_header("Tips data") + "Tips DataFrame" + + with ui.card(full_screen=True): + ui.card_header("Total bill vs tip") + "Scatterplot" + +with ui.layout_columns(): + with ui.card(full_screen=True): + ui.card_header("Tip percentages") + "ridgeplot" + +``` +::: + +In the previous lesson, +we created variables that served as place holders we can use to filter our `tips` data + +```python +total_lower = tips.total_bill.min() +total_upper = tips.total_bill.max() +time_selected = tips.time.unique().tolist() +``` + +Instead of these hardcoded values, +we can use the values from the `input_*()` components instead. + +:::{.callout-tip} +## Exercise + +We will learn more about reactivity and reactive calculations in the next lesson. +But in this exercise, +we will use the input component values to filter our tips dataframe for each +output component. + +For reference, below we have the code for each of the outputs we created earlier. +Wrap each output into a function and decorate it with the corresponding +output component decorator. + +- dataframe: [`render.data_frame`](https://shiny.posit.co/py/api/express/express.render.data_frame.html) +- value box text: [`render.express`](https://shiny.posit.co/py/api/express/express.render.express.html) +- scatterplot (plotly): [`render_plotly`](https://shiny.posit.co/py/docs/jupyter-widgets.html) +- ridgeplot (plotly): [`render_plotly`](https://shiny.posit.co/py/docs/jupyter-widgets.html) + +:::::: {.panel-tabset} + +## dataframe + +```python +tips = pd.read_csv("tips.csv") + +total_lower = tips.total_bill.min() +total_upper = tips.total_bill.max() +time_selected = tips.time.unique().tolist() + +idx1 = tips.total_bill.between( + left=total_lower, + right=total_upper, + inclusive="both", +) + +idx2 = tips.time.isin(time_selected) + +tips_filtered = tips[idx1 & idx2] +``` + +## valuebox + +```python +# total tippers +total_tippers = tips_filtered.shape[0] + +# average tip +perc = tips_filtered.tip / tips_filtered.total_bill +average_tip = f"{perc.mean():.1%}" + +# average bill +bill = tips_filtered.total_bill.mean() +average_bill = f"${bill:.2f}" +``` + +## scatterplot + +```python +# scatterplot +import plotly.express as px + +px.scatter( + tips_filtered, + x="total_bill", + y="tip", + trendline="lowess" +) +``` + +## ridgeplot + +```python +# ridgeplot +from ridgeplot import ridgeplot + +tips_filtered["percent"] = tips_filtered.tip / tips_filtered.total_bill + +uvals = tips_filtered.day.unique() +samples = [[tips_filtered.percent[tips_filtered.day == val]] for val in uvals] + +plt = ridgeplot( + samples=samples, + labels=uvals, + bandwidth=0.01, + colorscale="viridis", + colormode="row-index" +) + +plt.update_layout( + legend=dict( + orientation="h", + yanchor="bottom", + y=1.02, + xanchor="center", + x=0.5 + ) +) +) +``` +:::::: + +::: + +::: {.callout-caution collapse="true" .column-page-right} +## Solution + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 600 + +from pathlib import Path # only used for shinylive render + +import pandas as pd +import plotly.express as px +from ridgeplot import ridgeplot +from shiny.express import input, render, ui +from shinywidgets import render_plotly + +# only used for shinylive render +file = Path(__file__).parent / "tips.csv" + +# you may need to change the path to the tips.csv file +tips = pd.read_csv(file) + +# title +ui.page_opts(title="Restaurant tipping", fillable=True) + +# sidebar +with ui.sidebar(open="desktop"): + ui.input_slider( + id="slider", + label="Bill amount", + min=tips.total_bill.min(), + max=tips.total_bill.max(), + value=[tips.total_bill.min(), tips.total_bill.max()]) + ui.input_checkbox_group( + id="checkbox_group", + label="Food service", + choices={ + "Lunch": "Lunch", + "Dinner": "Dinner", + }, + selected=[ + "Lunch", + "Dinner", + ], + ) + ui.input_action_button("action_button", "Reset filter") + + +# body of application + +# first row of value boxes +with ui.layout_columns(fill=False): + with ui.value_box(): + "Total tippers" + @render.express + def total_tippers(): + idx1 = tips.total_bill.between( + left=input.slider()[0], + right=input.slider()[1], + inclusive="both", + ) + idx2 = tips.time.isin(input.checkbox_group()) + tips_filtered = tips[idx1 & idx2] + + tips_filtered.shape[0] + + with ui.value_box(): + "Average tip" + @render.express + def average_tip(): + idx1 = tips.total_bill.between( + left=input.slider()[0], + right=input.slider()[1], + inclusive="both", + ) + idx2 = tips.time.isin(input.checkbox_group()) + tips_filtered = tips[idx1 & idx2] + + perc = tips_filtered.tip / tips_filtered.total_bill + f"{perc.mean():.1%}" + + with ui.value_box(): + "Average bill" + @render.express + def average_bill(): + idx1 = tips.total_bill.between( + left=input.slider()[0], + right=input.slider()[1], + inclusive="both", + ) + idx2 = tips.time.isin(input.checkbox_group()) + tips_filtered = tips[idx1 & idx2] + + bill = tips_filtered.total_bill.mean() + f"${bill:.2f}" + +# second row of cards +with ui.layout_columns(col_widths=[6, 6]): + with ui.card(full_screen=True): + ui.card_header("Tips data") + @render.data_frame + def table(): + idx1 = tips.total_bill.between( + left=input.slider()[0], + right=input.slider()[1], + inclusive="both", + ) + idx2 = tips.time.isin(input.checkbox_group()) + tips_filtered = tips[idx1 & idx2] + + return render.DataGrid(tips_filtered) + + with ui.card(full_screen=True): + ui.card_header("Total bill vs tip") + @render_plotly + def scatterplot(): + idx1 = tips.total_bill.between( + left=input.slider()[0], + right=input.slider()[1], + inclusive="both", + ) + idx2 = tips.time.isin(input.checkbox_group()) + tips_filtered = tips[idx1 & idx2] + + return px.scatter( + tips_filtered, + x="total_bill", + y="tip", + trendline="lowess", + ) + +with ui.layout_columns(): + with ui.card(full_screen=True): + ui.card_header("Tip percentages") + @render_plotly + def tip_perc(): + idx1 = tips.total_bill.between( + left=input.slider()[0], + right=input.slider()[1], + inclusive="both", + ) + idx2 = tips.time.isin(input.checkbox_group()) + tips_filtered = tips[idx1 & idx2] + + tips_filtered["percent"] = tips_filtered.tip / tips_filtered.total_bill + + uvals = tips_filtered.day.unique() + samples = [[tips_filtered.percent[tips_filtered.day == val]] for val in uvals] + + plt = ridgeplot( + samples=samples, + labels=uvals, + bandwidth=0.01, + colorscale="viridis", + colormode="row-index" + ) + + plt.update_layout( + legend=dict( + orientation="h", + yanchor="bottom", + y=1.02, + xanchor="center", + x=0.5 + ) + ) + return plt + +## file: requirements.txt +ridgeplot==0.1.25 + +## file: tips.csv +total_bill,tip,sex,smoker,day,time,size +16.99,1.01,Female,No,Sun,Dinner,2 +10.34,1.66,Male,No,Sun,Dinner,3 +21.01,3.5,Male,No,Sun,Dinner,3 +23.68,3.31,Male,No,Sun,Dinner,2 +24.59,3.61,Female,No,Sun,Dinner,4 +25.29,4.71,Male,No,Sun,Dinner,4 +8.77,2.0,Male,No,Sun,Dinner,2 +26.88,3.12,Male,No,Sun,Dinner,4 +15.04,1.96,Male,No,Sun,Dinner,2 +14.78,3.23,Male,No,Sun,Dinner,2 +10.27,1.71,Male,No,Sun,Dinner,2 +35.26,5.0,Female,No,Sun,Dinner,4 +15.42,1.57,Male,No,Sun,Dinner,2 +18.43,3.0,Male,No,Sun,Dinner,4 +14.83,3.02,Female,No,Sun,Dinner,2 +21.58,3.92,Male,No,Sun,Dinner,2 +10.33,1.67,Female,No,Sun,Dinner,3 +16.29,3.71,Male,No,Sun,Dinner,3 +16.97,3.5,Female,No,Sun,Dinner,3 +20.65,3.35,Male,No,Sat,Dinner,3 +17.92,4.08,Male,No,Sat,Dinner,2 +20.29,2.75,Female,No,Sat,Dinner,2 +15.77,2.23,Female,No,Sat,Dinner,2 +39.42,7.58,Male,No,Sat,Dinner,4 +19.82,3.18,Male,No,Sat,Dinner,2 +17.81,2.34,Male,No,Sat,Dinner,4 +13.37,2.0,Male,No,Sat,Dinner,2 +12.69,2.0,Male,No,Sat,Dinner,2 +21.7,4.3,Male,No,Sat,Dinner,2 +19.65,3.0,Female,No,Sat,Dinner,2 +9.55,1.45,Male,No,Sat,Dinner,2 +18.35,2.5,Male,No,Sat,Dinner,4 +15.06,3.0,Female,No,Sat,Dinner,2 +20.69,2.45,Female,No,Sat,Dinner,4 +17.78,3.27,Male,No,Sat,Dinner,2 +24.06,3.6,Male,No,Sat,Dinner,3 +16.31,2.0,Male,No,Sat,Dinner,3 +16.93,3.07,Female,No,Sat,Dinner,3 +18.69,2.31,Male,No,Sat,Dinner,3 +31.27,5.0,Male,No,Sat,Dinner,3 +16.04,2.24,Male,No,Sat,Dinner,3 +17.46,2.54,Male,No,Sun,Dinner,2 +13.94,3.06,Male,No,Sun,Dinner,2 +9.68,1.32,Male,No,Sun,Dinner,2 +30.4,5.6,Male,No,Sun,Dinner,4 +18.29,3.0,Male,No,Sun,Dinner,2 +22.23,5.0,Male,No,Sun,Dinner,2 +32.4,6.0,Male,No,Sun,Dinner,4 +28.55,2.05,Male,No,Sun,Dinner,3 +18.04,3.0,Male,No,Sun,Dinner,2 +12.54,2.5,Male,No,Sun,Dinner,2 +10.29,2.6,Female,No,Sun,Dinner,2 +34.81,5.2,Female,No,Sun,Dinner,4 +9.94,1.56,Male,No,Sun,Dinner,2 +25.56,4.34,Male,No,Sun,Dinner,4 +19.49,3.51,Male,No,Sun,Dinner,2 +38.01,3.0,Male,Yes,Sat,Dinner,4 +26.41,1.5,Female,No,Sat,Dinner,2 +11.24,1.76,Male,Yes,Sat,Dinner,2 +48.27,6.73,Male,No,Sat,Dinner,4 +20.29,3.21,Male,Yes,Sat,Dinner,2 +13.81,2.0,Male,Yes,Sat,Dinner,2 +11.02,1.98,Male,Yes,Sat,Dinner,2 +18.29,3.76,Male,Yes,Sat,Dinner,4 +17.59,2.64,Male,No,Sat,Dinner,3 +20.08,3.15,Male,No,Sat,Dinner,3 +16.45,2.47,Female,No,Sat,Dinner,2 +3.07,1.0,Female,Yes,Sat,Dinner,1 +20.23,2.01,Male,No,Sat,Dinner,2 +15.01,2.09,Male,Yes,Sat,Dinner,2 +12.02,1.97,Male,No,Sat,Dinner,2 +17.07,3.0,Female,No,Sat,Dinner,3 +26.86,3.14,Female,Yes,Sat,Dinner,2 +25.28,5.0,Female,Yes,Sat,Dinner,2 +14.73,2.2,Female,No,Sat,Dinner,2 +10.51,1.25,Male,No,Sat,Dinner,2 +17.92,3.08,Male,Yes,Sat,Dinner,2 +27.2,4.0,Male,No,Thur,Lunch,4 +22.76,3.0,Male,No,Thur,Lunch,2 +17.29,2.71,Male,No,Thur,Lunch,2 +19.44,3.0,Male,Yes,Thur,Lunch,2 +16.66,3.4,Male,No,Thur,Lunch,2 +10.07,1.83,Female,No,Thur,Lunch,1 +32.68,5.0,Male,Yes,Thur,Lunch,2 +15.98,2.03,Male,No,Thur,Lunch,2 +34.83,5.17,Female,No,Thur,Lunch,4 +13.03,2.0,Male,No,Thur,Lunch,2 +18.28,4.0,Male,No,Thur,Lunch,2 +24.71,5.85,Male,No,Thur,Lunch,2 +21.16,3.0,Male,No,Thur,Lunch,2 +28.97,3.0,Male,Yes,Fri,Dinner,2 +22.49,3.5,Male,No,Fri,Dinner,2 +5.75,1.0,Female,Yes,Fri,Dinner,2 +16.32,4.3,Female,Yes,Fri,Dinner,2 +22.75,3.25,Female,No,Fri,Dinner,2 +40.17,4.73,Male,Yes,Fri,Dinner,4 +27.28,4.0,Male,Yes,Fri,Dinner,2 +12.03,1.5,Male,Yes,Fri,Dinner,2 +21.01,3.0,Male,Yes,Fri,Dinner,2 +12.46,1.5,Male,No,Fri,Dinner,2 +11.35,2.5,Female,Yes,Fri,Dinner,2 +15.38,3.0,Female,Yes,Fri,Dinner,2 +44.3,2.5,Female,Yes,Sat,Dinner,3 +22.42,3.48,Female,Yes,Sat,Dinner,2 +20.92,4.08,Female,No,Sat,Dinner,2 +15.36,1.64,Male,Yes,Sat,Dinner,2 +20.49,4.06,Male,Yes,Sat,Dinner,2 +25.21,4.29,Male,Yes,Sat,Dinner,2 +18.24,3.76,Male,No,Sat,Dinner,2 +14.31,4.0,Female,Yes,Sat,Dinner,2 +14.0,3.0,Male,No,Sat,Dinner,2 +7.25,1.0,Female,No,Sat,Dinner,1 +38.07,4.0,Male,No,Sun,Dinner,3 +23.95,2.55,Male,No,Sun,Dinner,2 +25.71,4.0,Female,No,Sun,Dinner,3 +17.31,3.5,Female,No,Sun,Dinner,2 +29.93,5.07,Male,No,Sun,Dinner,4 +10.65,1.5,Female,No,Thur,Lunch,2 +12.43,1.8,Female,No,Thur,Lunch,2 +24.08,2.92,Female,No,Thur,Lunch,4 +11.69,2.31,Male,No,Thur,Lunch,2 +13.42,1.68,Female,No,Thur,Lunch,2 +14.26,2.5,Male,No,Thur,Lunch,2 +15.95,2.0,Male,No,Thur,Lunch,2 +12.48,2.52,Female,No,Thur,Lunch,2 +29.8,4.2,Female,No,Thur,Lunch,6 +8.52,1.48,Male,No,Thur,Lunch,2 +14.52,2.0,Female,No,Thur,Lunch,2 +11.38,2.0,Female,No,Thur,Lunch,2 +22.82,2.18,Male,No,Thur,Lunch,3 +19.08,1.5,Male,No,Thur,Lunch,2 +20.27,2.83,Female,No,Thur,Lunch,2 +11.17,1.5,Female,No,Thur,Lunch,2 +12.26,2.0,Female,No,Thur,Lunch,2 +18.26,3.25,Female,No,Thur,Lunch,2 +8.51,1.25,Female,No,Thur,Lunch,2 +10.33,2.0,Female,No,Thur,Lunch,2 +14.15,2.0,Female,No,Thur,Lunch,2 +16.0,2.0,Male,Yes,Thur,Lunch,2 +13.16,2.75,Female,No,Thur,Lunch,2 +17.47,3.5,Female,No,Thur,Lunch,2 +34.3,6.7,Male,No,Thur,Lunch,6 +41.19,5.0,Male,No,Thur,Lunch,5 +27.05,5.0,Female,No,Thur,Lunch,6 +16.43,2.3,Female,No,Thur,Lunch,2 +8.35,1.5,Female,No,Thur,Lunch,2 +18.64,1.36,Female,No,Thur,Lunch,3 +11.87,1.63,Female,No,Thur,Lunch,2 +9.78,1.73,Male,No,Thur,Lunch,2 +7.51,2.0,Male,No,Thur,Lunch,2 +14.07,2.5,Male,No,Sun,Dinner,2 +13.13,2.0,Male,No,Sun,Dinner,2 +17.26,2.74,Male,No,Sun,Dinner,3 +24.55,2.0,Male,No,Sun,Dinner,4 +19.77,2.0,Male,No,Sun,Dinner,4 +29.85,5.14,Female,No,Sun,Dinner,5 +48.17,5.0,Male,No,Sun,Dinner,6 +25.0,3.75,Female,No,Sun,Dinner,4 +13.39,2.61,Female,No,Sun,Dinner,2 +16.49,2.0,Male,No,Sun,Dinner,4 +21.5,3.5,Male,No,Sun,Dinner,4 +12.66,2.5,Male,No,Sun,Dinner,2 +16.21,2.0,Female,No,Sun,Dinner,3 +13.81,2.0,Male,No,Sun,Dinner,2 +17.51,3.0,Female,Yes,Sun,Dinner,2 +24.52,3.48,Male,No,Sun,Dinner,3 +20.76,2.24,Male,No,Sun,Dinner,2 +31.71,4.5,Male,No,Sun,Dinner,4 +10.59,1.61,Female,Yes,Sat,Dinner,2 +10.63,2.0,Female,Yes,Sat,Dinner,2 +50.81,10.0,Male,Yes,Sat,Dinner,3 +15.81,3.16,Male,Yes,Sat,Dinner,2 +7.25,5.15,Male,Yes,Sun,Dinner,2 +31.85,3.18,Male,Yes,Sun,Dinner,2 +16.82,4.0,Male,Yes,Sun,Dinner,2 +32.9,3.11,Male,Yes,Sun,Dinner,2 +17.89,2.0,Male,Yes,Sun,Dinner,2 +14.48,2.0,Male,Yes,Sun,Dinner,2 +9.6,4.0,Female,Yes,Sun,Dinner,2 +34.63,3.55,Male,Yes,Sun,Dinner,2 +34.65,3.68,Male,Yes,Sun,Dinner,4 +23.33,5.65,Male,Yes,Sun,Dinner,2 +45.35,3.5,Male,Yes,Sun,Dinner,3 +23.17,6.5,Male,Yes,Sun,Dinner,4 +40.55,3.0,Male,Yes,Sun,Dinner,2 +20.69,5.0,Male,No,Sun,Dinner,5 +20.9,3.5,Female,Yes,Sun,Dinner,3 +30.46,2.0,Male,Yes,Sun,Dinner,5 +18.15,3.5,Female,Yes,Sun,Dinner,3 +23.1,4.0,Male,Yes,Sun,Dinner,3 +15.69,1.5,Male,Yes,Sun,Dinner,2 +19.81,4.19,Female,Yes,Thur,Lunch,2 +28.44,2.56,Male,Yes,Thur,Lunch,2 +15.48,2.02,Male,Yes,Thur,Lunch,2 +16.58,4.0,Male,Yes,Thur,Lunch,2 +7.56,1.44,Male,No,Thur,Lunch,2 +10.34,2.0,Male,Yes,Thur,Lunch,2 +43.11,5.0,Female,Yes,Thur,Lunch,4 +13.0,2.0,Female,Yes,Thur,Lunch,2 +13.51,2.0,Male,Yes,Thur,Lunch,2 +18.71,4.0,Male,Yes,Thur,Lunch,3 +12.74,2.01,Female,Yes,Thur,Lunch,2 +13.0,2.0,Female,Yes,Thur,Lunch,2 +16.4,2.5,Female,Yes,Thur,Lunch,2 +20.53,4.0,Male,Yes,Thur,Lunch,4 +16.47,3.23,Female,Yes,Thur,Lunch,3 +26.59,3.41,Male,Yes,Sat,Dinner,3 +38.73,3.0,Male,Yes,Sat,Dinner,4 +24.27,2.03,Male,Yes,Sat,Dinner,2 +12.76,2.23,Female,Yes,Sat,Dinner,2 +30.06,2.0,Male,Yes,Sat,Dinner,3 +25.89,5.16,Male,Yes,Sat,Dinner,4 +48.33,9.0,Male,No,Sat,Dinner,4 +13.27,2.5,Female,Yes,Sat,Dinner,2 +28.17,6.5,Female,Yes,Sat,Dinner,3 +12.9,1.1,Female,Yes,Sat,Dinner,2 +28.15,3.0,Male,Yes,Sat,Dinner,5 +11.59,1.5,Male,Yes,Sat,Dinner,2 +7.74,1.44,Male,Yes,Sat,Dinner,2 +30.14,3.09,Female,Yes,Sat,Dinner,4 +12.16,2.2,Male,Yes,Fri,Lunch,2 +13.42,3.48,Female,Yes,Fri,Lunch,2 +8.58,1.92,Male,Yes,Fri,Lunch,1 +15.98,3.0,Female,No,Fri,Lunch,3 +13.42,1.58,Male,Yes,Fri,Lunch,2 +16.27,2.5,Female,Yes,Fri,Lunch,2 +10.09,2.0,Female,Yes,Fri,Lunch,2 +20.45,3.0,Male,No,Sat,Dinner,4 +13.28,2.72,Male,No,Sat,Dinner,2 +22.12,2.88,Female,Yes,Sat,Dinner,2 +24.01,2.0,Male,Yes,Sat,Dinner,4 +15.69,3.0,Male,Yes,Sat,Dinner,3 +11.61,3.39,Male,No,Sat,Dinner,2 +10.77,1.47,Male,No,Sat,Dinner,2 +15.53,3.0,Male,Yes,Sat,Dinner,2 +10.07,1.25,Male,No,Sat,Dinner,2 +12.6,1.0,Male,Yes,Sat,Dinner,2 +32.83,1.17,Male,Yes,Sat,Dinner,2 +35.83,4.67,Female,No,Sat,Dinner,3 +29.03,5.92,Male,No,Sat,Dinner,3 +27.18,2.0,Female,Yes,Sat,Dinner,2 +22.67,2.0,Male,Yes,Sat,Dinner,2 +17.82,1.75,Male,No,Sat,Dinner,2 +18.78,3.0,Female,No,Thur,Dinner,2 + +``` +::: diff --git a/tutorials/intro-express/6-reactivity.qmd b/tutorials/intro-express/6-reactivity.qmd new file mode 100644 index 00000000..0d8654de --- /dev/null +++ b/tutorials/intro-express/6-reactivity.qmd @@ -0,0 +1,143 @@ +--- +title: Reactivity +--- + +We've been using the term "reactive" a lot during these tutorials. +But what does it mean? +It's actually more than "user interacts with input and new value gets calculated". +Reactivity is actually what makes Shiny special: +when an input changes, only the minimum amount of calculations are made to update the outputs. +This makes shiny very efficient. + +Shiny knows to re-execute **reactive functions** (e.g., `render` functions) when their **reactive dependencies** (e.g., `input`) change. +There are other main forms of reactive functions and dependencies: + +* Calculations with `@reactive.calc` + * Write your reactive calculation once, then call it as needed. +* Side effects with `@reactive.effect` + * Effects are similar to `@render.*` functions, but they don't return anything. They're used for their side-effects (e.g., writing to a database, sending an email, etc.) +* Reactive values with `reactive.value` + * Create `input`-like values that aren't tied to input controls and can be updated. They're often used to maintain state in an app. + +In this lesson we'll focus on the `@reactive.calc`, let's see why we may want reactive calculations. + +```{mermaid} +flowchart LR + A[Input] --> B(Calculated from Input) + B --> C{Value calculated from the input calc} + B --> D[Another value calculated from the input calc] +``` + +Let's say we have an input (A), +this input creates a value in the application (B). +But what if another part of the application needs to use this calculated value (C) +or another part (D)? + +Similar to why we create variables in python to capture intermediate values, +we can save these intermediate "reactive" calculations in shiny. + + +```{shinylive-python} +#| standalone: true +#| components: [editor, viewer] +#| layout: vertical +#| viewerHeight: 200 + +from shiny import reactive +from shiny.express import input, render, ui + +ui.input_slider("x", "Slider value", min=0, max=100, value=10) + +# we need to make a calculation from an input value +@render.text +def x_squared_text(): + return f"Squared value: {input.x() ** 2}" + +# we can save this calculation to be used later +@reactive.calc +def x_squared(): + return input.x() ** 2 + +# we can use that saved calculation +@render.text +def x_squared_calc_text(): + return f"Saved squared: {x_squared()}" + +# we can build on top of that saved calculation +@render.text +def x_squared_half_calc_text(): + return f"Build on squared value: {x_squared() / 2}" + +# we don't need to re-calculate everything from the input again +@render.text +def x_squared_half_text(): + return f"Recalculate from input: {input.x() ** 2 / 2}" +``` + +The app above shows that we only need to make the `input.x() ** 2` calculation **once**, +so we do not need to repeat that calculation, `input.x() ** 2 / 2`. + +This idea is really similar to the following Python code, +where we save an intermediate value, +instead of repeating a calculation. + +```{python} +initial_input_value = 3 + +initial_squared = initial_input_value ** 2 + +initial_squared_half = initial_squared / 2 +``` + +If we did not save the `initial_squared` intermediate value, +we would have to re-make that calculation when doing a square and half. + +```{python} +initial_squared_half = initial_input_value ** 2 / 2 +``` + + + +Currently our application is re-filtering the data from the input components +for each output component displayed in the application. + +```{mermaid} +flowchart LR + A[Input Slider] --> C(Filtered Data) + B[Input Checkboxes] --> C + C --> D{value box 1} + + E[Input Slider] --> G(Filtered Data) + F[Input Checkboxes] --> G + G --> H{value box 2} + + I[Input Slider] --> K(Filtered Data) + J[Input Checkboxes] --> K + K --> L{value box 3} + + M[Input Slider] --> O(Filtered Data) + N[Input Checkboxes] --> O + O --> P{dataframe display} + + Q[Input Slider] --> S(Filtered Data) + R[Input Checkboxes] --> S + S --> T{scatter plot} + + U[Input Slider] --> W(Filtered Data) + V[Input Checkboxes] --> W + W --> X{ridgeplot} +``` + +It would be great if we calculated the filtered data **once** +and re-used it across all our output components. +```{mermaid} +flowchart LR + A[Input Slider] --> C(Filtered Data) + B[Input Checkboxes] --> C + C --> D{value box 1} + C --> E{value box 2} + C --> F{value box 3} + C --> G{dataframe display} + C --> H{scatter plot} + C --> I{ridgeplot} +``` diff --git a/tutorials/intro-express/7-publish.qmd b/tutorials/intro-express/7-publish.qmd new file mode 100644 index 00000000..719dc1a9 --- /dev/null +++ b/tutorials/intro-express/7-publish.qmd @@ -0,0 +1,77 @@ +--- +title: Publish and Share Your Application +--- + +## `app.py` + +At the start of these tutorials, +we've shown how to create an `app.py` file and how to run it +from either Positron, VS Code, or in the command line. + +If your file begins with the `app` prefix, +the shiny extension for VS Code will give you a play button to run +the current file as a shiny application. + +![](img/010-run_app.png) + +The play button executes the `shiny run` command in the terminal +for you, but you can manually run an application file +on your own. + +```bash +shiny run app.py +``` +This `app.py` file can be shared with others + +## Shiny Live + +Throughout these tutorials, +we provided you the code and working example in line with the text. +These applications were run using Shinylive. +It uses Shiny and WebAssembly to run Shiny applications +completely in the browser without having to set anything up. + +If you have all your code in an `app.py` file, +you can go to the shiny live editor and paste in your code. +The shiny live editor is at this location: + +:::{.callout-note} +There is no empty editor, the site will take you to the shinylive page and +default to one of the example applications. +You can copy and paste your `app.py` file into the editor and run it in the browser +::: + +You cannot save the application file in the browser, +instead you can click on the "Share" button on the corner of the Shinylive page, +and use this URL to share your application with others. +There is an option to use the link that shows the code and rendered application. + +:::{.callout-note} +Shinylive URLs are extremely long. That is because +all the code is embeded into the URL. +::: + +You can read more about Shinylive here: + + +## Connect Cloud + +[Connect Cloud](https://connect.posit.cloud/) is a free service that +allows you to publish your web applications. +You can actually use it to publish more than a shiny for python application! + +The code you want published needs to first exist in a +[GitHub](https://github.com/) +repository. +Once your code is in a github repository, +you can use the Posit Connect Cloud interface to link to the repository, +and the service will automatically look for your `app.py` file to publish. +You can follow these instructions from the connect cloud shiny for python +publishing page: + + +If you want to update your application, +you will make your changes, commit, and push them to the same github repository. +Connect Cloud has a +[republish](https://docs.posit.co/connect-cloud/user/manage/content_page.html#republish) +feature on the main page that will re-deploy your application. diff --git a/tutorials/intro-express/8-next.qmd b/tutorials/intro-express/8-next.qmd new file mode 100644 index 00000000..48f92100 --- /dev/null +++ b/tutorials/intro-express/8-next.qmd @@ -0,0 +1,46 @@ +--- +title: "What's Next?" +--- + +## Templates + +This dashboard is one of many example dashboards available on the +[Shiny for Python Templates Page](https://shiny.posit.co/py/templates/). + +If you want to download and run this application, +you can visit the +[Restaurant tips dashboard template page](https://shiny.posit.co/py/templates/dashboard-tips/) +and follow the command to downlaod the application + +```bash +shiny create --template dashboard-tips --mode express --github posit-dev/py-shiny-templates +``` + +This will create a `dashboard-tips` folder in your current directory. +The output of the command will then prompt you to install the dependencies for the application +using `pip`. + +```bash +$ shiny create --template dashboard-tips --mode express --github posit-dev/py-shiny-templates +ℹ Using GitHub repository posit-dev/py-shiny-templates. +… Creating Restaurant tips dashboard Shiny app... +? Enter destination directory: ./dashboard-tips +✓ Created Shiny app at dashboard-tips + +→ Next steps: +- Install required dependencies: + cd dashboard-tips + pip install -r requirements.txt +- Open and edit the app file: dashboard-tips/app.py +``` + +To run the example tips dashboard, +you can use the same `shiny run` command we did in the previous exercise. +The application code is in the `app.py` file. + +```bash +shiny run +``` + +There are a few other files and modules that are in this example application. +We will spend the next few lessons of this tutorial going though each of the components. diff --git a/tutorials/intro-express/img/010-run_app.png b/tutorials/intro-express/img/010-run_app.png new file mode 100644 index 0000000000000000000000000000000000000000..51adbdbc4d8358a469580c3de41b77b91551b967 GIT binary patch literal 231791 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ΔSd07t^#Sel228$A&r zpS_=Br3HSFL(!Px{K2VT(@lc`CH((5d+VsE8ijp(hM|=1?oyGKhM^@C21G$5C8WE% zq`OtRB&55frMsJH`@VJQhQ!_H=sBmB zb%o@d8qLP+gjOAmuQL=7bRz$kB82-N2oe4J=#c~eZMd6^TT{-8CxbAmA+|rLBa%kI zJp)fnCgy8Vw;n!;C>lRw{s&HRM6;oQ&>>3wp%|#S{y0n%gvtP1hgo;;jh(-re&Nm4 zX1L#+atO*9FX0s@4I|}#Vq1pBDe!<%Uh6bC=Edk;`q3HpU0jE2vlg#LeaQ0O`9NqJ z0EM_tsUI_EIp!AhG5w2qmv$^%!eT61dUnQgOZ1#t1B~L$3Di z?Zr_VKQO)mp_WzLye49#Q7@AwQ@ecoi&mHXoD>ZjV?g(M9$g5Pzat%n7!d{=9&Q+# zUEjD*8UM-?i@Tio`oYxIsRgmVakMggFv{C^7NgAisB^YwP}M;HF6Ri_RZxKD!*VNA zfr|n+*_eaqS4+z`e7o7YKZ1X~#{RkA$2BGCySvteW3>V#w!sI`(w6UE~ zunvve8~6)<0cn-gzT7!D=uL|c?2{(x zx7!*4chFm|TS0qvy8bSIjA=cC6MI@ztFT80NOrDWc!RI0?k&47(|=iZvBiJ4 z?Cg=3=(RcmRb?*|d2LRO>i0Li6}AS8=M0<77DjEb22Lve7Vw0lY=d=;e=GoM`H#im z>7_QhU$_3xCEG7HObBFzihwQORE|i$5*mKFuwtkjD*tp2rmZMn55qfkbVFwn~H1bNMOCj4Fgi2uABcG!?RgsEdM`3 zyrdDz>zcpEh{Jk_{wWsRZ^3jX( zGk~$YTOUZCXMp==%J%*6$nC9zmf*y_$LlM z@+n(jB<^d*#{;f#Z1Z!{(HVT7^-R zYq61y{xea-kwMG*Y;nPT?05oDRmFdvV1l#oPl{w8?LC zg<9d~H$_&T#tSt%O(yqz&xv?NzQu6X46J_$S5VFeq3Uoy zPW=mq`XiiPcJe{oJ|q=)2TUo3_;+OXABMkU%KD4uozcb}kvrk@-;WC)y4;7B-y&l79OY_#uXF7X>Ri13 z$@}XDPI2=1Hf01wv11S0=w7DMX$GmDi8w8S7lgU zmD8?ZxN4J!J9C&GjH{zOx8$Rgx2Z{jH%wNvl_{c#g1~YJk54F22-lBv1LE@H#?IRU*q3$QFT@MkItBJq4xl0dJ%B^K z%Ivf86~RvwAV9FcbHLzD-0ntmfd&UFer#R`Ztxu4r#(Oq?RICl^#qGLg}SWx0j#s4 z>ClG3I|X=g8XwTXqS}ADX-;t9XAiWd)w?Ja$45Jo9M4car+Xdpo0pahsH$LV%c1d z^~aURwfx=J4IdPo$q>|z;TA#$qK{8)VmH1;MDw`Fu1N2M3e`nV3T@_Kc2~_Pl%|

%8Skj>M^q3( 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�R@M6HAH4hd)9jDF+h! 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 literal 0 HcmV?d00001 diff --git a/docs/assets/vscode.png b/get-started/assets/vscode.png similarity index 100% rename from docs/assets/vscode.png rename to get-started/assets/vscode.png diff --git a/get-started/create-run.qmd b/get-started/create-run.qmd new file mode 100644 index 00000000..ffe68b24 --- /dev/null +++ b/get-started/create-run.qmd @@ -0,0 +1,80 @@ +--- +title: "Create and Run" +--- + +When you [install shiny](get-started/install.qmd), you will have access to the `shiny` command line interface (CLI). +You can use this interface to help you create and run your Shiny applications. + +## Create a Shiny application + +The best way to create a new Shiny app is with the `shiny create` command line interface. +This command asks you a series of questions about what kind of app you want to create, +and then provides all the boilerplate code you need to get started with a working app. + +```bash +shiny create +``` + +![Running the shiny create command from a terminal](assets/shiny-create.mp4){class="img-shadow"} + +::: callout-tip +### Copy/paste examples + +If you find an example on this site that you want to run or edit locally, +you can use the following command to get a basic app template, +then copy and paste the code from the example into the template. + +```bash +shiny create --template basic-app -m express +``` +::: + + +## Run + +Shiny apps can be launched from Positron, VS Code, or the command line via `shiny run`. + +::: {.callout-tip} +#### Name your app `app.py` + +We recommend naming your shiny application `app.py`. +This is the default file that `shiny run` will look for, so you can run the application in the terminal without any additional parameters. + +If you need a more unique name, we recommend beginning the file with `app`, so the shiny extension can still run with a [play button click](install.qmd#positron). +::: + +### Positron and VS Code + +The best way to run (and develop) Shiny apps is in [Positron][positron] or [Visual Studio Code][vscode] with the [Shiny extension][vscode-shiny]. +When a Shiny `app.py` file is being edited, the default behavior of the Run button (circled in red in the screenshot below) becomes "Run Shiny App". + +![Visual Studio Code running with the Shiny extension](assets/positron-run.png) + +This launches a Python process in a dedicated terminal instance, and a captive web browser. +This lets you test your app without leaving your editor, and whenever you make changes to your app's source, the preview will update. To preview your app in a full browser, click the icon to the right of the URL bar to launch the app in an external browser. + +Next to the Run button is a dropdown menu that lets you "Debug Shiny App". This launches the app in debug mode, which lets you set breakpoints and step through your code. +See the [debugging](debug.qmd) section for more information. + +### Command line + +To run a Shiny app from the command line, use the `shiny run` command. +This command takes a single argument, the path to the app's entry point. +For example, if your app's entry point is `app.py` in the directory `./app_dir`, you can run it like this: + +```bash +shiny run --reload --launch-browser app_dir/app.py +``` + +This should start your app and also automatically launch a web browser. + +The `--reload` flag means that file changes in the current directory tree will cause the Python process to restart and the browser to reload. +Update and save changes to `app.py` and then wait a moment for the changes to appear in the browser. + +With these two `shiny` commands, you now have a project that you can run in your terminal. +You can use any text editor or Python IDE to write Shiny apps, but we've taken special care to ensure a smooth workflow for [Positron][positron] and [Visual Studio Code][vscode]. + +[positron]: https://positron.posit.co/ +[vscode]: https://code.visualstudio.com/ +[vscode-shiny]: https://marketplace.visualstudio.com/items?itemName=posit.shiny +[vscode-python]: https://marketplace.visualstudio.com/items?itemName=ms-python.python diff --git a/get-started/debug.qmd b/get-started/debug.qmd index f78276ef..1e412638 100644 --- a/get-started/debug.qmd +++ b/get-started/debug.qmd @@ -57,11 +57,9 @@ The error displayed in the app is only the final part of the stack trace, but th When Shiny apps are deployed, error messages are sanitized to the eliminate the possibility of leaking sensitive information. To unsanitize error messages, you'll need to set `sanitize_errors=True` in the `App` constructor (of a [Shiny core app](express-vs-core.qmd)). ::: - - ## Debugging -### VS Code debugger +### Positron and VS Code debugger The [VS Code debugger](https://code.visualstudio.com/docs/editor/debugging) is a powerful tool for debugging Python code. diff --git a/get-started/install-create-run.qmd b/get-started/install.qmd similarity index 50% rename from get-started/install-create-run.qmd rename to get-started/install.qmd index d713ad54..5580a32f 100644 --- a/get-started/install-create-run.qmd +++ b/get-started/install.qmd @@ -1,12 +1,8 @@ --- -title: Install -aliases: - - install.html +title: Installation --- -## Install - -`shiny` can be installed via `pip` or `conda`. +Shiny for Python can be installed can be installed via `pip` or `conda`. ::: {.panel-tabset .panel-pills} @@ -18,13 +14,16 @@ Before installing you may want to upgrade `pip` and install `wheel`: pip install --upgrade pip wheel ``` + Next, install `shiny` from PyPI. ```bash pip install shiny ``` -You may on occasion need to force installation of updated versions of our packages, since they are in development. This can be done with: + +You may on occasion need to force installation of updated versions of our packages, since they are in development. +This can be done with: ```bash pip install --upgrade shiny htmltools @@ -33,13 +32,17 @@ pip install --upgrade shiny htmltools ::: {.callout-note collapse="true"} ##### Virtual environments -For production apps, we recommend using a virtual environment to manage your dependencies. In this case, you should install `shiny` in your virtual environment scoped to your app, rather than globally. For example, if you are creating an app in a directory called `myapp`, you would create a virtual environment in that directory and install `shiny` there: +For production apps, we recommend using a virtual environment to manage your dependencies. +In this case, you should install `shiny` in your virtual environment scoped to your app, rather than globally. +For example, if you are creating an app in a directory called `myapp`, you would create a virtual environment in that directory and install `shiny` there: ```bash mkdir myapp cd myapp + # Create a virtual environment in the .venv subdirectory python3 -m venv .venv + # Activate the virtual environment source .venv/bin/activate ``` @@ -50,6 +53,7 @@ source .venv/bin/activate If you want to install the development versions, you can do so with: + ```bash pip install https://github.com/posit-dev/py-htmltools/tarball/main pip install https://github.com/posit-dev/py-shiny/tarball/main @@ -59,46 +63,57 @@ pip install https://github.com/posit-dev/py-shiny/tarball/main #### conda -If you want to use a conda environment, feel free to create/activate one now: +You can install `shiny` from conda-forge channel. ```bash -# Create a conda environment named 'myenv' -conda create --name myenv - -# Activate the virtual environment -conda activate myenv +conda install -c conda-forge shiny ``` -Next, install `shiny` from conda-forge. +You may on occasion need to force installation of updated versions of our packages, since they are in development. +This can be done with: ```bash -conda install -c conda-forge shiny +conda update -c conda-forge shiny ``` -You may on occasion need to force installation of updated versions of our packages, since they are in development. This can be done with: +::: {.callout-note collapse="true"} +##### Conda Virtual environments + +For production apps, we recommend using a virtual environment to manage your dependencies. +Create a conda environment with the code below before installing the `shiny` package. ```bash -conda update -c conda-forge shiny +# Create a conda environment named 'shiny' +conda create --name shiny + +# Activate the virtual environment +conda activate shiny ``` +::: ::: -### Positron +## Positron {#positron} We recommend using [Positron](https://positron.posit.co/), a next-generation data science focused fork of Visual Studio Code. + If you already have VS Code installed, we still recommend giving Positron a try, your extensions from VS Code will not conflict with your Positron extensions. - Positron already ships with many Python-focused VS Code extensions from Open VSX, including Quarto, Jupyter Notebooks, and Pyright. + To get started with Shiny for Python, you will need to install the [Shiny Extension](https://open-vsx.org/extension/posit/shiny). +This provides, among other things, a play button in the top right corner of your editor that will run your Shiny app. -### Visual Studio Code +![](assets/positron-run.png) -We recommend installing the [Python][vscode-python] and [Shiny][vscode-shiny] extensions for [Visual Studio Code][vscode]. This provides, among other things, a play button in the top right corner of your editor that will run your Shiny app. +## Visual Studio Code + +For for [Visual Studio Code][vscode], +you will need the [Python][vscode-python] and [Shiny][vscode-shiny] extensions. If [type checking is important](https://john-tucker.medium.com/type-checking-python-306ad8339da1) to you, in addition to installing the [Python VSCode extension][vscode-python], you may want to do some additional configuration for a smooth experience with types in Shiny. See the tip below for more details. @@ -118,7 +133,7 @@ We recommend the following settings in your project's `.vscode/settings.json` fi or alternatively, if your project keeps these settings in `pyrightconfig.json`: -```default +```json { "typeCheckingMode": "basic", "reportUnusedFunction": "none", @@ -127,7 +142,7 @@ or alternatively, if your project keeps these settings in `pyrightconfig.json`: The `basic` type checking mode will flag many potential problems in your code, but it does require an understanding of type hints in Python. This is the mode that is used by the [Shinylive](https://shinylive.io) examples editor. If you want to make even greater use of type checking, you can use `strict` mode: -```default +```json "python.analysis.typeCheckingMode": "strict" ``` @@ -137,60 +152,14 @@ In the above configuration, we also disable the `reportUnusedFunction` diagnosti You can also modify these settings on a per-file basis with comments at the top of the file. For example, you might have something like this at the top of your `app.py`: -```default +```python # pyright: strict # pyright: reportUnusedFunction=false ``` A full list of configuration settings for Pyright/Pylance is available [here](https://github.com/microsoft/pyright/blob/main/docs/configuration.md). +::: [vscode]: https://code.visualstudio.com/ [vscode-shiny]: https://marketplace.visualstudio.com/items?itemName=posit.shiny [vscode-python]: https://marketplace.visualstudio.com/items?itemName=ms-python.python -::: - - -## Create - -The best way to create a new Shiny app is with the `shiny create` command line interface (CLI). This command asks you a series of questions about what kind of app you want to create, and then provides all the boilerplate code you need to get started with a working app. - -```bash -shiny create -``` - -![Running the shiny create command from a terminal](assets/shiny-create.mp4){class="img-shadow"} - -::: callout-tip -### Copy/paste examples - -If you find an example on this site that you want to run/edit locally, you can use `shiny create --template basic-app -m express` to get a basic app template, and then copy/paste the code from the example into the template. -::: - - -## Run - -Shiny apps can be launched from VSCode or the command line (via `shiny run`). - -### VS Code - -The best way to run (and develop) Shiny apps is in [Visual Studio Code][vscode] with the [Shiny extension][vscode-shiny]. When a Shiny `app.py` file is being edited, the default behavior of the Run button (circled in red in the screenshot below) becomes "Run Shiny App". - -![Visual Studio Code running with the Shiny extension](assets/vscode.png) - -This launches a Python process in a dedicated terminal instance, and a captive web browser. This lets you test your app without leaving your editor, and whenever you make changes to your app's source, the preview will update. To preview your app in a full browser, click the icon to the right of the URL bar to launch the app in an external browser. - -Next to the Run button is a dropdown menu that lets you "Debug Shiny App". This launches the app in debug mode, which lets you set breakpoints and step through your code. See the [debugging](debug.qmd) section for more information. - -### Command line - -To run a Shiny app from the command line, use the `shiny run` command. This command takes a single argument, the path to the app's entry point. For example, if your app's entry point is `app.py` in the directory `./app_dir`, you can run it like this: - -```bash -shiny run --reload --launch-browser app_dir/app.py -``` - -This should start your app and also automatically launch a web browser. - -The `--reload` flag means that file changes in the current directory tree will cause the Python process to restart and the browser to reload. Update and save changes to `app.py` and then wait a moment for the changes to appear in the browser. - -With these two `shiny` commands, you now have a project that you can run in your terminal. You can use any text editor or Python IDE to write Shiny apps, but we've taken special care to ensure a smooth workflow for [Visual Studio Code][vscode]. The next section will help you set up VS Code for Shiny for Python. diff --git a/get-started/shinylive.quarto_ipynb b/get-started/shinylive.quarto_ipynb new file mode 100644 index 00000000..8cbfec98 --- /dev/null +++ b/get-started/shinylive.quarto_ipynb @@ -0,0 +1,344 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "title: \"Shinylive: Shiny + WebAssembly\"\n", + "format: html\n", + "jupyter: python3\n", + "---\n", + "\n", + "\n", + "Shinylive allows you to run Shiny applications entirely in a web browser, without the need for a separate server running Python.\n", + "\n", + "The traditional way of deploying Shiny involves in a separate server and client: the server runs Python and Shiny, and clients connect via the web browser. Each client keeps an open websocket connection as long as they are using the application.\n", + "\n", + "![](shinylive-shiny-deployment-model.png){fig-alt=\"Traditional Shiny deployment\" width=500px}\n", + "\n", + "\n", + "When an application is deployed with Shinylive, Python and Shiny _run in the web browser_: the browser is effectively both the client and server for the application. There is a web server that serves files, but it does not run Python or Shiny---it can be a \"dumb\" static web server.\n", + "\n", + "![](shinylive-shinylive-deployment-model.png){fig-alt=\"Shinylive deployment\" width=500px}\n", + "\n", + "\n", + "If you've looked at any of the documentation on this web site, or have played with any of the [examples at shinylive.io](https://shinylive.io/py/examples/), you have already used Shinylive. The examples on this site (with a handful of exceptions) and the shinylive.io examples all run using Shinylive, meaning that they run in your web browser.\n", + "\n", + "This is all possible because of the magic of WebAssembly and Pyodide.\n", + "\n", + "* [WebAssembly (wasm)](https://webassembly.org/) is a binary format for compiled programs that can run in a web browser at near-native speeds.\n", + "* [Pyodide](https://pyodide.org/) is a port of Python and many packages, compiled to WebAssembly.\n", + "\n", + "\n", + "Applications deployed with Shinylive have some advantages and disadvantages compared to a traditional Shiny deployment. The advantages include:\n", + "\n", + "* No installation: No need to install Python or Shiny on a computer.\n", + "* Easy sharing: Share applications with just a URL.\n", + "* Easy deployment: Applications can be deployed to any static web hosting service.\n", + "* Easy scaling: Since applications can be served as static files on a \"dumb\" web server it is easy to scale to high traffic loads.\n", + "* Security: Because the code is not running on a server, it eliminates a class of potential security risks. The code runs in the client web browser's code sandbox, which a platform that has been battle tested over the years.\n", + "\n", + "Some of the disadvantages of using Shinylive deployments compared to traditional Shiny deployments:\n", + "\n", + "* Fewer packages: Not all Python packages are available in Pyodide.\n", + "* Large download size: The downloaded payload size may be significantly larger. Downloading Pyodide and Python packages to run a Shiny application requires about 13MB of data. Other packages can significantly increase the amount of data. For example, numpy is 7.5 MB, pandas is 13 MB, and matplotlib is 11.5 MB. However, all of this data will be cached by the browser so that it will load quickly in subsequent runs.\n", + "* No secrets: Code and data for the application must be sent to the browser, so it can't be kept secret from the user.\n", + "* Restricted network: For security reasons, the web browser itself imposes restrictions on network communication.\n", + "\n", + "For certain types of Shiny applications, some of the limitations can be worked around by pre-processing a data set and including it with the application.\n", + "\n", + "One important difference between traditional Shiny and Shinylive deployments is that compute power is shifted from the server to the client.\n", + "In many cases, the client browser will have more compute power than a server, especially since the compute power of the user's machine is not shared across multiple users.\n", + "However, in other cases, this can be a roadblock, such as when a powerful server is needed to perform very intensive computations or requires access to a private data store.\n", + "\n", + "\n", + "## Sharing and deploying Shinylive applications\n", + "\n", + "In this document, we'll use the terms _sharing_ and _deploying_ Shiny applications. When we talk about _sharing_, we're referring to a method of encoding the application in a URL so that others can run the application if they simply have the URL. Sharing an application via a URL does not require you to have a server---you can simply use the server at shinylive.io.\n", + "\n", + "When we talk about _deploying_ applications, we mean creating a set of files which are to be served up by a web server. This does require you to have a web server. For a traditional Shiny deployment, this means having a server that runs R or Python. For a Shinylive deployment, this only requires a server that can serve static files---it can be a \"dumb\" web server which does not run Python. For example you could deploy your application to [GitHub Pages](https://pages.github.com/) or [Netlify](https://www.netlify.com/).\n", + "\n", + "\n", + "### Sharing Shinylive applications\n", + "\n", + "The easiest way to share an application is to create it on the [Shinylive editor](https://shinylive.io/py/examples/), and then click on the \"Create share link\" button. This will encode the application in a URL, which you can then share with others.\n", + "\n", + "![](shinylive-share-button.png){fig-alt=\"Share button\" width=250px}\n", + "\n", + "The dialog box that appears will provide two links: one for the application in the Shinylive editor, and one with for the application running standalone.\n", + "\n", + "![](shinylive-share-modal.png){fig-alt=\"Share URLs\" width=700px}\n", + "\n", + "Here is an example of a Shiny application that is encoded in a share URL. This will lead to the application with an editor and Python console:\n", + "\n", + "[https://shinylive.io/py/editor/#code=NobwRAdghgtgpmAXGKAHVA6VBPMAa...](https://shinylive.io/py/editor/#code=NobwRAdghgtgpmAXGKAHVA6VBPMAaMAYwHsIAXOcpMAMwCdiYACAZwAsBLCbJjmVYnTJMAgujxMArhwA6EOWlQB9aUwC8UjligBzOEpoAbaQBMAFNIxsATGZlgAEhwlQIJpmTauA1iyY1BDzpsLh0mAGVObgBCewBKOLkFdHVRdDNFFWcmADlSOESIMABfAF0gA)\n", + "\n", + "If you want to share just the Shiny application, without the editor and console, use the other link, which contains `/app/` instead of `/editor/`:\n", + "\n", + "[https://shinylive.io/py/app/#code=NobwRAdghgtgpmAXGKAHVA6VBPMAa...](https://shinylive.io/py/app/#code=NobwRAdghgtgpmAXGKAHVA6VBPMAaMAYwHsIAXOcpMAMwCdiYACAZwAsBLCbJjmVYnTJMAgujxMArhwA6EOWlQB9aUwC8UjligBzOEpoAbaQBMAFNIxsATGZlgAEhwlQIJpmTauA1iyY1BDzpsLh0mAGVObgBCewBKOLkFdHVRdDNFFWcmADlSOESIMABfAF0gA)\n", + "\n", + "\n", + "These URLs have a hash that includes `#code=...`. The code for the entire application is encoded in that hash. Notably, web browsers do _not_ send the hash to the web server, so the server actually never sees the content of the Shiny application.\n", + "\n", + "The sharing dialog shows how long the URL is, in bytes. If you want to share a link on Twitter, the maximum length of a URL is about 4000 bytes, and it will be shortened using their t.co service. If you use [bit.ly](https://bit.ly/), the maximum length is about 2000 bytes. These link shorteners redirect the user to the longer URL.\n", + "\n", + "#### Sharing with gists\n", + "\n", + "Another way of sharing Shinylive applications is by using a GitHub gist. For example, the gist here:\n", + "\n", + "[https://gist.github.com/wch/e62218aa28bf26e785fc6cb99efe8efe](https://gist.github.com/wch/e62218aa28bf26e785fc6cb99efe8efe)\n", + "\n", + "Can be run with Shinylive here:\n", + "\n", + "* Editor: [https://shinylive.io/py/editor/#gist=e62218aa28bf26e785fc6cb99efe8efe](https://shinylive.io/py/editor/#gist=e62218aa28bf26e785fc6cb99efe8efe)\n", + "* App: [https://shinylive.io/py/app/#gist=e62218aa28bf26e785fc6cb99efe8efe](https://shinylive.io/py/app/#gist=e62218aa28bf26e785fc6cb99efe8efe)\n", + "\n", + "Notice that the `#gist=...` part of the URL simply uses the ID of the gist.\n", + "\n", + "To create a gist, you can go to [gist.github.com/](https://gist.github.com/), or you can use GitHub's [`gh`](https://cli.github.com/) command-line tool to create a gist from files on disk. To do that, first install `gh`, then use [`gh gist create`](https://cli.github.com/manual/gh_gist_create):\n", + "\n", + "```bash\n", + "gh gist create --public app.py\n", + "```\n", + "\n", + "Sharing via gists has some important differences from sharing via encoded-app URL. If you use a gist, you can modify the gist, and the sharing URL will stay the same. If you are sharing an encoded-app URL, the URL itself contains the application code, so if you want modify the code, you will have to generate a new URL and share that.\n", + "\n", + "Sharing via GitHub gist may not be appropriate for all use cases, because the GitHub API has rate limits: for a given IP address, the GitHub API allows 60 requests per hour. So an end user would only be able to load Shinylive applications 60 times in an hour. And if there are many users behind a single IP address with network address translation, they collectively would have a limit of 60 requests per hour.\n", + "\n", + "If you are using GitHub gist for sharing, you can see your remaining requests at [https://api.github.com/rate_limit](https://api.github.com/rate_limit).\n", + "\n", + ":::{.callout-note}\n", + "The GitHub API has a much higher rate limit if the end user is authenticated, but Shinylive currently does not support authenticating with GitHub.\n", + ":::\n", + "\n", + "\n", + "### Deploying Shinylive applications\n", + "\n", + "#### With Quarto websites\n", + "\n", + "::: {.callout-note}\n", + "The section below describes how to embed Shinylive applications in a Quarto document -- they can be thought of as Shiny applets in that mode. As of November 2023, the pre-release version of Quarto can work in a different mode: it can generate dashboards where the entire page is a single Shiny application. See [this repository](https://github.com/wch/retirement-simulation-dashboard/) for an example and more information about how they work and how to deploy them. This page will be updated soon with more information about this mode.\n", + ":::\n", + "\n", + "The easiest way to deploy Shinylive applications is using the [quarto-shinylive](https://github.com/quarto-ext/shinylive) extension.\n", + "This extension allows you to embed Shiny apps into a quarto html document, and deploy those applications anywhere that can host quarto websites.\n", + "Once you have the extension installed, you can insert `shinylive-python` code blocks into the document.\n", + "\n", + "```{{shinylive-python}}\n", + "#| standalone: true\n", + "\n", + "from shiny import *\n", + "\n", + "app_ui = ui.page_fluid(\n", + " ui.input_slider(\"n\", \"N\", 0, 100, 40),\n", + " ui.output_text_verbatim(\"txt\"),\n", + ")\n", + "\n", + "def server(input, output, session):\n", + " @output\n", + " @render.text\n", + " def txt():\n", + " return f\"The value of n*2 is {input.n() * 2}\"\n", + "\n", + "app = App(app_ui, server)\n", + "```\n", + "\n", + "#### Without Quarto\n", + "\n", + "If you're not using Quarto, you'll need to export and deploy your application yourself.\n", + "This involves:\n", + "\n", + "* **Exporting** the application: Create a directory of files that includes the Shinylive distribution and the application code.\n", + "* **Deploying**: Upload that directory to a static web host.\n", + "\n", + "\n", + "There are many ways to deploy to a static web server. For example, you could deploy to Netlify or GitHub Pages, or use Posit Connect, as described later in this page.\n", + "\n", + "First, install the shinylive package:\n", + "\n", + "```bash\n", + "pip install shinylive\n", + "```\n", + "\n", + "Next, create a directory with a Shiny application. We'll use the `shiny create` command to create a basic application in a directory called `myapp/`.\n", + "\n", + "```bash\n", + "shiny create --dir myapp\n", + "```\n", + "\n", + "Pick a Shiny app template to create in the `myapp` directory.\n", + "Next, create the distribution with shinylive:\n", + "\n", + "```bash\n", + "shinylive export myapp site\n", + "```\n", + "\n", + "The resulting `site` directory will contain the following files (among others that are not shown for brevity):\n", + "\n", + "```default\n", + "site\n", + "├── app.json # The application's files serialized to JSON\n", + "├── index.html # A web page for the application\n", + "├── edit\n", + "│   └── index.html # A web page for an editor view of the application\n", + "├── shinylive-sw.js # Shinylive service worker\n", + "└── shinylive # Shinylive content\n", + "    └── pyodide # Pyodide files\n", + "```\n", + "\n", + "This directory can now be deployed to a static web hosting service.\n", + "\n", + "You can preview the application by serving the files in the `site` directory:\n", + "\n", + "```bash\n", + "python3 -m http.server --directory site 8008\n", + "```\n", + "\n", + "This will serve the files in the `site` directory on port 8008. Then point your browser at http://localhost:8008/. You can also see the application with an online editor by pointing your browser at http://localhost:8008/edit/. (Note that any changes to the files there are ephemeral---they won't be saved to disk.)\n", + "\n", + ":::{.callout-note}\n", + "To run a Shinylive application, the files must be served with a web server; simply pointing your browser to the files on disk will not work. This is because security restrictions in web browsers require some assets to be retrieved from a web server instead of from disk.\n", + ":::\n", + "\n", + "If you have multiple applications, you may want to export them in subdirectories of the site, so that they can all share the same Shinylive assets. You can do this with the `--subdir` option:\n", + "\n", + "```bash\n", + "shinylive export myapp1 site --subdir app1\n", + "shinylive export myapp2 site --subdir app2\n", + "```\n", + "\n", + "The `site/shinylive/pyodide/` directory will contain a Pyodide distribution containing just the Python packages needed to run the exported application(s). There are some cases where you may want to include other packages. For example, if you want users who visit the `edit/` URL to be able to load more packages. In order to include extra packages, you have two options:\n", + "\n", + "* Add a `requirements.txt` file to an application which lists the extra packages.\n", + "* Run `shinylive export myapp site --full-shinylive`. This will cause it to include all of the Python packages from the Shinylive distribution.\n", + "\n", + "\n", + ":::{.callout-note}\n", + "The Shinylive distribution is under rapid development, and the files in the distribution will change. The `shinylive export` command automatically downloads and caches a a copy of the Shinylive distribution on your computer. To make sure you are up to date, run:\n", + "\n", + "```bash\n", + "pip install shinylive --upgrade\n", + "shinylive assets remove # Remove old cached shinylive files\n", + "```\n", + "Then the next time you run `shinylive export`, it will download the latest version.\n", + ":::\n", + "\n", + "\n", + "#### Deploying to Posit Connect\n", + "\n", + "After creating the directory with the application and Shinylive bundle, you can deploy it to many different of static web hosting services.\n", + "Posit Connect is one of those options, and allows you to control over who can access the application.\n", + "\n", + "If you would like to deploy to a Posit Connect server, install and configure the `rsconnect-python` package as described in the [Deploy](deploy-on-prem.qmd) page.\n", + "Then you can deploy the application as a static website:\n", + "\n", + "```bash\n", + "rsconnect deploy html site\n", + "```\n", + "\n", + "\n", + "## Python packages\n", + "\n", + "The Shinylive distribution is built on Pyodide, and contains a number of additional packages on top of the standard Pyodide distribution.\n", + "\n", + "It is also possible to use other Python packages, provided that they are packaged as wheels, and contain no compiled code. Additionally, they must not use features that aren't available in Pyodide. For example, if a package has code that uses `urllib.request`, it won't work in Pyodide.\n", + "\n", + "### Installed packages\n" + ], + "id": "9746e076" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "#| echo: false\n", + "\n", + "import shinylive._deps\n", + "from IPython.display import Markdown\n", + "from tabulate import tabulate\n", + "\n", + "repodata = shinylive._deps._pyodide_lock_data()\n", + "info = repodata[\"info\"]\n", + "packages = repodata[\"packages\"]" + ], + "id": "35831a44", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Shinylive distribution includes packages from Pyodide `{python} info[\"version\"]`, as well as some additional Shiny-related packages. See [this page](https://pyodide.org/en/`{python} info[\"version\"]`/usage/packages-in-pyodide.html) for a list of packages included in Pyodide.\n", + "\n", + "Shinylive includes the following packages. Most are part of the Pyodide distribution, and a few of them are added by Shinylive.\n" + ], + "id": "eb836daf" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "#| echo: false\n", + "\n", + "packages = dict(sorted(packages.items()))\n", + "packages = {name: (info[\"name\"], info[\"version\"]) for name, info in packages.items()}\n", + "package_table = [info for name, info in packages.items()]\n", + "\n", + "# Todo: add table-sm and table-striped classes\n", + "Markdown(tabulate(\n", + " package_table,\n", + " headers=[\"Package\", \"Version\"],\n", + "))" + ], + "id": "bf3431ca", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing whether a package is available\n", + "\n", + "The Shinylive distribution includes many packages, but you may want to use one that is not included.\n", + "\n", + "It is possible to install packages using Pyodide's `micropip` package. To do that, simply visit the [Shinylive examples page](https://shinylive.io/py/examples/) and run the following in the Python console:\n", + "\n", + "```default\n", + "import micropip\n", + "await micropip.install(\"mypackage\")\n", + "import mypackage\n", + "```\n", + "\n", + "If that works without errors, then your package is usable in a Shinylive application. (There are some exceptions, where a package will load but not be fully usable in Pyodide.)\n", + "\n", + "The `micropip.install` command will install the package from PyPI by default. However, you can provide a URL that points directly to your package, like `https://example.com/mypackage-1.0-py3-none-any.whl`.\n", + "\n", + "\n", + "### Requiring extra packages with `requirements.txt`\n", + "\n", + "To use extra packages as part of your application, you can add a `requirements.txt` file to your application, as demonstrated in the [extra packages example](https://shinylive.io/py/examples/#extra-packages). The format of the requirements.txt file is similar to a \"normal\" requirements.txt file. For example, it could look like this:\n", + "\n", + "```default\n", + "isodate\n", + "attrs==21.4.0\n", + "```\n", + "\n", + "Each time someone runs your Shiny application, their web browser will fetch those packages from PyPI. It will then install the packages to a virtual file system (VFS); when the user closes the page or navigates away from it, the VFS is discarded. If the user goes back and runs the application again, those files can be fetched from the browser cache instead of from PyPI." + ], + "id": "2c998b0a" + } + ], + "metadata": { + "kernelspec": { + "name": "python3", + "language": "python", + "display_name": "Python 3 (ipykernel)", + "path": "/Users/danielchen/.pyenv/versions/3.12.6/share/jupyter/kernels/python3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/get-started/welcome.qmd b/get-started/welcome.qmd new file mode 100644 index 00000000..d47a0509 --- /dev/null +++ b/get-started/welcome.qmd @@ -0,0 +1,65 @@ +--- +title: "Welcome to Shiny" +editor: + markdown: + wrap: sentence +--- + +Shiny for Python is a powerful and beginner-friendly framework for building interactive web applications and dashboards, all in pure Python. +Whether you’re a data scientist, analyst, or developer, Shiny makes it easy to create rich, interactive experiences without needing to learn JavaScript or front-end frameworks. + +## Batteries included: everything you need to build a dashboard {#batteries-included} + +Shiny for Python comes fully equipped with everything you need to build a dashboard right out of the box. +It includes a rich set of [input and output components](/components) so you can quickly build interactive applications without worrying about external dependencies. +Layout options let you organize your UI efficiently, while built-in theming (including dark mode) ensures your app looks great with minimal effort. +You can even use a [brand.yml](https://posit-dev.github.io/brand-yml/) file to apply consistent branding, colors, and logos across your application. + +## Reactivity: the secret to seamless interactivity {#reactivity} + +At the heart of Shiny is [reactivity](../docs/reactive-foundations.qmd), a system that automatically updates outputs when inputs change. +Unlike traditional web apps, where you need to manually handle state and data updates with callbacks, Shiny’s reactive engine keeps everything in sync effortlessly. +For example, when a user interacts with a slider or selects a filter, reactivity figures out the **minimum** amount of calculations to update the outputs without requiring you to write complex event-handling code. +This makes Shiny ideal for fast data-driven applications, enabling live updates for charts, tables, and reports with minimal effort, +and gives you the confidence that results are accurately rendered. + +## Templates: Get started quickly {#templates} + +To help you hit the ground running, Shiny provides starter [templates](/templates/) for common use cases, such as data dashboards, applications, streaming updates, data entry. + +The `shiny create` command walks you through a series of prompts to help you get started quickly with a helpful example. +You can use this command to load up a basic dashboard: + +```bash +shiny create --template dashboard +``` + +![The resulting dashboard generated by the dashboard template](assets/dashboard-template.png){class="img-shadow"} + +## Extensibility: Customize and Expand as Needed {#extensible} + +While Shiny includes everything you need to build an app, is built on a foundation of web standards, making it highly extensible. +If you need a custom component or user interface, you can incrementally integrate JavaScript, HTML, or even WebAssembly without having to learn complicated build tooling and frameworks. + +The UI components themselves are built on a Python representation of HTML/CSS/JavaScript, which you can see by printing them in a Python REPL: + +```python +>>> from shiny import ui +>>> ui.input_action_button("btn", "Button") + +``` + +If you're versed in web programming, you can also use Shiny to create [custom components](../docs/custom-component-one-off.qmd) that leverage your favorite JavaScript framework from Python. + +## Why choose Shiny for Python? + +Why Choose Shiny for Python? + +- 🐍 No JavaScript required – Build full-featured interactive apps in pure Python. +- ⚡ Fast iteration – The reactive model allows quick and dynamic updates. +- 🎨 Built-in theming and layout – Make beautiful dashboards effortlessly. +- 🚀 Scalability and extensibility – Start simple, grow as needed. + +Shiny for Python empowers you to bring your data to life with interactive applications that are easy to build, customize, and share. + +Ready to give it a try? diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd index e6f94743..1e8f9fa5 100644 --- a/tutorials/intro-express/1-welcome.qmd +++ b/tutorials/intro-express/1-welcome.qmd @@ -84,7 +84,7 @@ This will run the application on port `55901` and automatically reload and updat 3. Congratulations, you made your first shiny for python application! ::: column-margin -![](img/010-run_app.png) +![](img/010-run_app-cropped_editor.png.png) ::: :::: diff --git a/tutorials/intro-express/4-external.quarto_ipynb b/tutorials/intro-express/4-external.quarto_ipynb new file mode 100644 index 00000000..96ef7a3f --- /dev/null +++ b/tutorials/intro-express/4-external.quarto_ipynb @@ -0,0 +1,314 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "title: External Resources\n", + "---\n", + "\n", + "\n", + "It's good to keep the UI and code logic separate.\n", + "Since we have an outline of the application UI,\n", + "let's make sure we can get all the logic working for the code.\n", + "\n", + "Let's take a look at the application we're planning to make and make sure we\n", + "can code up all the individual parts first.\n", + "\n", + "![](../../docs/assets/tipping-dashboard.png)\n", + "\n", + "From the dashboard sketch we need to make the following outputs\n", + "\n", + "1. Load the tips data that can be filtered byt the bill amount and food service time\n", + "2. Display the tips data after filtering\n", + "3. Calculate the total number of tippers (i.e., number of rows after filtering)\n", + "4. Calculate average tip percentage after filtering\n", + "5. Calculate average bill after filtering\n", + "6. [Plotly scatterplot](https://plotly.com/python/line-and-scatter/)\n", + " comparing `tip` vs `total_bill` of the filtered data\n", + "7. [ridgeplot](https://ridgeplot.readthedocs.io/en/stable/)\n", + " comparing days of the week vs tip percentages of the filtered data\n", + "\n", + "Now that we can lay out components and have the output components react to the input components,\n", + "let's see how we can incorporate modules, packages, and external data into our application.\n", + "\n", + "Before we start, make sure you have pandas, plotly, and ridgeplot installed.\n", + "If you are following along this tutorial from the beginning,\n", + "make sure you are in the proper virtual environment\n", + "\n", + "::: {.panel-tabset}\n", + "\n", + "## pip\n", + "\n", + "```bash\n", + "pip install pandas plotly ridgeplot\n", + "```\n", + "\n", + "## conda\n", + "\n", + "```bash\n", + "conda install -c conda-forge pandas plotly\n", + "pip install ridgeplot\n", + "```\n", + "\n", + "## mamba\n", + "\n", + "```bash\n", + "mamba install install -c conda-forge pandas plotly\n", + "pip install ridgeplot\n", + "```\n", + "\n", + ":::\n", + "\n", + "\n", + "## External Data\n", + "\n", + "External data can be read into a Shiny for Python just like any other\n", + "python data science project, e.g., pandas, polars, ibis, eager, duckdb, etc.\n", + "\n", + ":::{.callout-note}\n", + "You can use the Python `narwhals` library to convert between\n", + "different dataframe backends.\n", + "\n", + "\n", + ":::\n", + "\n", + "For example, if we wanted to read in data from the `tips.csv` file in pandas,\n", + "we can use the same code in our shiny for python application.\n" + ], + "id": "7f9cb307" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "#| include: false\n", + "\n", + "import pandas as pd\n", + "\n", + "try:\n", + " tips = pd.read_csv(\"tips.csv\")\n", + "except FileNotFoundError:\n", + " tips = pd.read_csv(\"tutorials/intro-express/tips.csv\")" + ], + "id": "4e4d9bd6", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "import pandas as pd\n", + "\n", + "tips = pd.read_csv(\"tips.csv\")\n", + "```\n", + "\n", + "Next, let's create a few variables to serve as placeholders for the input components:\n" + ], + "id": "3c84c3b8" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "total_lower = tips.total_bill.min()\n", + "total_upper = tips.total_bill.max()\n", + "time_selected = tips.time.unique().tolist()" + ], + "id": "69757743", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And a placeholder for the filtered tips dataframe:\n" + ], + "id": "ad67bf6d" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "idx1 = tips.total_bill.between(\n", + " left=total_lower,\n", + " right=total_upper,\n", + " inclusive=\"both\",\n", + ")\n", + "\n", + "idx2 = tips.time.isin(time_selected)\n", + "\n", + "tips_filtered = tips[idx1 & idx2]" + ], + "id": "97d5101d", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have a placeholder for the filtered dataframe,\n", + "we can write the code for the other components of the application.\n" + ], + "id": "725aac84" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tips_filtered.head()" + ], + "id": "76e30ca9", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Individual values\n", + "\n", + "Now, let's calculate the individual numbers that are showed in the value boxes.\n" + ], + "id": "7b502085" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# total tippers\n", + "total_tippers = tips_filtered.shape[0]\n", + "total_tippers" + ], + "id": "a25ff9fd", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# average tip\n", + "perc = tips_filtered.tip / tips_filtered.total_bill\n", + "average_tip = f\"{perc.mean():.1%}\"\n", + "average_tip" + ], + "id": "74b10c7b", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# average bill\n", + "bill = tips_filtered.total_bill.mean()\n", + "average_bill = f\"${bill:.2f}\"\n", + "average_bill" + ], + "id": "da8bdf28", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plots\n", + "\n", + "We now need to create 2 figures, a scatterplot and a ridgeplot.\n", + "\n", + "The scatterplot will use the `plotly` library\n" + ], + "id": "05e2fc36" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "import plotly.express as px\n", + "\n", + "px.scatter(\n", + " tips_filtered,\n", + " x=\"total_bill\",\n", + " y=\"tip\",\n", + " trendline=\"lowess\"\n", + ")" + ], + "id": "5f52cf0d", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ridgeplot will use the `ridgeplot` library\n" + ], + "id": "39a291a9" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "from ridgeplot import ridgeplot\n", + "\n", + "tips_filtered[\"percent\"] = tips_filtered.tip / tips_filtered.total_bill\n", + "\n", + "uvals = tips_filtered.day.unique()\n", + "samples = [[tips_filtered.percent[tips_filtered.day == val]] for val in uvals]\n", + "\n", + "plt = ridgeplot(\n", + " samples=samples,\n", + " labels=uvals,\n", + " bandwidth=0.01,\n", + " colorscale=\"viridis\",\n", + " colormode=\"row-index\"\n", + ")\n", + "\n", + "plt.update_layout(\n", + " legend=dict(\n", + " orientation=\"h\",\n", + " yanchor=\"bottom\",\n", + " y=1.02,\n", + " xanchor=\"center\",\n", + " x=0.5\n", + " )\n", + ")\n", + "\n", + "plt" + ], + "id": "7c1e3637", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "Now we have the working code for all the parts of our application.\n", + "Next we will add these outputs to the application\n", + "and then link the input components to our placeholder variables\n", + "to filtered the data." + ], + "id": "0b68a24b" + } + ], + "metadata": { + "kernelspec": { + "name": "pfe_book", + "language": "python", + "display_name": "pfe_book", + "path": "/Users/danielchen/Library/Jupyter/kernels/pfe_book" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/tutorials/intro-express/6-reactivity.quarto_ipynb b/tutorials/intro-express/6-reactivity.quarto_ipynb new file mode 100644 index 00000000..d7fc1b83 --- /dev/null +++ b/tutorials/intro-express/6-reactivity.quarto_ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "title: Reactivity\n", + "---\n", + "\n", + "\n", + "We've been using the term \"reactive\" a lot during these tutorials.\n", + "But what does it mean?\n", + "It's actually more than \"user interacts with input and new value gets calculated\".\n", + "Reactivity is actually what makes Shiny special:\n", + "when an input changes, only the minimum amount of calculations are made to update the outputs.\n", + "This makes shiny very efficient.\n", + "\n", + "Shiny knows to re-execute **reactive functions** (e.g., `render` functions) when their **reactive dependencies** (e.g., `input`) change.\n", + "There are other main forms of reactive functions and dependencies:\n", + "\n", + "* Calculations with `@reactive.calc`\n", + " * Write your reactive calculation once, then call it as needed.\n", + "* Side effects with `@reactive.effect`\n", + " * Effects are similar to `@render.*` functions, but they don't return anything. They're used for their side-effects (e.g., writing to a database, sending an email, etc.)\n", + "* Reactive values with `reactive.value`\n", + " * Create `input`-like values that aren't tied to input controls and can be updated. They're often used to maintain state in an app.\n", + "\n", + "In this lesson we'll focus on the `@reactive.calc`, let's see why we may want reactive calculations.\n", + "\n", + "\n", + "```{mermaid}\n", + "flowchart LR\n", + " A[Input] --> B(Calculated from Input)\n", + " B --> C{Value calculated from the input calc}\n", + " B --> D[Another value calculated from the input calc]\n", + "```\n", + "\n", + "\n", + "Let's say we have an input (A),\n", + "this input creates a value in the application (B).\n", + "But what if another part of the application needs to use this calculated value (C)\n", + "or another part (D)?\n", + "\n", + "Similar to why we create variables in python to capture intermediate values,\n", + "we can save these intermediate \"reactive\" calculations in shiny.\n", + "\n", + "\n", + "```{shinylive-python}\n", + "#| standalone: true\n", + "#| components: [editor, viewer]\n", + "#| layout: vertical\n", + "#| viewerHeight: 200\n", + "\n", + "from shiny import reactive\n", + "from shiny.express import input, render, ui\n", + "\n", + "ui.input_slider(\"x\", \"Slider value\", min=0, max=100, value=10)\n", + "\n", + "# we need to make a calculation from an input value\n", + "@render.text\n", + "def x_squared_text():\n", + " return f\"Squared value: {input.x() ** 2}\"\n", + "\n", + "# we can save this calculation to be used later\n", + "@reactive.calc\n", + "def x_squared():\n", + " return input.x() ** 2\n", + "\n", + "# we can use that saved calculation\n", + "@render.text\n", + "def x_squared_calc_text():\n", + " return f\"Saved squared: {x_squared()}\"\n", + "\n", + "# we can build on top of that saved calculation\n", + "@render.text\n", + "def x_squared_half_calc_text():\n", + " return f\"Build on squared value: {x_squared() / 2}\"\n", + "\n", + "# we don't need to re-calculate everything from the input again\n", + "@render.text\n", + "def x_squared_half_text():\n", + " return f\"Recalculate from input: {input.x() ** 2 / 2}\"\n", + "```\n", + "\n", + "The app above shows that we only need to make the `input.x() ** 2` calculation **once**,\n", + "so we do not need to repeat that calculation, `input.x() ** 2 / 2`.\n", + "\n", + "This idea is really similar to the following Python code,\n", + "where we save an intermediate value,\n", + "instead of repeating a calculation.\n" + ], + "id": "d17d93f0" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "initial_input_value = 3\n", + "\n", + "initial_squared = initial_input_value ** 2\n", + "\n", + "initial_squared_half = initial_squared / 2" + ], + "id": "c5c2e4fb", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we did not save the `initial_squared` intermediate value,\n", + "we would have to re-make that calculation when doing a square and half.\n" + ], + "id": "dfad6d5f" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "initial_squared_half = initial_input_value ** 2 / 2" + ], + "id": "a7eedb91", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Currently our application is re-filtering the data from the input components\n", + "for each output component displayed in the application.\n", + "\n", + "\n", + "```{mermaid}\n", + "flowchart LR\n", + " A[Input Slider] --> C(Filtered Data)\n", + " B[Input Checkboxes] --> C\n", + " C --> D{value box 1}\n", + "\n", + " E[Input Slider] --> G(Filtered Data)\n", + " F[Input Checkboxes] --> G\n", + " G --> H{value box 2}\n", + "\n", + " I[Input Slider] --> K(Filtered Data)\n", + " J[Input Checkboxes] --> K\n", + " K --> L{value box 3}\n", + "\n", + " M[Input Slider] --> O(Filtered Data)\n", + " N[Input Checkboxes] --> O\n", + " O --> P{dataframe display}\n", + "\n", + " Q[Input Slider] --> S(Filtered Data)\n", + " R[Input Checkboxes] --> S\n", + " S --> T{scatter plot}\n", + "\n", + " U[Input Slider] --> W(Filtered Data)\n", + " V[Input Checkboxes] --> W\n", + " W --> X{ridgeplot}\n", + "```\n", + "\n", + "\n", + "It would be great if we calculated the filtered data **once**\n", + "and re-used it across all our output components.\n", + "\n", + "```{mermaid}\n", + "flowchart LR\n", + " A[Input Slider] --> C(Filtered Data)\n", + " B[Input Checkboxes] --> C\n", + " C --> D{value box 1}\n", + " C --> E{value box 2}\n", + " C --> F{value box 3}\n", + " C --> G{dataframe display}\n", + " C --> H{scatter plot}\n", + " C --> I{ridgeplot}\n", + "```" + ], + "id": "27068e29" + } + ], + "metadata": { + "kernelspec": { + "name": "pfe_book", + "language": "python", + "display_name": "pfe_book", + "path": "/Users/danielchen/Library/Jupyter/kernels/pfe_book" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/tutorials/intro-express/img/010-run_app-cropped_editor.png b/tutorials/intro-express/img/010-run_app-cropped_editor.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad7ef1d3e57aef7ae25d17377b645107da1bbc8 GIT binary patch literal 41149 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 jMEZyZ;ERZe3

%8Skj>M^q3( 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�R@M6HAH4hd)9jDF+h! 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 literal 0 HcmV?d00001 diff --git a/tutorials/intro-express/tips.csv b/tutorials/intro-express/tips.csv new file mode 100644 index 00000000..856a65a6 --- /dev/null +++ b/tutorials/intro-express/tips.csv @@ -0,0 +1,245 @@ +total_bill,tip,sex,smoker,day,time,size +16.99,1.01,Female,No,Sun,Dinner,2 +10.34,1.66,Male,No,Sun,Dinner,3 +21.01,3.5,Male,No,Sun,Dinner,3 +23.68,3.31,Male,No,Sun,Dinner,2 +24.59,3.61,Female,No,Sun,Dinner,4 +25.29,4.71,Male,No,Sun,Dinner,4 +8.77,2.0,Male,No,Sun,Dinner,2 +26.88,3.12,Male,No,Sun,Dinner,4 +15.04,1.96,Male,No,Sun,Dinner,2 +14.78,3.23,Male,No,Sun,Dinner,2 +10.27,1.71,Male,No,Sun,Dinner,2 +35.26,5.0,Female,No,Sun,Dinner,4 +15.42,1.57,Male,No,Sun,Dinner,2 +18.43,3.0,Male,No,Sun,Dinner,4 +14.83,3.02,Female,No,Sun,Dinner,2 +21.58,3.92,Male,No,Sun,Dinner,2 +10.33,1.67,Female,No,Sun,Dinner,3 +16.29,3.71,Male,No,Sun,Dinner,3 +16.97,3.5,Female,No,Sun,Dinner,3 +20.65,3.35,Male,No,Sat,Dinner,3 +17.92,4.08,Male,No,Sat,Dinner,2 +20.29,2.75,Female,No,Sat,Dinner,2 +15.77,2.23,Female,No,Sat,Dinner,2 +39.42,7.58,Male,No,Sat,Dinner,4 +19.82,3.18,Male,No,Sat,Dinner,2 +17.81,2.34,Male,No,Sat,Dinner,4 +13.37,2.0,Male,No,Sat,Dinner,2 +12.69,2.0,Male,No,Sat,Dinner,2 +21.7,4.3,Male,No,Sat,Dinner,2 +19.65,3.0,Female,No,Sat,Dinner,2 +9.55,1.45,Male,No,Sat,Dinner,2 +18.35,2.5,Male,No,Sat,Dinner,4 +15.06,3.0,Female,No,Sat,Dinner,2 +20.69,2.45,Female,No,Sat,Dinner,4 +17.78,3.27,Male,No,Sat,Dinner,2 +24.06,3.6,Male,No,Sat,Dinner,3 +16.31,2.0,Male,No,Sat,Dinner,3 +16.93,3.07,Female,No,Sat,Dinner,3 +18.69,2.31,Male,No,Sat,Dinner,3 +31.27,5.0,Male,No,Sat,Dinner,3 +16.04,2.24,Male,No,Sat,Dinner,3 +17.46,2.54,Male,No,Sun,Dinner,2 +13.94,3.06,Male,No,Sun,Dinner,2 +9.68,1.32,Male,No,Sun,Dinner,2 +30.4,5.6,Male,No,Sun,Dinner,4 +18.29,3.0,Male,No,Sun,Dinner,2 +22.23,5.0,Male,No,Sun,Dinner,2 +32.4,6.0,Male,No,Sun,Dinner,4 +28.55,2.05,Male,No,Sun,Dinner,3 +18.04,3.0,Male,No,Sun,Dinner,2 +12.54,2.5,Male,No,Sun,Dinner,2 +10.29,2.6,Female,No,Sun,Dinner,2 +34.81,5.2,Female,No,Sun,Dinner,4 +9.94,1.56,Male,No,Sun,Dinner,2 +25.56,4.34,Male,No,Sun,Dinner,4 +19.49,3.51,Male,No,Sun,Dinner,2 +38.01,3.0,Male,Yes,Sat,Dinner,4 +26.41,1.5,Female,No,Sat,Dinner,2 +11.24,1.76,Male,Yes,Sat,Dinner,2 +48.27,6.73,Male,No,Sat,Dinner,4 +20.29,3.21,Male,Yes,Sat,Dinner,2 +13.81,2.0,Male,Yes,Sat,Dinner,2 +11.02,1.98,Male,Yes,Sat,Dinner,2 +18.29,3.76,Male,Yes,Sat,Dinner,4 +17.59,2.64,Male,No,Sat,Dinner,3 +20.08,3.15,Male,No,Sat,Dinner,3 +16.45,2.47,Female,No,Sat,Dinner,2 +3.07,1.0,Female,Yes,Sat,Dinner,1 +20.23,2.01,Male,No,Sat,Dinner,2 +15.01,2.09,Male,Yes,Sat,Dinner,2 +12.02,1.97,Male,No,Sat,Dinner,2 +17.07,3.0,Female,No,Sat,Dinner,3 +26.86,3.14,Female,Yes,Sat,Dinner,2 +25.28,5.0,Female,Yes,Sat,Dinner,2 +14.73,2.2,Female,No,Sat,Dinner,2 +10.51,1.25,Male,No,Sat,Dinner,2 +17.92,3.08,Male,Yes,Sat,Dinner,2 +27.2,4.0,Male,No,Thur,Lunch,4 +22.76,3.0,Male,No,Thur,Lunch,2 +17.29,2.71,Male,No,Thur,Lunch,2 +19.44,3.0,Male,Yes,Thur,Lunch,2 +16.66,3.4,Male,No,Thur,Lunch,2 +10.07,1.83,Female,No,Thur,Lunch,1 +32.68,5.0,Male,Yes,Thur,Lunch,2 +15.98,2.03,Male,No,Thur,Lunch,2 +34.83,5.17,Female,No,Thur,Lunch,4 +13.03,2.0,Male,No,Thur,Lunch,2 +18.28,4.0,Male,No,Thur,Lunch,2 +24.71,5.85,Male,No,Thur,Lunch,2 +21.16,3.0,Male,No,Thur,Lunch,2 +28.97,3.0,Male,Yes,Fri,Dinner,2 +22.49,3.5,Male,No,Fri,Dinner,2 +5.75,1.0,Female,Yes,Fri,Dinner,2 +16.32,4.3,Female,Yes,Fri,Dinner,2 +22.75,3.25,Female,No,Fri,Dinner,2 +40.17,4.73,Male,Yes,Fri,Dinner,4 +27.28,4.0,Male,Yes,Fri,Dinner,2 +12.03,1.5,Male,Yes,Fri,Dinner,2 +21.01,3.0,Male,Yes,Fri,Dinner,2 +12.46,1.5,Male,No,Fri,Dinner,2 +11.35,2.5,Female,Yes,Fri,Dinner,2 +15.38,3.0,Female,Yes,Fri,Dinner,2 +44.3,2.5,Female,Yes,Sat,Dinner,3 +22.42,3.48,Female,Yes,Sat,Dinner,2 +20.92,4.08,Female,No,Sat,Dinner,2 +15.36,1.64,Male,Yes,Sat,Dinner,2 +20.49,4.06,Male,Yes,Sat,Dinner,2 +25.21,4.29,Male,Yes,Sat,Dinner,2 +18.24,3.76,Male,No,Sat,Dinner,2 +14.31,4.0,Female,Yes,Sat,Dinner,2 +14.0,3.0,Male,No,Sat,Dinner,2 +7.25,1.0,Female,No,Sat,Dinner,1 +38.07,4.0,Male,No,Sun,Dinner,3 +23.95,2.55,Male,No,Sun,Dinner,2 +25.71,4.0,Female,No,Sun,Dinner,3 +17.31,3.5,Female,No,Sun,Dinner,2 +29.93,5.07,Male,No,Sun,Dinner,4 +10.65,1.5,Female,No,Thur,Lunch,2 +12.43,1.8,Female,No,Thur,Lunch,2 +24.08,2.92,Female,No,Thur,Lunch,4 +11.69,2.31,Male,No,Thur,Lunch,2 +13.42,1.68,Female,No,Thur,Lunch,2 +14.26,2.5,Male,No,Thur,Lunch,2 +15.95,2.0,Male,No,Thur,Lunch,2 +12.48,2.52,Female,No,Thur,Lunch,2 +29.8,4.2,Female,No,Thur,Lunch,6 +8.52,1.48,Male,No,Thur,Lunch,2 +14.52,2.0,Female,No,Thur,Lunch,2 +11.38,2.0,Female,No,Thur,Lunch,2 +22.82,2.18,Male,No,Thur,Lunch,3 +19.08,1.5,Male,No,Thur,Lunch,2 +20.27,2.83,Female,No,Thur,Lunch,2 +11.17,1.5,Female,No,Thur,Lunch,2 +12.26,2.0,Female,No,Thur,Lunch,2 +18.26,3.25,Female,No,Thur,Lunch,2 +8.51,1.25,Female,No,Thur,Lunch,2 +10.33,2.0,Female,No,Thur,Lunch,2 +14.15,2.0,Female,No,Thur,Lunch,2 +16.0,2.0,Male,Yes,Thur,Lunch,2 +13.16,2.75,Female,No,Thur,Lunch,2 +17.47,3.5,Female,No,Thur,Lunch,2 +34.3,6.7,Male,No,Thur,Lunch,6 +41.19,5.0,Male,No,Thur,Lunch,5 +27.05,5.0,Female,No,Thur,Lunch,6 +16.43,2.3,Female,No,Thur,Lunch,2 +8.35,1.5,Female,No,Thur,Lunch,2 +18.64,1.36,Female,No,Thur,Lunch,3 +11.87,1.63,Female,No,Thur,Lunch,2 +9.78,1.73,Male,No,Thur,Lunch,2 +7.51,2.0,Male,No,Thur,Lunch,2 +14.07,2.5,Male,No,Sun,Dinner,2 +13.13,2.0,Male,No,Sun,Dinner,2 +17.26,2.74,Male,No,Sun,Dinner,3 +24.55,2.0,Male,No,Sun,Dinner,4 +19.77,2.0,Male,No,Sun,Dinner,4 +29.85,5.14,Female,No,Sun,Dinner,5 +48.17,5.0,Male,No,Sun,Dinner,6 +25.0,3.75,Female,No,Sun,Dinner,4 +13.39,2.61,Female,No,Sun,Dinner,2 +16.49,2.0,Male,No,Sun,Dinner,4 +21.5,3.5,Male,No,Sun,Dinner,4 +12.66,2.5,Male,No,Sun,Dinner,2 +16.21,2.0,Female,No,Sun,Dinner,3 +13.81,2.0,Male,No,Sun,Dinner,2 +17.51,3.0,Female,Yes,Sun,Dinner,2 +24.52,3.48,Male,No,Sun,Dinner,3 +20.76,2.24,Male,No,Sun,Dinner,2 +31.71,4.5,Male,No,Sun,Dinner,4 +10.59,1.61,Female,Yes,Sat,Dinner,2 +10.63,2.0,Female,Yes,Sat,Dinner,2 +50.81,10.0,Male,Yes,Sat,Dinner,3 +15.81,3.16,Male,Yes,Sat,Dinner,2 +7.25,5.15,Male,Yes,Sun,Dinner,2 +31.85,3.18,Male,Yes,Sun,Dinner,2 +16.82,4.0,Male,Yes,Sun,Dinner,2 +32.9,3.11,Male,Yes,Sun,Dinner,2 +17.89,2.0,Male,Yes,Sun,Dinner,2 +14.48,2.0,Male,Yes,Sun,Dinner,2 +9.6,4.0,Female,Yes,Sun,Dinner,2 +34.63,3.55,Male,Yes,Sun,Dinner,2 +34.65,3.68,Male,Yes,Sun,Dinner,4 +23.33,5.65,Male,Yes,Sun,Dinner,2 +45.35,3.5,Male,Yes,Sun,Dinner,3 +23.17,6.5,Male,Yes,Sun,Dinner,4 +40.55,3.0,Male,Yes,Sun,Dinner,2 +20.69,5.0,Male,No,Sun,Dinner,5 +20.9,3.5,Female,Yes,Sun,Dinner,3 +30.46,2.0,Male,Yes,Sun,Dinner,5 +18.15,3.5,Female,Yes,Sun,Dinner,3 +23.1,4.0,Male,Yes,Sun,Dinner,3 +15.69,1.5,Male,Yes,Sun,Dinner,2 +19.81,4.19,Female,Yes,Thur,Lunch,2 +28.44,2.56,Male,Yes,Thur,Lunch,2 +15.48,2.02,Male,Yes,Thur,Lunch,2 +16.58,4.0,Male,Yes,Thur,Lunch,2 +7.56,1.44,Male,No,Thur,Lunch,2 +10.34,2.0,Male,Yes,Thur,Lunch,2 +43.11,5.0,Female,Yes,Thur,Lunch,4 +13.0,2.0,Female,Yes,Thur,Lunch,2 +13.51,2.0,Male,Yes,Thur,Lunch,2 +18.71,4.0,Male,Yes,Thur,Lunch,3 +12.74,2.01,Female,Yes,Thur,Lunch,2 +13.0,2.0,Female,Yes,Thur,Lunch,2 +16.4,2.5,Female,Yes,Thur,Lunch,2 +20.53,4.0,Male,Yes,Thur,Lunch,4 +16.47,3.23,Female,Yes,Thur,Lunch,3 +26.59,3.41,Male,Yes,Sat,Dinner,3 +38.73,3.0,Male,Yes,Sat,Dinner,4 +24.27,2.03,Male,Yes,Sat,Dinner,2 +12.76,2.23,Female,Yes,Sat,Dinner,2 +30.06,2.0,Male,Yes,Sat,Dinner,3 +25.89,5.16,Male,Yes,Sat,Dinner,4 +48.33,9.0,Male,No,Sat,Dinner,4 +13.27,2.5,Female,Yes,Sat,Dinner,2 +28.17,6.5,Female,Yes,Sat,Dinner,3 +12.9,1.1,Female,Yes,Sat,Dinner,2 +28.15,3.0,Male,Yes,Sat,Dinner,5 +11.59,1.5,Male,Yes,Sat,Dinner,2 +7.74,1.44,Male,Yes,Sat,Dinner,2 +30.14,3.09,Female,Yes,Sat,Dinner,4 +12.16,2.2,Male,Yes,Fri,Lunch,2 +13.42,3.48,Female,Yes,Fri,Lunch,2 +8.58,1.92,Male,Yes,Fri,Lunch,1 +15.98,3.0,Female,No,Fri,Lunch,3 +13.42,1.58,Male,Yes,Fri,Lunch,2 +16.27,2.5,Female,Yes,Fri,Lunch,2 +10.09,2.0,Female,Yes,Fri,Lunch,2 +20.45,3.0,Male,No,Sat,Dinner,4 +13.28,2.72,Male,No,Sat,Dinner,2 +22.12,2.88,Female,Yes,Sat,Dinner,2 +24.01,2.0,Male,Yes,Sat,Dinner,4 +15.69,3.0,Male,Yes,Sat,Dinner,3 +11.61,3.39,Male,No,Sat,Dinner,2 +10.77,1.47,Male,No,Sat,Dinner,2 +15.53,3.0,Male,Yes,Sat,Dinner,2 +10.07,1.25,Male,No,Sat,Dinner,2 +12.6,1.0,Male,Yes,Sat,Dinner,2 +32.83,1.17,Male,Yes,Sat,Dinner,2 +35.83,4.67,Female,No,Sat,Dinner,3 +29.03,5.92,Male,No,Sat,Dinner,3 +27.18,2.0,Female,Yes,Sat,Dinner,2 +22.67,2.0,Male,Yes,Sat,Dinner,2 +17.82,1.75,Male,No,Sat,Dinner,2 +18.78,3.0,Female,No,Thur,Dinner,2 From ba79c570537561f0029e125d1af282baa8fd5045 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Wed, 26 Feb 2025 20:14:06 -0800 Subject: [PATCH 02/15] address comments before reverting extraneous menu changes --- _quarto.yml | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/_quarto.yml b/_quarto.yml index 53d98f85..4b96cbb0 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -74,7 +74,7 @@ website: logo-alt: The logo for Shiny for Python search: true left: - - text: "Getting Started" + - text: "Get Started" file: docs/overview.qmd - text: "Concepts" file: docs/ui-overview.qmd @@ -89,13 +89,6 @@ website: - text: "UI Layouts" file: layouts/index.qmd icon: layout-text-window-reverse - - text: "Deploy" - menu: - - text: "Overview" - href: docs/deploy.qmd - - docs/deploy-cloud.qmd - - docs/deploy-on-prem.qmd - - docs/shinylive.qmd - text: "Examples" menu: - text: "Templates" @@ -107,7 +100,7 @@ website: - text: "Playground" href: https://shinylive.io/py/examples/ target: _blank - - text: "API Reference" + - text: "Reference" menu: - text: "Shiny Express" href: api/express/index.qmd @@ -235,22 +228,26 @@ website: - text: "Controlling for Page Size" href: "/layouts/arrange/index.html#controlling-for-page-width-and-height" - - id: getting_started + - id: get-started style: "floating" - collapse-level: 2 + collapse-level: 1 align: left contents: - - section: "Essentials" - contents: - - docs/overview.qmd - - docs/user-interfaces.qmd - - section: "Workflow" + - docs/overview.qmd + - docs/user-interfaces.qmd + - docs/install-create-run.qmd + - docs/debug.qmd + - section: "Deploy" contents: - - docs/install-create-run.qmd - - docs/debug.qmd + - text: "Overview" + href: docs/deploy.qmd + - docs/deploy-cloud.qmd + - docs/deploy-on-prem.qmd + - docs/shinylive.qmd - section: "Tutorials" contents: - - tutorials/index.qmd + - text: "Get Started with Shiny Express" + href: tutorials/intro-express/1-welcome.qmd - id: concepts style: "floating" From 73c8ed163e2da868f52cbd751187177d01cd7522 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Wed, 26 Feb 2025 20:38:34 -0800 Subject: [PATCH 03/15] revert original menu bar elements --- _quarto.yml | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/_quarto.yml b/_quarto.yml index 4b96cbb0..5a3592da 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -80,23 +80,17 @@ website: file: docs/ui-overview.qmd - text: "Components" menu: - - text: "Inputs" - href: components/index.qmd#inputs + - text: "Components" + href: components/index.qmd icon: sliders - - text: "Outputs" - file: components/index.qmd#outputs - icon: sliders - - text: "UI Layouts" + - text: "Layouts" file: layouts/index.qmd icon: layout-text-window-reverse - - text: "Examples" - menu: - text: "Templates" file: templates/index.qmd icon: code-square - - text: "Gallery" - file: gallery/index.qmd - icon: code-square + - text: "Gallery" + href: gallery/index.qmd - text: "Playground" href: https://shinylive.io/py/examples/ target: _blank From d563c8c0f0261fba7d79f8cbecfe43ed0861b45e Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Thu, 27 Feb 2025 06:29:06 -0800 Subject: [PATCH 04/15] create get-started dir, move files, update sidebar and metadata --- _quarto.yml | 19 +++++++++--------- docs/_metadata.yml | 2 +- get-started/_metadata.yml | 1 + .../assets/dashboard-template.png | Bin .../assets/tipping-dashboard.png | Bin {docs => get-started}/debug.qmd | 0 {docs => get-started}/deploy-cloud.qmd | 0 {docs => get-started}/deploy-on-prem.qmd | 0 {docs => get-started}/deploy.qmd | 0 {docs => get-started}/install-create-run.qmd | 0 {docs => get-started}/overview.qmd | 0 .../shinylive-share-button.png | Bin .../shinylive-share-modal.png | Bin .../shinylive-shiny-deployment-model.png | Bin .../shinylive-shinylive-deployment-model.png | Bin {docs => get-started}/shinylive.qmd | 0 {docs => get-started}/user-interfaces.qmd | 0 tutorials/intro-express/_metadata.yml | 1 + 18 files changed, 13 insertions(+), 10 deletions(-) create mode 100644 get-started/_metadata.yml rename {docs => get-started}/assets/dashboard-template.png (100%) rename {docs => get-started}/assets/tipping-dashboard.png (100%) rename {docs => get-started}/debug.qmd (100%) rename {docs => get-started}/deploy-cloud.qmd (100%) rename {docs => get-started}/deploy-on-prem.qmd (100%) rename {docs => get-started}/deploy.qmd (100%) rename {docs => get-started}/install-create-run.qmd (100%) rename {docs => get-started}/overview.qmd (100%) rename {docs => get-started}/shinylive-share-button.png (100%) rename {docs => get-started}/shinylive-share-modal.png (100%) rename {docs => get-started}/shinylive-shiny-deployment-model.png (100%) rename {docs => get-started}/shinylive-shinylive-deployment-model.png (100%) rename {docs => get-started}/shinylive.qmd (100%) rename {docs => get-started}/user-interfaces.qmd (100%) create mode 100644 tutorials/intro-express/_metadata.yml diff --git a/_quarto.yml b/_quarto.yml index 5a3592da..9907a834 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -20,6 +20,7 @@ project: - api/testing - templates - tutorials + - get-started resources: - /pypi/** - /robots.txt @@ -75,7 +76,7 @@ website: search: true left: - text: "Get Started" - file: docs/overview.qmd + file: get-started/overview.qmd - text: "Concepts" file: docs/ui-overview.qmd - text: "Components" @@ -227,17 +228,17 @@ website: collapse-level: 1 align: left contents: - - docs/overview.qmd - - docs/user-interfaces.qmd - - docs/install-create-run.qmd - - docs/debug.qmd + - get-started/overview.qmd + - get-started/user-interfaces.qmd + - get-started/install-create-run.qmd + - get-started/debug.qmd - section: "Deploy" contents: - text: "Overview" - href: docs/deploy.qmd - - docs/deploy-cloud.qmd - - docs/deploy-on-prem.qmd - - docs/shinylive.qmd + href: get-started/deploy.qmd + - get-started/deploy-cloud.qmd + - get-started/deploy-on-prem.qmd + - get-started/shinylive.qmd - section: "Tutorials" contents: - text: "Get Started with Shiny Express" diff --git a/docs/_metadata.yml b/docs/_metadata.yml index 8eae132d..16b1a700 100644 --- a/docs/_metadata.yml +++ b/docs/_metadata.yml @@ -1 +1 @@ -sidebar: get-started +sidebar: concepts diff --git a/get-started/_metadata.yml b/get-started/_metadata.yml new file mode 100644 index 00000000..8eae132d --- /dev/null +++ b/get-started/_metadata.yml @@ -0,0 +1 @@ +sidebar: get-started diff --git a/docs/assets/dashboard-template.png b/get-started/assets/dashboard-template.png similarity index 100% rename from docs/assets/dashboard-template.png rename to get-started/assets/dashboard-template.png diff --git a/docs/assets/tipping-dashboard.png b/get-started/assets/tipping-dashboard.png similarity index 100% rename from docs/assets/tipping-dashboard.png rename to get-started/assets/tipping-dashboard.png diff --git a/docs/debug.qmd b/get-started/debug.qmd similarity index 100% rename from docs/debug.qmd rename to get-started/debug.qmd diff --git a/docs/deploy-cloud.qmd b/get-started/deploy-cloud.qmd similarity index 100% rename from docs/deploy-cloud.qmd rename to get-started/deploy-cloud.qmd diff --git a/docs/deploy-on-prem.qmd b/get-started/deploy-on-prem.qmd similarity index 100% rename from docs/deploy-on-prem.qmd rename to get-started/deploy-on-prem.qmd diff --git a/docs/deploy.qmd b/get-started/deploy.qmd similarity index 100% rename from docs/deploy.qmd rename to get-started/deploy.qmd diff --git a/docs/install-create-run.qmd b/get-started/install-create-run.qmd similarity index 100% rename from docs/install-create-run.qmd rename to get-started/install-create-run.qmd diff --git a/docs/overview.qmd b/get-started/overview.qmd similarity index 100% rename from docs/overview.qmd rename to get-started/overview.qmd diff --git a/docs/shinylive-share-button.png b/get-started/shinylive-share-button.png similarity index 100% rename from docs/shinylive-share-button.png rename to get-started/shinylive-share-button.png diff --git a/docs/shinylive-share-modal.png b/get-started/shinylive-share-modal.png similarity index 100% rename from docs/shinylive-share-modal.png rename to get-started/shinylive-share-modal.png diff --git a/docs/shinylive-shiny-deployment-model.png b/get-started/shinylive-shiny-deployment-model.png similarity index 100% rename from docs/shinylive-shiny-deployment-model.png rename to get-started/shinylive-shiny-deployment-model.png diff --git a/docs/shinylive-shinylive-deployment-model.png b/get-started/shinylive-shinylive-deployment-model.png similarity index 100% rename from docs/shinylive-shinylive-deployment-model.png rename to get-started/shinylive-shinylive-deployment-model.png diff --git a/docs/shinylive.qmd b/get-started/shinylive.qmd similarity index 100% rename from docs/shinylive.qmd rename to get-started/shinylive.qmd diff --git a/docs/user-interfaces.qmd b/get-started/user-interfaces.qmd similarity index 100% rename from docs/user-interfaces.qmd rename to get-started/user-interfaces.qmd diff --git a/tutorials/intro-express/_metadata.yml b/tutorials/intro-express/_metadata.yml new file mode 100644 index 00000000..62df4970 --- /dev/null +++ b/tutorials/intro-express/_metadata.yml @@ -0,0 +1 @@ +sidebar: tutorial-express-intro From 0d677201cd3925847b6d4079e2d2742871cb0e7a Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 07:55:50 -0800 Subject: [PATCH 05/15] remove installatio instructions out of tutorial, link to the installation page instead --- tutorials/intro-express/1-welcome.qmd | 151 ++------------------------ 1 file changed, 8 insertions(+), 143 deletions(-) diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd index 4c4f7a16..bdb9ed8e 100644 --- a/tutorials/intro-express/1-welcome.qmd +++ b/tutorials/intro-express/1-welcome.qmd @@ -10,152 +10,17 @@ worked with data, and now need a way to publish an interactive web application to help tell your data story. -## Installing Shiny - -:::::: {.panel-tabset} - -## Windows - -::: {.panel-tabset} - -## pip - -```bash -python -m venv shiny-env # create virtual environment -shiny-env\Scripts\activate # activate environment -pip install -U shiny # install shiny -``` - -## conda - -```bash -# create virtual environment and install shiny -conda create -n shiny-env -c conda-forge shiny - -# activate environment -conda activate shiny-env -``` - -## mamba - -```bash -# create virtual environment and install shiny -mamba create -n shiny-env -c conda-forge shiny - -# activate environment -mamba activate shiny-env -``` - -::: - -## MacOS - -::: {.panel-tabset} - -## pip - -```bash -python -m venv shiny-env # create virtual environment -source shiny-env/bin/activate # activate environment -pip install -U shiny # install shiny -``` - -## conda - -```bash -# create virtual environment and install shiny -conda create -n shiny-env -c conda-forge shiny - -# activate environment -conda activate shiny-env -``` - -## mamba - -```bash -# create virtual environment and install shiny -mamba create -n shiny-env -c conda-forge shiny - -# activate environment -mamba activate shiny-env -``` -::: - -## Linux - -::: {.panel-tabset} - -## pip - -```bash -python -m venv shiny-env # create virtual environment -source shiny-env/bin/activate # activate environment -pip install -U shiny # install shiny -``` - -## conda - -```bash -# create virtual environment and install shiny -conda create -n shiny-env -c conda-forge shiny - -# activate environment -conda activate shiny-env -``` - -## mamba - -```bash -# create virtual environment and install shiny -mamba create -n shiny-env -c conda-forge shiny - -# activate environment -mamba activate shiny-env -``` -::: - -:::::: - - -We will be using [Positron](https://positron.posit.co/) in our tutorials, -but you can also use [Visual Studio Code](https://code.visualstudio.com/). -Whether you are using Positron, or VS Code, -you will need to make sure you have the -[VS Code Shiny Extension](https://marketplace.visualstudio.com/items?itemName=Posit.shiny) -installed. - -If you are working with VSCode and Positron, -make sure your current python environment has -the `ipykernel` package installed. -We assume you are already in the environment we set up in the previous installing shiny section. - - -::: {.panel-tabset} - -## pip - -```bash -pip install ipykernel -``` - -## conda - -```bash -conda install -c conda-forge ipykernel -``` - -## mamba - -```bash -mamba install -c conda-forge ipykernel -``` - -::: - -## Parts of a Shiny Application +## Installation and Setup This is a 1 to 2 Hour tutorial to get you started and familiar with all the basic parts of creating and deploying a Shiny for Python application. +Before starting this tutorial, +check to make sure you have your packages and environment +setup. +You can see the +[Installation section of the Get Started Guides](/get-started/install-create-run.qmd). + +## Parts of a Shiny Application Shiny express allows us to write shiny apps with a minimal amount of code. This lets us rapidly link interactive components with our data From a58de712ff8e5e7f652d509c91fc3990cf031090 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 07:43:28 -0800 Subject: [PATCH 06/15] copy edit Co-authored-by: Garrick Aden-Buie --- tutorials/intro-express/1-welcome.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd index bdb9ed8e..35d24132 100644 --- a/tutorials/intro-express/1-welcome.qmd +++ b/tutorials/intro-express/1-welcome.qmd @@ -127,7 +127,7 @@ shiny run my_app.py If you named your application `app.py` you can omit it form the command and only use `shiny run`. The `app.py` is the default file shiny looks for to run in the current directory. Otherwise, you can pass in the name of the file that you wish to run. -The `app` prefix used in the example above is used to signal the VS Code shiny extension +The `app` prefix used in the example above is used to signal to the Shiny VS Code extension to display the run app button. ::: From b78fb948c9821a67b9ece554b15c261904229d13 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 07:44:00 -0800 Subject: [PATCH 07/15] copy edit Co-authored-by: Garrick Aden-Buie --- tutorials/intro-express/1-welcome.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd index 35d24132..fa73eda9 100644 --- a/tutorials/intro-express/1-welcome.qmd +++ b/tutorials/intro-express/1-welcome.qmd @@ -125,7 +125,7 @@ shiny run my_app.py ::: {.callout-note} If you named your application `app.py` you can omit it form the command and only use `shiny run`. -The `app.py` is the default file shiny looks for to run in the current directory. +The `app.py` is the default file Shiny looks for to run in the current directory. Otherwise, you can pass in the name of the file that you wish to run. The `app` prefix used in the example above is used to signal to the Shiny VS Code extension to display the run app button. From 7bf05874b998b81e124d6d0fc516e6ec82be0751 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 07:45:28 -0800 Subject: [PATCH 08/15] copy edit Co-authored-by: Garrick Aden-Buie From 05c73617b3a16b556a6d6d1aa3263a207f3c9381 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 08:07:16 -0800 Subject: [PATCH 09/15] re-organize first app introduction example writeup --- tutorials/intro-express/1-welcome.qmd | 32 +++++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd index fa73eda9..0b2aff84 100644 --- a/tutorials/intro-express/1-welcome.qmd +++ b/tutorials/intro-express/1-welcome.qmd @@ -35,6 +35,10 @@ There are 3 main parts of a shiny express application 3. [layout and ui components](/layouts): how and where the inputs and output of the web application are displayed. +The example below demonstrates the basic mechanics behind Shiny apps. +As you move the slider (an input component), +the text (output component) will react and update to the corresponding input value. + ```{shinylive-python} #| standalone: true #| components: [editor, viewer] @@ -42,24 +46,28 @@ There are 3 main parts of a shiny express application #| viewerHeight: 150 from shiny.express import input, render, ui -ui.input_slider("val", "Slider label", min=0, max=100, value=50) +ui.input_slider(id="val", label="Slider label", min=0, max=100, value=50) @render.text def slider_val(): return f"Slider value: {input.val()}" ``` -This example demonstrates the basic mechanics behind Shiny apps. -As you move the slider (an input component), -the text (output component) will react and update to the corresponding input value. - -* Inputs are created via `ui.input_*()` functions. - * The first argument is the input's `id`, which is used to read the input's value. -* Outputs are created by decorating a function with `@render.*`. - * Inside a `render` function, `input` values can be read [reactively](#reactivity). - * When those `input` values change, Shiny knows how to minimally re-render output. -* Layouts are inferred automatically based on what items you place in your application. - * We will learn more about layouts and user interfaces in the next lesson of this tutorial. +Let's briefly break down the components of the application above: + +- Inputs + - Create a slider with a `ui.input_*` function. + - Here we are using the `ui.input_slider()` function to create the slider. + - This slider has an id of `"val"` which is used to get the slider value later +- Outputs + - Created by decorating a function with the corresponding `@render.*` decorator. + - Here we are displaying text, so we are using the `@render.text` decorator. + - Inside a `render` function, `input` values can be read [reactively](#reactivity). + - We read the value from the slider by calling `input.val()`. + - When those `input` values change, Shiny knows how to minimally re-render output. +- Layouts + - Inferred automatically based on what items you place in your application. + - We will learn more about layouts and user interfaces in the next lesson of this tutorial. ::: {.callout-note} ## Exercise From 2f1e0c7b643295ec61feab3544986df199b37531 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 08:08:17 -0800 Subject: [PATCH 10/15] convert tutorial-express-intro into docked sidebar --- _quarto.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_quarto.yml b/_quarto.yml index 9907a834..9757cd6a 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -289,7 +289,7 @@ website: - docs/routing.qmd - id: tutorial-express-intro - style: "floating" + style: "docked" align: left contents: - section: "Learn Shiny Express" From 4a94898da402c0340d022037d22691fa059a41e4 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 08:10:23 -0800 Subject: [PATCH 11/15] move example exercise 1 positron image to margin --- tutorials/intro-express/1-welcome.qmd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd index 0b2aff84..30ee3e3a 100644 --- a/tutorials/intro-express/1-welcome.qmd +++ b/tutorials/intro-express/1-welcome.qmd @@ -99,7 +99,9 @@ as you make changes to the `app.py` file. 2. Move the slider and see how the output reacts 3. Congratulations, you made your first shiny for python application! +::: {.column-margin} ![](img/010-run_app.png) +::: ::: {.callout-tip} ## Naming your files From 1510bacd65c47830ec4d9a28e713a9a4c3ca1610 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 08:15:15 -0800 Subject: [PATCH 12/15] combine file rename tips and show reload and port directly in first terminal run example --- tutorials/intro-express/1-welcome.qmd | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd index 30ee3e3a..60c24b7c 100644 --- a/tutorials/intro-express/1-welcome.qmd +++ b/tutorials/intro-express/1-welcome.qmd @@ -103,13 +103,15 @@ as you make changes to the `app.py` file. ![](img/010-run_app.png) ::: +::: + ::: {.callout-tip} ## Naming your files If you start your file with the word `app`, the shiny for python extension will recognize it as an application and you will be able to see the "play" button to run your application. -You can also name your file `app-getting_started.py` +You can also name your file `app-get_started.py` and you will still get the shiny extension play button. To have Shiny for Python work well with the VS Code extensions and for you to go through @@ -118,8 +120,12 @@ We recommend either one of the following file naming conventions: 1. Create separate folders for each app example you will create and save separate `app.py` files in each folder 2. Create separate `app*.py` files in the same directory (e.g., `app-01.py`, `app-02.py`) -::: +If you named your application `app.py` you can omit it form the command and only use `shiny run --reload`. +The `app.py` is the default file Shiny looks for to run in the current directory. +Otherwise, you can pass in the name of the file that you wish to run. +The `app` prefix used in the example above is used to signal to the Shiny VS Code extension +to display the run app button. ::: ## Run your shiny application @@ -130,27 +136,19 @@ This is useful if you wish to specify your own port or want to rename your appli without the `app` prefix. ```bash -shiny run my_app.py +shiny run my_app.py --reload --port 8000 ``` -::: {.callout-note} -If you named your application `app.py` you can omit it form the command and only use `shiny run`. -The `app.py` is the default file Shiny looks for to run in the current directory. -Otherwise, you can pass in the name of the file that you wish to run. -The `app` prefix used in the example above is used to signal to the Shiny VS Code extension -to display the run app button. -::: - :::{.callout-tip} ## Helpful run options Some useful options you can pass the `shiny run` command are: +- `--reload`: Enables auto-reload, the application will reload to reflect your changes as you save your work. - `--port`: pass in a custom port, e.g., `--port 8000`. This will run the app on the specified port, instead of a random port. This makes it easier to have the same browser window open as you stop and start your application. -- `--reload`: Enables auto-reload You can learn more about these run options on the [`run_app` documentation page](https://shiny.posit.co/py/api/core/run_app.html). From 0d8bdbcf04a478d3240c4fece27de375908c25cd Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Tue, 4 Mar 2025 08:23:34 -0800 Subject: [PATCH 13/15] reflow document through quarto visual editor --- tutorials/intro-express/1-welcome.qmd | 145 ++++++++++---------------- 1 file changed, 57 insertions(+), 88 deletions(-) diff --git a/tutorials/intro-express/1-welcome.qmd b/tutorials/intro-express/1-welcome.qmd index 60c24b7c..e6f94743 100644 --- a/tutorials/intro-express/1-welcome.qmd +++ b/tutorials/intro-express/1-welcome.qmd @@ -2,42 +2,28 @@ title: Getting Started --- -Shiny for Python is a web application framework that helps tell your -data story. -If you've landed on this page, -you probably have a bit of Python experience, -worked with data, -and now need a way to publish an interactive -web application to help tell your data story. +Shiny for Python is a web application framework that helps tell your data story. +If you've landed on this page, you probably have a bit of Python experience, worked with data, and now need a way to publish an interactive web application to help tell your data story. ## Installation and Setup -This is a 1 to 2 Hour tutorial to get you started and familiar with all the basic -parts of creating and deploying a Shiny for Python application. -Before starting this tutorial, -check to make sure you have your packages and environment -setup. -You can see the -[Installation section of the Get Started Guides](/get-started/install-create-run.qmd). +This is a 1 to 2 Hour tutorial to get you started and familiar with all the basic parts of creating and deploying a Shiny for Python application. +Before starting this tutorial, check to make sure you have your packages and environment setup. +You can see the [Installation section of the Get Started Guides](/get-started/install-create-run.qmd). ## Parts of a Shiny Application Shiny express allows us to write shiny apps with a minimal amount of code. -This lets us rapidly link interactive components with our data -in our web application. +This lets us rapidly link interactive components with our data in our web application. There are 3 main parts of a shiny express application -1. [input components](/components/#inputs): - provide user interactions that can be used as inputs in other parts of the web application. -2. [output components](/components/#outputs): - results that are displayed on the web application. -3. [layout and ui components](/layouts): - how and where the inputs and output of the web application are displayed. +1. [input components](/components/#inputs): provide user interactions that can be used as inputs in other parts of the web application. +2. [output components](/components/#outputs): results that are displayed on the web application. +3. [layout and ui components](/layouts): how and where the inputs and output of the web application are displayed. The example below demonstrates the basic mechanics behind Shiny apps. -As you move the slider (an input component), -the text (output component) will react and update to the corresponding input value. +As you move the slider (an input component), the text (output component) will react and update to the corresponding input value. ```{shinylive-python} #| standalone: true @@ -55,33 +41,32 @@ def slider_val(): Let's briefly break down the components of the application above: -- Inputs - - Create a slider with a `ui.input_*` function. - - Here we are using the `ui.input_slider()` function to create the slider. - - This slider has an id of `"val"` which is used to get the slider value later -- Outputs - - Created by decorating a function with the corresponding `@render.*` decorator. - - Here we are displaying text, so we are using the `@render.text` decorator. - - Inside a `render` function, `input` values can be read [reactively](#reactivity). - - We read the value from the slider by calling `input.val()`. - - When those `input` values change, Shiny knows how to minimally re-render output. -- Layouts - - Inferred automatically based on what items you place in your application. - - We will learn more about layouts and user interfaces in the next lesson of this tutorial. - -::: {.callout-note} +- Inputs + - Create a slider with a `ui.input_*` function. + - Here we are using the `ui.input_slider()` function to create the slider. + - This slider has an id of `"val"` which is used to get the slider value later +- Outputs + - Created by decorating a function with the corresponding `@render.*` decorator. + - Here we are displaying text, so we are using the `@render.text` decorator. + - Inside a `render` function, `input` values can be read [reactively](#reactivity). + - We read the value from the slider by calling `input.val()`. + - When those `input` values change, Shiny knows how to minimally re-render output. +- Layouts + - Inferred automatically based on what items you place in your application. + - We will learn more about layouts and user interfaces in the next lesson of this tutorial. + +:::: callout-note ## Exercise Let's make and run our first shiny for python application. -1. Take the above code and save it to a file. Here we named it `app.py` -2. Click on the play button (red circle in the image below)j +1. Take the above code and save it to a file. Here we named it `app.py` +2. Click on the play button (red circle in the image below)j You will see the terminal run the `shiny run` command for you automatically. The output will look something like this - -```bash +``` bash $ python -m shiny run --port 55901 --reload --autoreload-port 55902 app-010-simple.py INFO: Will watch for changes in these directories: ['~/Desktop/py-shiny-example'] INFO: Uvicorn running on http://127.0.0.1:55901 (Press CTRL+C to quit) @@ -92,82 +77,66 @@ INFO: Application startup complete. INFO: 127.0.0.1:56426 - "GET /?vscodeBrowserReqId=1737097751843 HTTP/1.1" 200 OK ``` -This will run the application on port `55901` and automatically reload and update -as you make changes to the `app.py` file. +This will run the application on port `55901` and automatically reload and update as you make changes to the `app.py` file. -1. You will see the app build in the bottom terminal and open in the viewer on the side -2. Move the slider and see how the output reacts -3. Congratulations, you made your first shiny for python application! +1. You will see the app build in the bottom terminal and open in the viewer on the side +2. Move the slider and see how the output reacts +3. Congratulations, you made your first shiny for python application! -::: {.column-margin} +::: column-margin ![](img/010-run_app.png) ::: +:::: -::: - -::: {.callout-tip} +::: callout-tip ## Naming your files -If you start your file with the word `app`, -the shiny for python extension will recognize -it as an application and you will be able to see the "play" button to run your application. -You can also name your file `app-get_started.py` -and you will still get the shiny extension play button. +If you start your file with the word `app`, the shiny for python extension will recognize it as an application and you will be able to see the "play" button to run your application. +You can also name your file `app-get_started.py` and you will still get the shiny extension play button. -To have Shiny for Python work well with the VS Code extensions and for you to go through -the next series of lessons. +To have Shiny for Python work well with the VS Code extensions and for you to go through the next series of lessons. We recommend either one of the following file naming conventions: -1. Create separate folders for each app example you will create and save separate `app.py` files in each folder -2. Create separate `app*.py` files in the same directory (e.g., `app-01.py`, `app-02.py`) +1. Create separate folders for each app example you will create and save separate `app.py` files in each folder +2. Create separate `app*.py` files in the same directory (e.g., `app-01.py`, `app-02.py`) If you named your application `app.py` you can omit it form the command and only use `shiny run --reload`. The `app.py` is the default file Shiny looks for to run in the current directory. Otherwise, you can pass in the name of the file that you wish to run. -The `app` prefix used in the example above is used to signal to the Shiny VS Code extension -to display the run app button. +The `app` prefix used in the example above is used to signal to the Shiny VS Code extension to display the run app button. ::: ## Run your shiny application -In addition to the play button in Positron, you can manually run your application from -the command line. -This is useful if you wish to specify your own port or want to rename your application -without the `app` prefix. +In addition to the play button in Positron, you can manually run your application from the command line. +This is useful if you wish to specify your own port or want to rename your application without the `app` prefix. -```bash -shiny run my_app.py --reload --port 8000 +``` bash +shiny run my_app.py --reload ``` -:::{.callout-tip} +::: callout-tip ## Helpful run options Some useful options you can pass the `shiny run` command are: -- `--reload`: Enables auto-reload, the application will reload to reflect your changes as you save your work. -- `--port`: pass in a custom port, e.g., `--port 8000`. - This will run the app on the specified port, - instead of a random port. - This makes it easier to have the same browser window open as you stop and start your application. +- `--reload`: Enables auto-reload, the application will reload to reflect your changes as you save your work. +- `--port`: pass in a custom port, e.g., `--port 8000`. This will run the app on the specified port, instead of a random port. This makes it easier to have the same browser window open as you stop and start your application. -You can learn more about these run options on the -[`run_app` documentation page](https://shiny.posit.co/py/api/core/run_app.html). +You can learn more about these run options on the [`run_app` documentation page](https://shiny.posit.co/py/api/core/run_app.html). ::: ## Shiny Express: Your first application -The rest of this tutorial will work on creating this -[Restaurant Tipping Dashboard](https://gallery.shinyapps.io/template-dashboard-tips1/). +The rest of this tutorial will work on creating this [Restaurant Tipping Dashboard](https://gallery.shinyapps.io/template-dashboard-tips1/). -::::: {.column-screen .hero-image .pt-4 .pb-5 style="margin-top:0px;max-width:1600px;"} +:::: {.column-screen .hero-image .pt-4 .pb-5 style="margin-top:0px;max-width:1600px;"} ::: {.hello-output .g-col-12 .g-col-xl-12} - + + +```{=html} +``` ::: - -::::: +:::: From 30332ad703b8fe4bccdeee88d6d087b1996cca9f Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Mon, 10 Mar 2025 22:13:50 -0700 Subject: [PATCH 14/15] add positron setup instructions --- get-started/install-create-run.qmd | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/get-started/install-create-run.qmd b/get-started/install-create-run.qmd index a5471181..d713ad54 100644 --- a/get-started/install-create-run.qmd +++ b/get-started/install-create-run.qmd @@ -1,5 +1,5 @@ --- -title: Install, create, & run +title: Install aliases: - install.html --- @@ -83,7 +83,20 @@ conda update -c conda-forge shiny ::: -### VS Code +### Positron + +We recommend using +[Positron](https://positron.posit.co/), +a next-generation data science focused fork of Visual Studio Code. +If you already have VS Code installed, we still recommend giving Positron a try, +your extensions from VS Code will not conflict with your Positron extensions. + +Positron already ships with many Python-focused VS Code extensions from Open VSX, +including Quarto, Jupyter Notebooks, and Pyright. +To get started with Shiny for Python, you will need to install the +[Shiny Extension](https://open-vsx.org/extension/posit/shiny). + +### Visual Studio Code We recommend installing the [Python][vscode-python] and [Shiny][vscode-shiny] extensions for [Visual Studio Code][vscode]. This provides, among other things, a play button in the top right corner of your editor that will run your Shiny app. From 4751da3b8a309c688fe6fcb2f97303144b3d36e3 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Thu, 13 Mar 2025 23:28:42 -0700 Subject: [PATCH 15/15] stage rework of get started, concepts, and tutorials --- _quarto.yml | 12 +- docs/comp-streamlit.quarto_ipynb | 407 ++++++++++++++++++ docs/nonblocking.quarto_ipynb | 314 ++++++++++++++ {get-started => docs}/overview.qmd | 0 {get-started => docs}/user-interfaces.qmd | 2 +- get-started/assets/positron-run.png | Bin 0 -> 231791 bytes {docs => get-started}/assets/vscode.png | Bin get-started/create-run.qmd | 80 ++++ get-started/debug.qmd | 4 +- .../{install-create-run.qmd => install.qmd} | 113 ++--- get-started/shinylive.quarto_ipynb | 344 +++++++++++++++ get-started/welcome.qmd | 65 +++ tutorials/intro-express/1-welcome.qmd | 2 +- .../intro-express/4-external.quarto_ipynb | 314 ++++++++++++++ .../intro-express/6-reactivity.quarto_ipynb | 192 +++++++++ .../img/010-run_app-cropped_editor.png | Bin 0 -> 41149 bytes 16 files changed, 1768 insertions(+), 81 deletions(-) create mode 100644 docs/comp-streamlit.quarto_ipynb create mode 100644 docs/nonblocking.quarto_ipynb rename {get-started => docs}/overview.qmd (100%) rename {get-started => docs}/user-interfaces.qmd (99%) create mode 100644 get-started/assets/positron-run.png rename {docs => get-started}/assets/vscode.png (100%) create mode 100644 get-started/create-run.qmd rename get-started/{install-create-run.qmd => install.qmd} (50%) create mode 100644 get-started/shinylive.quarto_ipynb create mode 100644 get-started/welcome.qmd create mode 100644 tutorials/intro-express/4-external.quarto_ipynb create mode 100644 tutorials/intro-express/6-reactivity.quarto_ipynb create mode 100644 tutorials/intro-express/img/010-run_app-cropped_editor.png diff --git a/_quarto.yml b/_quarto.yml index 9757cd6a..04d8c4c5 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -76,7 +76,7 @@ website: search: true left: - text: "Get Started" - file: get-started/overview.qmd + file: get-started/welcome.qmd - text: "Concepts" file: docs/ui-overview.qmd - text: "Components" @@ -228,9 +228,9 @@ website: collapse-level: 1 align: left contents: - - get-started/overview.qmd - - get-started/user-interfaces.qmd - - get-started/install-create-run.qmd + - get-started/welcome.qmd + - get-started/install.qmd + - get-started/create-run.qmd - get-started/debug.qmd - section: "Deploy" contents: @@ -249,6 +249,10 @@ website: collapse-level: 2 align: left contents: + - section: "Essentials" + contents: + - docs/overview.qmd + - docs/user-interfaces.qmd - section: "User interfaces" contents: - docs/ui-overview.qmd diff --git a/docs/comp-streamlit.quarto_ipynb b/docs/comp-streamlit.quarto_ipynb new file mode 100644 index 00000000..42a70731 --- /dev/null +++ b/docs/comp-streamlit.quarto_ipynb @@ -0,0 +1,407 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "title: Streamlit\n", + "format:\n", + " html:\n", + " code-line-numbers: true\n", + " code-annotations: hover\n", + "include-in-header:\n", + " text: \"\"\n", + "---" + ], + "id": "eb526a4f" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "#| echo: false\n", + "from helpers import express_editor_tabs" + ], + "id": "68d8ddbe", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The idea of Streamlit is to simplify application development by rerunning the entire application script whenever any user input changes.\n", + "This strategy leads to a great initial user experience, but quickly becomes constricting as your application grows in scope.\n", + "\n", + "Shiny and Streamlit differ in a few key ways:\n", + "\n", + "1) Shiny's reactive execution means that elements are minimally re-rendered.\n", + "2) You can build large Shiny applications without manually managing application state or caching data.\n", + "3) Shiny allows you to easily customize the look and feel of your application.\n", + "\n", + "Shiny is designed to support your application's growth without extensive rewriting; the patterns you learn when developing a simple app are robust enough to handle a complicated one.\n", + "\n", + "## Streamlit example\n", + "\n", + "Consider this basic Streamlit application which filters a dataset and draws two plots.\n", + "The nice thing about this application is that it's very similar to a non-interactive script.\n", + "This makes getting started very easy because all you need to do to turn this script into an application is to add some Streamlit function calls to your variables and outputs.\n", + "At the beginning, Streamlit doesn't demand that you change your code to fit into a particular structure.\n", + "\n", + "The way Streamlit achieves this is by rerunning your script from start to finish every time the user takes an action.\n", + "While this works okay for small applications it is inefficient, and becomes intractable for larger more complicated ones.\n", + "In this case clicking the `Add Smoother` button will cause the entire app to reload, even though the button is only used by one plot.\n", + "\n", + ":::: {.grid .column-screen-inset}\n", + "::: {.g-col-12 .g-col-md-6 .col-code}\n", + "``` {.python}\n", + "import streamlit as st\n", + "import pandas as pd\n", + "from plotnine import ggplot, geom_density, aes, theme_light, geom_point, stat_smooth\n", + "from pathlib import Path\n", + "\n", + "infile = Path(__file__).parent / \"penguins.csv\"\n", + "df = pd.read_csv(infile)\n", + "\n", + "\n", + "def dist_plot(df):\n", + " plot = (\n", + " ggplot(df, aes(x=\"Body Mass (g)\", fill=\"Species\"))\n", + " + geom_density(alpha=0.2)\n", + " + theme_light()\n", + " )\n", + " return plot.draw()\n", + "\n", + "\n", + "def scatter_plot(df, smoother):\n", + " plot = (\n", + " ggplot(\n", + " df,\n", + " aes(\n", + " x=\"Bill Length (mm)\",\n", + " y=\"Bill Depth (mm)\",\n", + " color=\"Species\",\n", + " group=\"Species\",\n", + " ),\n", + " )\n", + " + geom_point()\n", + " + theme_light()\n", + " )\n", + "\n", + " if smoother:\n", + " plot = plot + stat_smooth()\n", + "\n", + " return plot.draw()\n", + "\n", + "\n", + "with st.sidebar:\n", + " mass = st.slider(\"Mass\", 2000, 8000, 6000)\n", + " smoother = st.checkbox(\"Add Smoother\")\n", + "\n", + "filt_df = df.loc[df[\"Body Mass (g)\"] < mass]\n", + "\n", + "st.pyplot(scatter_plot(filt_df, smoother))\n", + "st.pyplot(dist_plot(filt_df))\n", + "```\n", + ":::\n", + "::: {.g-col-12 .g-col-md-6}\n", + "![](assets/streamlit-penguins.mp4)\n", + ":::\n", + "::::\n", + "\n", + "## Shiny translation\n", + "\n", + "Shiny express apps look very similar to Streamlit apps, but run much more efficiently.\n", + "Unlike Streamlit, Shiny does not rerender the application every time an input is changed, but instead keeps track of the relationships between components and minimally rerenders the components which need to be updated.\n", + "The framework does this automatically when the application is run, and so you don't need to manually define the execution method for your app.\n", + "\n", + ":::{.column-screen-inset}" + ], + "id": "e1f9c519" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "#| output: asis\n", + "#| echo: false\n", + "\n", + "express_editor_tabs(\"apps/comp-streamlit/penguins\")" + ], + "id": "d6269081", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + ":::\n", + "\n", + "\n", + "The main difference between Streamlit and Shiny is code organization.\n", + "Since Streamlit runs everything from top to bottom it doesn't particularly matter how your code is organized.\n", + "In order to benefit from Shiny's execution model, you need to organize your code into decorated functions.\n", + "\n", + "For example, take this part of the application code:\n", + "\n", + "``` python\n", + "@reactive.calc\n", + "def filtered_data():\n", + " filt_df = df.copy()\n", + " filt_df = filt_df.loc[df[\"body_mass_g\"] < input.mass()]\n", + " return filt_df\n", + "\n", + "@render.plot\n", + "def mass_distribution():\n", + " return dist_plot(filtered_data())\n", + "\n", + "@render.plot\n", + "def scatter():\n", + " return scatter_plot(filtered_data(), input.smoother())\n", + "```\n", + "\n", + "These functions define the three main nodes of the application, as well as the relationships between them.\n", + "The `@render.plot` and `@reactive.calc` decorators identify the functions as reactive functions which need to re-execute in response to upstream changes, and the `filtered_data()` and `input.*` calls define the relationships between these components.\n", + "The decorators allow Shiny to construct a computation graph of the application as it runs, and only rerender an element when one of its upstream dependencies changes.\n", + "\n", + "\n", + "```{mermaid}\n", + "flowchart LR\n", + " S[input.mass] --> F[Filtered Data]\n", + " F --> H((Distribution))\n", + " F --> SC((Scatterplot))\n", + " C[input.smoother] --> SC\n", + "```\n", + "\n", + "\n", + "# Extending the application\n", + "\n", + "Organizing your app this way means that you can extend the application without rewriting it.\n", + "For example, let's add a button which resets the slider.\n", + "In Shiny you can do this by adding a `@reactive.effect` function which calls the `ui.update_slider()` function.\n", + "This adds a node to the computation graph and everything works as you'd expect it to.\n", + "Importantly, we can extend the application without changing how we think about the overall application.\n", + "\n", + "\n", + "```{mermaid}\n", + "flowchart LR\n", + " S[input.mass] --> F[Filtered Data]\n", + " F --> H((Distribution))\n", + " F --> SC((Scatterplot))\n", + " C[input.smoother] --> SC\n", + " R{Reset} -.-> S\n", + "```\n", + "\n", + "\n", + ":::{.column-screen-inset}" + ], + "id": "41d4ae47" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "#| echo: false\n", + "#| output: asis\n", + "\n", + "express_editor_tabs(\"apps/comp-streamlit/slider-update\")" + ], + "id": "87297724", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + ":::\n", + "\n", + "\n", + "### Streamlit requires rewriting\n", + "\n", + "Streamlit is optimized for very simple applications, but the cost of that is that Streamlit applications can be quite challenging to extend.\n", + "For example, to add a reset button to Streamlit you might expect that something like this would work.\n", + "After all, if your script runs from top-to-bottom whenever a button is pressed, shouldn't you be able to redefine a slider using an `if` statement?\n", + "\n", + "```{.python}\n", + "import streamlit as st\n", + "\n", + "x = st.slider(\"x\", 0, 10, 5)\n", + "btn = st.button(\"Reset\")\n", + "if btn:\n", + " x = st.slider(\"x\", 0, 10, 5)\n", + "```\n", + "\n", + "Unfortunately, this doesn't work because Streamlit maintains hidden application state, and resetting the slider value causes a name conflict.\n", + "In order to get this to work you need to first initialize a state variable `slider` which matches the `key` of the slider input widget, then you need to define a callback function and pass that as an argument to the button function.\n", + "Streamlit then uses the slider `key` to look for a variable with that same key session state.\n", + "This variable defines the value of the slider.\n", + "\n", + "The difficulty here is that in order to get the app to work you need to change your mental model of how the application runs.\n", + "Instead of thinking about your app as a simple Python script which reruns when anything changes, you need to start thinking about manually manipulating the state variables which persist across runs.\n", + "The limitations of the simple rerun-everything model will require you to add more and more workarounds like this as your application grows in complexity.\n", + "\n", + "```{.python}\n", + "import streamlit as st\n", + "import pandas as pd\n", + "from plotnine import ggplot, geom_density, aes, theme_light, geom_point, stat_smooth\n", + "from pathlib import Path\n", + "\n", + "infile = Path(__file__).parent / \"penguins.csv\"\n", + "df = pd.read_csv(infile)\n", + "\n", + "\n", + "def dist_plot(df):\n", + " plot = (\n", + " ggplot(df, aes(x=\"Body Mass (g)\", fill=\"Species\"))\n", + " + geom_density(alpha=0.2)\n", + " + theme_light()\n", + " )\n", + " return plot.draw()\n", + "\n", + "\n", + "def scatter_plot(df, smoother):\n", + " plot = (\n", + " ggplot(\n", + " df,\n", + " aes(\n", + " x=\"Bill Length (mm)\",\n", + " y=\"Bill Depth (mm)\",\n", + " color=\"Species\",\n", + " group=\"Species\",\n", + " ),\n", + " )\n", + " + geom_point()\n", + " + theme_light()\n", + " )\n", + "\n", + " if smoother:\n", + " plot = plot + stat_smooth()\n", + "\n", + " return plot.draw()\n", + "\n", + "# You need to check for the variable in session state to avoid an error\n", + "if \"slider\" not in st.session_state:\n", + " st.session_state[\"slider\"] = 6000\n", + "\n", + "def reset_value():\n", + " st.session_state[\"slider\"] = 6000\n", + "\n", + "\n", + "with st.sidebar:\n", + " mass = st.slider(\n", + " label=\"Mass\",\n", + " min_value=2000,\n", + " max_value=8000,\n", + " key=\"slider\", # The `key` imports the number which is stored in `session_state`\n", + " )\n", + " smoother = st.checkbox(\"Add Smoother\")\n", + " reset = st.button(\"Reset Slider\", on_click=reset_value)\n", + "\n", + "filt_df = df.loc[df[\"Body Mass (g)\"] < mass]\n", + "\n", + "st.pyplot(scatter_plot(filt_df, smoother))\n", + "st.pyplot(dist_plot(filt_df))\n", + "```\n", + "\n", + "\n", + "# Customizing UI\n", + "\n", + "Shiny embraces [UI as HTML](ui-html.qmd), and as a result it's relatively easy to implement bespoke [UI customizations](ui-customize.html).\n", + "For example, lets change the color of one button without changing the colors of any other buttons in our app.\n", + "Since Shiny allows you to add HTML attributes like `class`/`style`, and provides a CSS framework ([Bootstrap](https://getbootstrap.com/docs/5.3/getting-started/introduction/)), we can make primary button by just adding an appropriate `class` attribute.\n", + "\n", + "```{shinylive-python}\n", + "#| standalone: true\n", + "#| components: [editor, viewer]\n", + "#| layout: vertical\n", + "#| viewerHeight: 100\n", + "from shiny.express import ui\n", + "\n", + "ui.input_action_button(\"default\", \"Default Button\")\n", + "ui.input_action_button(\"primary\", \"Primary Button\", class_=\"btn-outline-primary\")\n", + "```\n", + "\n", + "You might not need to customize the CSS of your app that often, but it's important to have the option if your application calls for it.\n", + "For example, suppose your company wants to publish your application publicly on their website, but in order to do that you need to make sure that it matches their style guide.\n", + "You can do that with Shiny because it supports the same styling patterns that your company is probably already using.\n", + "\n", + "### Streamlit\n", + "\n", + "This task is almost impossible in Streamlit, and requires a [JavaScript workaround](https://discuss.streamlit.io/t/issues-with-background-colour-for-buttons/38723/2).\n", + "\n", + "```{.python}\n", + "import streamlit as st\n", + "import streamlit.components.v1 as components\n", + "\n", + "st.button(\"red\", \"Red Button\")\n", + "st.button(\"white\", \"White Button\")\n", + "\n", + "\n", + "def ChangeButtonColour(widget_label, font_color, background_color=\"transparent\"):\n", + " htmlstr = f\"\"\"\n", + " \n", + " \"\"\"\n", + " components.html(f\"{htmlstr}\", height=0, width=0)\n", + "\n", + "\n", + "ChangeButtonColour(\"red\", \"white\", \"red\")\n", + "```\n", + "\n", + "Despite its complexity, this is the best way to change the style of an individual element in Streamlit.\n", + "How this pattern works is:\n", + "\n", + "- Return an empty html component with a script tag\n", + "- Use that script to break out of the iframe and access the parent document\n", + "- Search through the parent elements for those which matches a string\n", + "- Change the style of those elements\n", + "\n", + "This pattern is fairly tricky to understand, and can lead to some unexpected bugs.\n", + "For instance changes to page structure or button names can cause the styling to behave unpredictably.\n", + "\n", + "Streamlit was designed around simple applications which didn't require customized styling, so it's no surprise that this type of styling is difficult.\n", + "It is, however, an example of how the up-front simplicity of Streamlit has a significant cost when you go outside the boundaries of that simplicity.\n", + "The fact that this is a fairly common workaround is an indication that Streamlit users commonly exceed those boundaries.\n", + "\n", + "# Privacy and security\n", + "\n", + "Streamlit collects [user information](https://docs.streamlit.io/library/advanced-features/configuration#telemetry) on everyone who visits a running Streamlit app unless you opt-out.\n", + "The data is sent to a American server owned by Snowflake so that the company can analyze user behavior.\n", + "This can cause legal and security problems because your application may be subject to data governance policies which forbid this type of data collection.\n", + "For example, if your users do not explicitly provide consent to transfer data to a US company, sending data to Snowflake might be a [GDPR violation](https://github.com/streamlit/streamlit/issues/4747).\n", + "In order to prevent data collection you need to set `gatherUsageStats = false` in your Streamlit config file, which is an easy thing to forget to include in a given Streamlit deployment.\n", + "\n", + "Shiny does not collect or report user data of any kind, and it never will.\n", + "We do not believe that open-source tools should collect user data without explicit consent.\n", + "\n", + "\n", + "# Conclusion\n", + "\n", + "Shiny allows you to build much more performant and extensible applications than Streamlit.\n", + "The patterns that you use to build a simple Shiny application are the same ones that you use to build a complex one, and you never need to change your mental model of how the application works.\n", + "This design will let your application grow along with the scope of your problem, and you can have confidence that the framework has the tools that you need to handle almost any requirement." + ], + "id": "cd908e3c" + } + ], + "metadata": { + "kernelspec": { + "name": "pfe_book", + "language": "python", + "display_name": "pfe_book", + "path": "/Users/danielchen/Library/Jupyter/kernels/pfe_book" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/docs/nonblocking.quarto_ipynb b/docs/nonblocking.quarto_ipynb new file mode 100644 index 00000000..714d769f --- /dev/null +++ b/docs/nonblocking.quarto_ipynb @@ -0,0 +1,314 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "title: Non-blocking operations\n", + "---\n", + "\n", + "\n", + "Sometimes in a Shiny app, you need to perform a long-running operation, like loading a large dataset or doing an expensive computation.\n", + "If you do this in a reactive context, it will block the rest of the application from running until the operation completes.\n", + "This can be frustrating for users, who may think that the app has crashed.\n", + "\n", + "Worse, if you have multiple users, then one user's long-running operation will block the other users' apps from running as well.\n", + "These other users will not even be aware that their slow performance is due to another user's actions.\n", + "\n", + "In this article, we'll learn how to make Shiny apps more responsive by using non-blocking operations.\n", + "We'll also go out of our way to explain why the usual Python async techniques don't work the same way in Shiny as in other web frameworks.\n", + "\n", + "## Using async/await in Shiny\n", + "\n", + "Asynchronous programming is a technique used in many programming languages to increase scalability and responsiveness, usually in programs that do a lot of networking like web servers and clients.\n", + "Python supports async programming at the language level, using the `async`/`await` keywords; in the standard library, with the [`asyncio`](https://docs.python.org/3/library/asyncio.html) module; and in third-party libraries, like [FastAPI](https://fastapi.tiangolo.com/) and [aiohttp](https://docs.aiohttp.org/).\n", + "\n", + "Shiny has async support as well, but it's a bit different from your typical async Python framework.\n", + "On the one hand, Shiny is built on top of [Starlette](https://www.starlette.io/), which is an async web framework, so it's possible to use async functions in many parts of your Shiny app.\n", + "On the other hand, Shiny is also designed around reactive programming concepts, and that creates constraints on how async functions can be used.\n", + "\n", + "### Reactive async/await\n", + "\n", + "Shiny supports the use of `async` and `await` in your reactive code.\n", + "You can use `async` functions in `@reactive.effect`, `@reactive.calc`, and render functions, and within those async functions you can use `await` to wait for the results of other async functions.\n", + "\n", + "However, you may be surprised to learn that this technique alone does not result in improved responsiveness in Shiny apps!\n", + "\n", + "In the app below, the first thing in the UI is a reactive output that displays the current time.\n", + "Click the button and notice that, during the five seconds that the app is waiting for the (artificially slow) sum calculation to complete, the time does not update.\n", + "\n", + "```{shinylive-python}\n", + "#| standalone: true\n", + "#| components: [editor, viewer]\n", + "import asyncio\n", + "import datetime\n", + "from shiny import App, reactive, render, ui\n", + "\n", + "app_ui = ui.page_fluid(\n", + " ui.p(\"The time is \", ui.output_text(\"current_time\", inline=True)),\n", + " ui.hr(),\n", + " ui.input_numeric(\"x\", \"x\", value=1),\n", + " ui.input_numeric(\"y\", \"y\", value=2),\n", + " ui.input_task_button(\"btn\", \"Add numbers\"),\n", + " ui.output_text(\"sum\"),\n", + ")\n", + "\n", + "def server(input, output, session):\n", + " @render.text\n", + " def current_time():\n", + " reactive.invalidate_later(1)\n", + " return datetime.datetime.now().strftime(\"%H:%M:%S %p\")\n", + "\n", + " @reactive.calc\n", + " @reactive.event(input.btn)\n", + " async def sum_values():\n", + " await asyncio.sleep(5)\n", + " return input.x() + input.y()\n", + "\n", + " @render.text\n", + " async def sum():\n", + " return str(await sum_values())\n", + "\n", + "app = App(app_ui, server)\n", + "```\n", + "\n", + "Despite being defined as an asynchronous function, the sum logic is still blocking the time output.\n", + "You could replace `await asyncio.sleep(5)` with its synchronous equivalent, `time.sleep(5)`, and you'd get exactly the same result.\n", + "\n", + "### Why does async block?\n", + "\n", + "While surprising, this behavior is intentional.\n", + "Shiny goes out of its way to ensure that reactive functions are run in a serial fashion, never concurrently--even if they are asynchronous.\n", + "This means that if you have two (async) reactive effects that both call `await asyncio.sleep(1)`, the second one will not even begin to start executing until the first one has finished.\n", + "This is true even if the two reactive effects belong to two different Shiny sessions and one Python process is serving those sessions.\n", + "\n", + "This may seem like a strange decision on the part of Shiny: why support async at all if the code is not going to run concurrently?\n", + "\n", + "The reason for supporting async is simple: there are functions you may need to call from reactive contexts that are only available as async functions.\n", + "This includes some functions in Shiny itself that are used to communicate with the browser, like [`Session.send_custom_message`](api/Session.html#shiny.Session.send_custom_message).\n", + "\n", + "The reason for not allowing (reactive) async code to run concurrently is more nuanced.\n", + "The main reason is that it would be very difficult to ensure that the application behaves predictably if async code were allowed to run concurrently.\n", + "Concurrent code works best when tasks are largely independent of each other, and do not read or modify the same shared state.\n", + "But Shiny reactive code is all about shared state and interconnected tasks.\n", + "\n", + "So in summary, use async functions in your reactive code if you need to call async-only functions.\n", + "Don't expect your application to run faster, more responsively, or more efficiently.\n", + "\n", + "## True non-blocking behavior with `ExtendedTask`\n", + "\n", + "To achieve true non-blocking behavior in Shiny applications, and retain the ability to reason about how our apps will behave, we use the following strategy:\n", + "\n", + "1. Read whatever reactive inputs and calcs will be needed to perform the task.\n", + "2. Perform the task asynchronously and concurrently, outside of the reactive graph.\n", + "3. When the task completes, bring the resulting value (or error, if the operation failed) back into the reactive graph.\n", + "\n", + "We've created a high-level class called `ExtendedTask` to make all of this pretty easy.\n", + "To create an `ExtendedTask`, use the `@reactive.extended_task` decorator on an async function.\n", + "Let's adapt the example above to use an `ExtendedTask`:\n", + "\n", + "```{shinylive-python}\n", + "#| standalone: true\n", + "#| components: [editor, viewer]\n", + "import asyncio\n", + "import datetime\n", + "from shiny import App, reactive, render, ui\n", + "\n", + "app_ui = ui.page_fluid(\n", + " ui.p(\"The time is \", ui.output_text(\"current_time\", inline=True)),\n", + " ui.hr(),\n", + " ui.input_numeric(\"x\", \"x\", value=1),\n", + " ui.input_numeric(\"y\", \"y\", value=2),\n", + " ui.input_task_button(\"btn\", \"Add numbers\"),\n", + " ui.output_text(\"sum\"),\n", + ")\n", + "\n", + "def server(input, output, session):\n", + " @render.text\n", + " def current_time():\n", + " reactive.invalidate_later(1)\n", + " return datetime.datetime.now().strftime(\"%H:%M:%S %p\")\n", + "\n", + " @ui.bind_task_button(button_id=\"btn\")\n", + " @reactive.extended_task\n", + " async def sum_values(x, y):\n", + " await asyncio.sleep(5)\n", + " return x + y\n", + "\n", + " @reactive.effect\n", + " @reactive.event(input.btn)\n", + " def btn_click():\n", + " sum_values(input.x(), input.y())\n", + "\n", + " @render.text\n", + " def sum():\n", + " return str(sum_values.result())\n", + "\n", + "app = App(app_ui, server)\n", + "```\n", + "\n", + "Note the `sum_values` function, which is where the actual (slow) work is done.\n", + "It is decorated with `@reactive.extended_task`, which means that it will be run asynchronously and concurrently with other tasks, and that its result will be available as `sum_values.result()`.\n", + "\n", + "We've also added a `@ui.bind_task_button` decorator on top of the `@reactive.extended_task` decorator.\n", + "\n", + "::: {.callout-note}\n", + "This synchronizes the `ExtendedTask` object with the `ui.input_task_button` in the UI, so that the button will be in its \"Processing...\" state while the task is running.\n", + "It _does not_ cause button clicks to invoke the task; we still need to do that manually, which we'll talk about next.\n", + "\n", + "If you use some other UI gesture or condition besides `ui.input_task_button` to invoke the task, don't include the `@ui.bind_task_button` decorator--it doesn't work with `ui.input_action_button`, for example.\n", + ":::\n", + "\n", + "### Invoking the task\n", + "\n", + "Unlike a reactive effect, simply creating an extended task does not cause it to run.\n", + "It needs to be invoked (called like a function).\n", + "\n", + "In this case, the `sum_values` extended task is called from the `btn_click` reactive effect (`@reactive.effect`), which runs whenever the button is clicked (`@reactive.event(input.btn)`).\n", + "\n", + "Notice also that the `sum_values` logic no longer reads `input.x()` and `input.y()` directly in the function body.\n", + "Because it is now an extended task, attempting to do so would result in an error.\n", + "Instead, it takes `x` and `y` as arguments, which are passed in by `btn_click` based on reactive inputs.\n", + "\n", + "### Retrieving results\n", + "\n", + "The `sum` output is now a regular reactive calc, which reads `sum_values.result()` to get the result of the extended task.\n", + "This output actually does not \"wait for\" the extended task to complete, exactly; instead, it will run multiple times, as the extended task goes through different states.\n", + "For each state, `sum_values.result()` will behave differently:\n", + "\n", + "* **Not yet invoked:** Raises a silent exception, which will cause the `sum` output to display nothing.\n", + "* **Running:** Raises a special type of exception that tells Shiny to keep the output in the \"in progress\" state.\n", + "* **Successfully completed:** Returns the return value of `sum_values`, in this case an integer.\n", + "* **Completed with an exception:** If `sum_values` raised an exception while processing, then re-raises that same exception, causing it to be displayed to the user in the `sum` output.\n", + "\n", + "It's not necessary to memorize these states.\n", + "Just remember that `sum_values.result()` is a reactive, synchronous method that knows how to do right thing based on the state of the extended task.\n", + "\n", + "### Other features of extended tasks\n", + "\n", + "#### Cancel a running task\n", + "\n", + "Although it's not shown in the example above, you can also cancel an extended task by calling the `cancel()` method (for example, `sum_values.cancel()`).\n", + "This will attempt to cancel the asyncio task that is running the extended task, and will cause `sum_values.result()` to raise a silent exception.\n", + "\n", + "Calling `sum_values.cancel()` on a task that isn't running will have no effect.\n", + "\n", + "#### Multiple invocations\n", + "\n", + "An extended task can run concurrently to reactive code and to other extended tasks--that's its whole purpose.\n", + "However, a single extended task object cannot run itself multiple times concurrently. If you call `sum_values()` while it is already running, it will enqueue the new invocation and run it after the first one completes.\n", + "\n", + "This is often not the behavior you want, especially if the task takes a long time to complete.\n", + "A user may accidentally click an action button twice, or they may click it again because they think the first click didn't work.\n", + "To prevent this, use `ui.input_task_button` instead of `ui.input_action_button` to invoke the task, since the former automatically prevents subsequent clicks until the task completes.\n", + "\n", + "### Executing on a different thread/process\n", + "\n", + "Extended task objects run their tasks using [`asyncio.create_task`](https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task), which means that they will run on the same thread as the rest of the application.\n", + "This is fine for logic that is truly asynchronous, like making a network request via an asyncio-aware library like [aiohttp](https://docs.aiohttp.org/en/stable/), but it's not ideal for CPU-bound tasks or when performing I/O synchronously.\n", + "Because CPU-bound or synchronous tasks will block the main thread, we're back to where we started: the rest of the application cannot proceed until the task completes.\n", + "\n", + "Fortunately, we can rely on Python's built-in support for running asyncio tasks on different threads or processes.\n", + "\n", + "::: {.callout-note}\n", + "The examples below work well in Shiny Core, but a naive port to Shiny Express will not work as well.\n", + "The `ThreadPoolExecutor` and `ProcessPoolExecutor` objects need to be created as module-level variables, not as session-level variables, since we'd ideally like to pool resources across all sessions.\n", + ":::\n", + "\n", + "::: {.callout-note}\n", + "`ProcessPoolExecutor` is not available in Shinylive (e.g. WASM mode).\n", + "`ThreadPoolExecutor` is available in Shinylive and appears to work, but doesn't: it actually performs all of its work on the main thread.\n", + ":::\n", + "\n", + "The following example shows how to run a task on a different thread.\n", + "This is a good strategy for code that does synchronous I/O, like reading from disk, a database, or a remote API endpoint.\n", + "It's not as good of a strategy for CPU-bound code, because Python's [global interpreter lock](https://realpython.com/python-gil/) will prevent the task from running concurrently with other Python code.\n" + ], + "id": "c19ce53e" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "#| eval: false\n", + "import asyncio\n", + "import concurrent.futures\n", + "import time\n", + "\n", + "from shiny import App, reactive, render, ui\n", + "\n", + "app_ui = ui.page_fluid(\n", + " ui.input_numeric(\"x\", \"x\", value=1),\n", + " ui.input_numeric(\"y\", \"y\", value=2),\n", + " ui.input_task_button(\"btn\", \"Add numbers\"),\n", + " ui.output_text(\"sum\"),\n", + ")\n", + "\n", + "# Execute the extended task logic on a different thread. To use a different\n", + "# process instead, use concurrent.futures.ProcessPoolExecutor.\n", + "pool = concurrent.futures.ThreadPoolExecutor()\n", + "\n", + "def slow_sum(x, y):\n", + " time.sleep(5) # Simulate a slow synchronous task\n", + " return x + y\n", + "\n", + "def server(input, output, session):\n", + " @ui.bind_task_button(button_id=\"btn\")\n", + " @reactive.extended_task\n", + " async def sum_values(x, y):\n", + " loop = asyncio.get_event_loop()\n", + " return await loop.run_in_executor(pool, slow_sum, x, y)\n", + "\n", + " @reactive.effect\n", + " @reactive.event(input.btn)\n", + " def btn_click():\n", + " sum_values(input.x(), input.y())\n", + "\n", + " @render.text\n", + " def sum():\n", + " return str(sum_values.result())\n", + "\n", + "app = App(app_ui, server)\n", + "app.on_shutdown(pool.shutdown)" + ], + "id": "19537d3a", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With a small tweak, we can run the task on a different process instead of a different thread: just replace `concurrent.futures.ThreadPoolExecutor` with `concurrent.futures.ProcessPoolExecutor`.\n", + "This is a good strategy for CPU-bound code, because it allows the task to run concurrently with other Python code.\n", + "\n", + "In this example, the `slow_sum` function is defined at the module level, outside of the Shiny server function.\n", + "This is critically important for `ProcessPoolExecutor` to work correctly because of how Python's `multiprocessing` module works: only module-level functions can survive the trip to a worker Python subprocess.\n", + "(It's less critical for `ThreadPoolExecutor`, but still a good programming practice to define such logic at the module level when possible.)\n", + "\n", + "There's also the `app.on_shutdown(pool.shutdown)` line at the end of each example.\n", + "This is necessary to ensure that the pool is shut down when the app stops running.\n", + "In particular, if you're using `ProcessPoolExecutor` and neglect to shut down the pool, you can end up with orphaned Python processes hanging around.\n", + "\n", + "## Summary\n", + "\n", + "Only use async functions in your reactive code if you need to call async-only functions.\n", + "Don't expect your application to run faster, more responsively, or more efficiently.\n", + "\n", + "To achieve true non-blocking behavior in Shiny applications, factor your slow/async code into an `ExtendedTask` callable object, call it from a reactive effect, and read its `result()` from a render function or reactive calc." + ], + "id": "6ccf8b02" + } + ], + "metadata": { + "kernelspec": { + "name": "pfe_book", + "language": "python", + "display_name": "pfe_book", + "path": "/Users/danielchen/Library/Jupyter/kernels/pfe_book" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/get-started/overview.qmd b/docs/overview.qmd similarity index 100% rename from get-started/overview.qmd rename to docs/overview.qmd diff --git a/get-started/user-interfaces.qmd b/docs/user-interfaces.qmd similarity index 99% rename from get-started/user-interfaces.qmd rename to docs/user-interfaces.qmd index d1e4d524..57ea353f 100644 --- a/get-started/user-interfaces.qmd +++ b/docs/user-interfaces.qmd @@ -1,5 +1,5 @@ --- -title: User interfaces +title: User Interfaces editor: markdown: wrap: sentence diff --git a/get-started/assets/positron-run.png b/get-started/assets/positron-run.png new file mode 100644 index 0000000000000000000000000000000000000000..51adbdbc4d8358a469580c3de41b77b91551b967 GIT binary patch literal 231791 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ΔSd07t^#Sel228$A&r zpS_=Br3HSFL(!Px{K2VT(@lc`CH((5d+VsE8ijp(hM|=1?oyGKhM^@C21G$5C8WE% zq`OtRB&55frMsJH`@VJQhQ!_H=sBmB zb%o@d8qLP+gjOAmuQL=7bRz$kB82-N2oe4J=#c~eZMd6^TT{-8CxbAmA+|rLBa%kI zJp)fnCgy8Vw;n!;C>lRw{s&HRM6;oQ&>>3wp%|#S{y0n%gvtP1hgo;;jh(-re&Nm4 zX1L#+atO*9FX0s@4I|}#Vq1pBDe!<%Uh6bC=Edk;`q3HpU0jE2vlg#LeaQ0O`9NqJ z0EM_tsUI_EIp!AhG5w2qmv$^%!eT61dUnQgOZ1#t1B~L$3Di z?Zr_VKQO)mp_WzLye49#Q7@AwQ@ecoi&mHXoD>ZjV?g(M9$g5Pzat%n7!d{=9&Q+# zUEjD*8UM-?i@Tio`oYxIsRgmVakMggFv{C^7NgAisB^YwP}M;HF6Ri_RZxKD!*VNA zfr|n+*_eaqS4+z`e7o7YKZ1X~#{RkA$2BGCySvteW3>V#w!sI`(w6UE~ zunvve8~6)<0cn-gzT7!D=uL|c?2{(x zx7!*4chFm|TS0qvy8bSIjA=cC6MI@ztFT80NOrDWc!RI0?k&47(|=iZvBiJ4 z?Cg=3=(RcmRb?*|d2LRO>i0Li6}AS8=M0<77DjEb22Lve7Vw0lY=d=;e=GoM`H#im z>7_QhU$_3xCEG7HObBFzihwQORE|i$5*mKFuwtkjD*tp2rmZMn55qfkbVFwn~H1bNMOCj4Fgi2uABcG!?RgsEdM`3 zyrdDz>zcpEh{Jk_{wWsRZ^3jX( zGk~$YTOUZCXMp==%J%*6$nC9zmf*y_$LlM z@+n(jB<^d*#{;f#Z1Z!{(HVT7^-R zYq61y{xea-kwMG*Y;nPT?05oDRmFdvV1l#oPl{w8?LC zg<9d~H$_&T#tSt%O(yqz&xv?NzQu6X46J_$S5VFeq3Uoy zPW=mq`XiiPcJe{oJ|q=)2TUo3_;+OXABMkU%KD4uozcb}kvrk@-;WC)y4;7B-y&l79OY_#uXF7X>Ri13 z$@}XDPI2=1Hf01wv11S0=w7DMX$GmDi8w8S7lgU zmD8?ZxN4J!J9C&GjH{zOx8$Rgx2Z{jH%wNvl_{c#g1~YJk54F22-lBv1LE@H#?IRU*q3$QFT@MkItBJq4xl0dJ%B^K z%Ivf86~RvwAV9FcbHLzD-0ntmfd&UFer#R`Ztxu4r#(Oq?RICl^#qGLg}SWx0j#s4 z>ClG3I|X=g8XwTXqS}ADX-;t9XAiWd)w?Ja$45Jo9M4car+Xdpo0pahsH$LV%c1d z^~aURwfx=J4IdPo$q>|z;TA#$qK{8)VmH1;MDw`Fu1N2M3e`nV3T@_Kc2~_Pl%|